WCF(一) 简单的认知

为什么要学习WCF,WCF有哪些优势

WCF合并了Web服务、.net Remoting、消息队列和Enterprise Services的功能并集成在Visual Studio中。

WCF专门用于面向服务开发。

WCF能够建立一个跨平台的安全、可信赖、事务性的解决方案,是一个WebService,.Net Remoting,Enterprise Service,WSE,MSMQ的并集,有一副很经典的对比图如下:

WCF与其他分布式技术对比表

WCF程序结构

  1. 契约(Contracts):    主要定义了实现那些服务,如何访问服务
  2. 服务(Services):        实现契约定义的方法
  3. 宿主程序(Hosting):    提供低层传输功能的支持
  4. 客户端(Client):        根据契约访问服务

契约

namespace WcfStudy
{
    // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IMyFirstSerice”。
    [ServiceContract]
    public interface IMyFirstSerice
    {
        [OperationContract]
        string SayHello(string name);
    }
}

这里定义的wcf契约类似定义一个服务接口,ServiceContract表示这是一个WCF契约服务接口,OperationContract表示这是一个WCF接口服务方法

 

服务

 

namespace WcfStudy
{
    // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、svc 和配置文件中的类名“MyFirstSerice”。
    // 注意: 为了启动 WCF 测试客户端以测试此服务,请在解决方案资源管理器中选择 MyFirstSerice.svc 或 MyFirstSerice.svc.cs,然后开始调试。
    public class MyFirstSerice : IMyFirstSerice
    {
        public string  SayHello(string name)
        {
             return  "Hello "+name;
        }
    }
}

这里定义了一一个服务来实现契约中要求的方法

宿主程序

WCF在运行时必寄宿在“宿主程序”之上,WCF本身不能够独自运行(每个WCF服务必须宿主在一个Windows进程中)。

WCF服务应用程序与WCF服务库的不同

WCF服务应用程序,是一个可以执行的程序,它有独立的进程,WCF服务类契约的定义,可以直接看到运行的效果。此项目模板基于IIS托管的程序

WCF服务库,可以认为是一个包含WCF服务以及契约定义的类库。不能直接运行,你可以在其他项目里引用,在宿主里启用托管这个库,有点类似于我们在Web项目中应用的类库。我们需要为此服务库添加一个宿主

WCF的宿主可以是 Windows 服务、COM+应用程序、WAS(Windows Activation Services,Windows进程激活服务)或IIS、Windows应用程序,或简单的控制台应用程序及任何.net程序。

 

如何为wcf添加一个宿主?

1.使用控制台应用程序作为wcf宿主

//创建宿主的基地址
            Uri baseAddress = new Uri("http://localhost:8080/User");
            //创建宿主
            using (ServiceHost host = new ServiceHost(typeof(User), baseAddress))
            {
                //向宿主中添加终结点
                host.AddServiceEndpoint(typeof(IUser), new WSHttpBinding(), "");
                //将HttpGetEnabled属性设置为true
                ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
                smb.HttpGetEnabled = true;
                //将行为添加到Behaviors中
                host.Description.Behaviors.Add(smb);
                //打开宿主
                host.Open();
                Console.WriteLine("WCF中的HTTP监听已启动....");
                Console.ReadLine();
                host.Close();
            }

为客户端添加wcf服务引用

public ActionResult GetWcfResult()
        {
            return View();
        }

        [HttpPost]
        public ActionResult GetWcfResult(string name)
        {
            //UserClient userClient = new UserClient();
            MyFirstSericeClient myFirstSericeClient = new MyFirstSericeClient();
            string temp = myFirstSericeClient.SayHello(name);
            ViewBag.username = temp;
            return View();
        }

在mvc客户端中调用wcf服务

MyFirstSericeClient是在客户端添加服务引用后生成的,其命名规则是为服务名+Client

基本类似的添加宿主服务和上边差不多,总之wcf一定是要寄宿在宿主程序中去的

客户端

这里使用一个简单的mvc例子作为客户端,客户端只需要添加服务引用后即可对wcf服务使用

 

 

WCF非常好的上屏蔽了低层细节(服务器和客户端之间的通信、数据传输等),开发者只需要关注业务逻辑即可,并且非常灵活

时间: 2024-10-22 03:44:02

WCF(一) 简单的认知的相关文章

使用TT模板+mvc+wcf实现简单查询

伴随着春姑娘调皮的脚步,小编接手的档案管理项目也渐渐步入正轨,从开始的需求分析,到使用Axure画原型图,再到使用powerdesigner设计实体,生成数据库,一直到昨天刚刚通了一条线,这一路走来,小编懂得了很多,无路学习还是和团队小伙伴的交流合作,有时候,总是会因为大家意见不统一,搞的大家吹胡子瞪眼,但有时也会因为某件事情圆满成功而欢欣鼓舞,小组中最开心的事儿莫过于有人开会迟到买吃的了,哈哈,暴露了小编的本质,开头说了这么多,接下来,小编就跟分享一下,如果利用TT模板+mvc+wcf实现简单

WCF入门简单教程(图文) VS2010版

在这个例子中我们将使用VS 2010 创建一个WCF服务,其中会了解 [DataContract] [ServiceContract] 等特性.  内置的 WCFSVCHost ,并使用"WCF测试客户端"来测试我们创建的服务. 注意下面的所有类.接口及方法都添加了public 的访问级别. 一,建立一个WCF服务库 创建一个WCF服务库项目 在解决方案中会自动为我们生成两个类文件"IService1.cs"和"Service1.cs". 这两个

WCF通信简单学习实例

最近在学习WCF通信,自己简单做个实例分享一下,环境是VS2015,使用的项目都是WPF的项目,其实大家用Winform或者Web项目也可以,都可以用的. 一.服务器端 1.创建WCF服务 服务名为WCFServer,而后自动生成如下两个文件,IMyWCFServer为服务契约接口,MyWCFServer为服务契约接口的具体实现.服务契约其实就是声明了客户端可以访问的函数接口. 2.声明服务契约 IMyWCFService代码: 1 namespace WCFServer 2 { 3 // 注意

WCF创建简单程序

1. 新建立空白解决方案,并在解决方案中新建项目,项目类型为:WCF服务应用程序.建立完成后如下图所示: 2.删除系统生成的两个文件IService1.cs与Service1.svc,当然你也可以直接在这两个自动生成的文件中编码. 3.添加自定义的WCF[服务文件]User.svc,此时vs2010会自动生成WCF接口文件IUser.cs,我们在IUser中定义WCF方法ShowName,在User.svc.cs对该接口的方法进行实现.代码如下: using System.ServiceMode

WCF教程 简单入门

版权  本文摘自  http://www.cnblogs.com/iamlilinfeng   本人只做了搬运工 转载请注明出处:http://www.cnblogs.com/iamlilinfeng    感谢版主  李林峰的分享 一.概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分.由 .NET Framework 3.0 开始引入. WCF的最终目标是通过

WCF最简单的一次通信(有部分參考,多爲原創)

不廢話,直接上乾貨 1.先创建一个wcf服务库,是服务类库,远程的lib 2.全部按照默认设置,不修改.然后点发布,会出现一个wcf测试客户端,可以看有没有发布成功. 3.msdn的wcf教程还要求输出控制台命令,生成一些文件.如果简单使用其实不需要.现在创建一个控制台程序,作为客户端. 4.添加服务引用(类似webservice): 5.然后找到刚刚的wcf测试客户端,把服务器地址放上去.然后调用服务类库上的类,测试 切記:保持剛剛的 是開啓狀態:否則連接不到. 結果如下:   至此,最简单的

WCF技术简单入门

最近工作中使用到了WCF技术,经过一段时间的使用,慢慢的体会到了WCF的好处,那么WCF到底是什么?为什么要使用WCF?WCF有什么特点?接下来就这几个问题简单总结一下. WCF到底是什么?要说清楚这个问题,我们需要首先介绍一下分布式.假设我们已经写好了一个web服务端,并且已经发布了,现在客户端需要调用这个服务端,并且客户端不止一个,实际数据交换模型如下图所示: 可以看到,在只有一个服务端的情况下,服务端的流量和数据交换压力 是非常 大的,服务端面临大流量.高并发等多种年问题:每一次数据交换,

WCF--建立简单的WCF服务

在VS2010里建立一个最简单的WCF服务,基本流程如下: 一:新建WCF应用 首先,新建一个WCF服务的应用,如下图所示 建立完成之后,VS将自动生成一个最简单的WCF工程,在这个应用中,包含了最基本Contract.Service. 工程如下: 不需要编辑任何文件,直接编译生成,得到一个WcfService1.dll文件 二.WCF应用中的契约(Contract) 在生成的WCF工程中,IService1.cs中为Contract(本例中契约和服务放在同一个工程下了,实际上也可以分为两个工程

Wcf体现Restful风格

Wcf体现Restful风格 概述 含状态传输(Representational State Transfer)的软件架构风格.主要特点 1.  资源是由URI来指定: 例如http://example.com/resources/ 2.  对资源的操作 包括获取.创建.修改和删除资源,这些操作正好对应HTTP协议提供的GET.POST.PUT和DELETE方法 3.  传输的资源:Web服务接受与返回的互联网媒体类型,比如:JSON,XML ,YAML 等. 下面通过一个简单的例子逐个问题解决