精华内容
参与话题
问答
  • WCF

    2019-10-27 09:35:20
    一、什么是WCF Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分。由.NET Framework 3.0开始引入。 WCF的最终目标是通过进程...

    一、什么是WCF

    Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分。由.NET Framework 3.0开始引入。
    WCF的最终目标是通过进程或不同的系统、通过本地网络或是通过Internet收发客户和服务之间的消息。
    WCF合并了Web服务、.net Remoting、消息队列和Enterprise Services的功能并集成在Visual Studio中。
    WCF专门用于面向服务开发。在这里插入图片描述
    客户机使用浏览器访问服务器A,服务器A为了业务需要与其他各种应用部署在服务器B、C、D…再通过WCF技术互相通信,相互访问…然而面向服务的好处不仅仅在此,他还提供了不同语言不同操作系统的可交互性。

    二、创建WCF的基本流程

    环境是建立在VS2017的基础上,不同版本VS操作上可能会有点不同
    1、新建项目
    在这里插入图片描述
    2、创建之后,生成这样的目录
    在这里插入图片描述
    3、删除系统生成的两个文件IService1.cs与Service1.svc
    4、添加自定义的WCF【服务文件】
    添加自定义的WCF【服务文件】CalcServicce.svc,此时vs2017会自动生成WCF接口文件ICalcServicce.cs,我们在ICalcServicce中定义WCF方法PlusNumber,在CalcServicce.svc.cs对该接口的方法进行实现。
    在这里插入图片描述
    在这里插入图片描述
    自定义的服务文件中自带了一个接口DoWork函数,如果不需要可以删除
    5、创建服务内容
    先创建接口

    [ServiceContract]
    public interface ICalcService
    {
    	[OperationContract]
    	double PlusNumber(double num1,double num2);
    }

    大家可以看到,在WCF中的接口与普通接口的区别只在于两个上下文,其他的和我们正常学习的接口一样。定义这个上下文要添加System.ServiceModel的引用。
    [ServiceContract],来说明接口是一个WCF的接口,如果不加的话,将不能被外部调用。
    [OperationContract],来说明该方法是一个WCF接口的方法,不加的话同上。
    6、调试
    此时我们的第一个WCF服务程序就建立好了,将CalcServicce.svc“设为起始页”,然后F5运行一下试试,如下图所示,VS自动调用了WCF的客户端测试工具以便我们测试程序,然后双击PlusNumber()方法名,就会出现下图:
    在这里插入图片描述
    在请求窗口中的值中输入参数“num1”与“num2”,然后点击“调用”,在响应窗口中会出现返回值“WCF服务计算结果:num1+num2的值”,说明测试成功,点击下面的XML也可以看到XML的数据传输。我们现在建立好了服务的应用程序和业务逻辑。
    7、将WCF部署到IIS
    到IIS右击网站,然后添加网站,将下图的参数填上。
    在这里插入图片描述
    然后就可以浏览此服务
    在这里插入图片描述
    点击CalcService.svc,跳转到以下调用页面
    在这里插入图片描述
    点击 http://192.168.1.99:8022/CalcService.svc?wsdl,从这里可以看到我写的方法,这个地址也是我们后用将要引用的地址:
    在这里插入图片描述
    现在我们的WCF服务就算是已经部署完成了

    三、调用WCF

    1、创建一个Winform程序
    在这里插入图片描述
    2、选择添加服务引用
    在这里插入图片描述
    3、将服务地址输入选择转到
    在这里插入图片描述
    4、寻找到创建的服务CalcService选择确定
    在这里插入图片描述
    5,然后在项目中通过CalcService命名空间可以找到一个CalcServiceClient客户端实例化

    public MainWindow()
    {
          InitializeComponent();
    }
    CalcService.CalcServiceClient client = new CalcService.CalcServiceClient();
    private void Button_Click(object sender, RoutedEventArgs e)
    {
                
           double num1 = double.Parse(textBox.Text);
           double num2 = double.Parse(textBox_Copy.Text);
           label.Content = client.PlusNumber(num1, num2).ToString();
    }
    展开全文
  • wcf

    2016-05-16 22:40:31
     Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分。由 .NET Framework 3.0 开始引入。  WCF的最终目标是通过进程或不同...
    技术交流,同学习共进步,欢迎加群: 程序员俱乐部-WCF(4群) 群号:274746316

    一、概述

      Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分。由 .NET Framework 3.0 开始引入。

      WCF的最终目标是通过进程或不同的系统、通过本地网络或是通过Internet收发客户和服务之间的消息。

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

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

    二、基于Asp.net 的应用程序开发与面向服务开发

    wcf

      在基于Asp.net 的应用程序开发中,我们由客户机的浏览器访问应用程序服务器,然后通过应用程序服务器中的数据库连接去连接数据库服务器,读取或是操作数据,有时候可能会多一个文件服务器。大家可以观察到,基本上所有的应用都放在了一台服务器上,但对于一个,由于业务上的需要(如:与外部系统交互),一台服务器很难支持所有的应用。我们再看下面的图:

    wcf

      客户机使用浏览器访问服务器A,服务器A为了业务需要与其他各种应用部署在服务器B、C、D....再通过WCF技术互相通信,相互访问...然而面向服务的好处不仅仅在此,他还提供了不同语言不同操作系统的可交互性..由于本文不是介绍SOA的文章,感兴趣的同学可以参见:SOA

    三、第一个WCF程序

      1. 新建立空白解决方案,并在解决方案中新建项目,项目类型为:WCF服务应用程序。建立完成后如下图所示:

    wcf

      2.删除系统生成的两个文件IService1.cs与Service1.svc。

      3.添加自定义的WCF【服务文件】User.svc,此时vs2010会自动生成WCF接口文件IUser.cs,我们在IUser中定义WCF方法ShowName,在User.svc.cs对该接口的方法进行实现。

    代码如下:

    复制代码
     1 using System.ServiceModel;
     2 
     3 namespace WCFService
     4 {
     5     [ServiceContract]
     6     public interface IUser
     7     {
     8         [OperationContract]
     9         string ShowName(string name);
    10     }
    11 }
    12 
    13 
    14 namespace WCFService
    15 {
    16     public class User : IUser
    17     {
    18         public string ShowName(string name)
    19         {
    20             string wcfName = string.Format("WCF服务,显示姓名:{0}", name);
    21             return wcfName;
    22         }
    23     }
    24 }
    复制代码

      大家可以看到,在WCF中的接口与普通接口的区别只在于两个上下文,其他的和我们正常学习的接口一样。定义这个上下文要添加System.ServiceModel的引用。

    [ServiceContract],来说明接口是一个WCF的接口,如果不加的话,将不能被外部调用。

    [OperationContract],来说明该方法是一个WCF接口的方法,不加的话同上。 

    此时我们的第一个WCF服务程序就建立好了,将User.svc“设为起始页”,然后F5运行一下试试,如下图所示,VS2010自动调用了WCF的客户端测试工具以便我们测试程序:

      我们双击上图中的 ShowName() 方法,出现如下图:

      在请求窗口中的值中输入参数“你的姓名”,然后点击“调用”,在响应窗口中会出现返回值“WCF服务,显示姓名:你的姓名”,说明测试成功,点击下面的XML也可以看到XML的数据传输。我们现在建立好了服务的应用程序和业务逻辑,即非常简单的打印姓名的方法,测试也成功了。那么我们怎么用呢?

    四、场景

      我们设计的场景是在生产中经常应用的场景,把WCF程序寄宿在IIS之上。假设场景如下:A服务器和B服务器。我们把我们刚刚建立的WCF程序“部署”在B服务器上(本教程的A,B服务器都放是我自己的一台机器),我们的目标是在A服务器的应用程序来访问B服务器的WCF程序,实现服务器端的应用程序通讯。

    五、将WCF程序寄宿在B服务器的IIS之上

      首先我们将WCF应用程序发布一下,然后部署在B服务器的IIS之上,如下图所示:

     

      鼠标右键浏览Uesr.svc,在游览器中出现如下图所示,说明服务部署成功。

       上图中的http://localhost/User.svc?wsdl即为我们要引用的服务地址。

    六、在客户端[A服务器]创建服务的引用

      我们这里以Web应用程序为例,建立地物理地址为本机,但是大家可以想像成B服务器是远程计算机,localhost为一个其他的IP地址。

      新建解决方案,并且创建ASP.NET Web应用程序的项目。命名为:WCFClient,如下图所示:

     

      (1)新建Asp.net页面,命名为:WcfTest.aspx。

      (2)添加在第五步中部署的服务的引用。如下图所示:

    wcf

      此时弹出添加服务引用的窗体,如下图所示:

      我们在地址里写上我们寄宿在IIS上的WCF服务的地址服务路径,此处为:http://localhost/User.svc?wsdl,在名称空间处填写WCFService[此名称空间要在下面的客户端中引用]然后点击“前往”-->“确定”按钮。此时我们完成了对服务的引用。我们再次查看解决方案,里面多了Service References的文件夹,通过资源管理器打开后里面多了些文件,这些文件用于客户端向服务端的调用,现在先不用管他。

     七、使用WCF服务端的方法

      WcfTest.aspx的代码如下:

    复制代码
     1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WCFTest.aspx.cs" Inherits="WCFClient.WCFTest" %>
     2 
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     4 <html xmlns="http://www.w3.org/1999/xhtml">
     5 <head runat="server">
     6     <title></title>
     7 </head>
     8 <body>
     9     <form id="form1" runat="server">
    10     <asp:TextBox ID="txtName" runat="server"></asp:TextBox><br />
    11     <asp:Button ID="btnSubmit" runat="server" Text="测试WCF服务" OnClick="btnClick" />
    12     </form>
    13 </body>
    14 </html>
    15 
    16 using System;
    17 using System.Collections.Generic;
    18 using System.Linq;
    19 using System.Web;
    20 using System.Web.UI;
    21 using System.Web.UI.WebControls;
    22 
    23 //引用WCF服务的名称空间
    24 using WCFClient.WCFService;
    25 
    26 namespace WCFClient
    27 {
    28     public partial class WCFTest : System.Web.UI.Page
    29     {
    30         protected void Page_Load(object sender, EventArgs e)
    31         {
    32 
    33         }
    34 
    35         protected void btnClick(object sender, EventArgs e)
    36         {
    37             UserClient user = new UserClient();
    38             string result = user.ShowName(this.txtName.Text);
    39             Response.Write(result);
    40         }
    41     }
    42 }
    复制代码

      上面中的UserClient类是在添加引用的时候生成的服务端User类的客户端代理类,一般客户端代理类名称都会是**Client。我们运行一下看下效果。

      通过以上的例子,我们完成了由A服务器的应用向B服务器中WCF提供的方法的调用。这个例子比较简单,对于经常开发B/S结构应用程序的同学们来说比较好理解。

    八、说明:因为网上的入门教程比较少,本教程只做入门,后面会继续讲些其他入门的东西,深入的请看园子里:Artech 大哥的文章。

    九、代码下载:

      10 WCF 教程

    十、版权

      转载请注明出处:http://www.cnblogs.com/iamlilinfeng

    展开全文
  • Wcf

    2013-09-30 16:52:28
    原始地址:...Wcf     Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程

    原始地址:http://baike.baidu.com/link?url=sZ9CkTKUW2qNQuSzTvxP6ljBoRbqPvob4Abvt1Fra7nOYhlAQt8Qc6Im6N59cWCsKZBNaT3tbxef4aDPYCNI4K

    Wcf

     

     

    Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口。

     

     

     

     

    1概述

    它是.NET框架的一部分,由 .NET Framework3.0 开始引入,与Windows Presentation Foundation及Windows Workflow Foundation并行为新一代 Windows操作系统以及 WinFX 的三个重大应用程序开发类库。在 .NET Framework2.0 以及前版本中,微软发展了 Web Service (SOAP with HTTP communication),.NET Remoting (TCP/HTTP/Pipeline communication) 以及基础的 Winsock 等通信支持。由于各个通信方法的设计方法不同,而且彼此之间也有相互的重叠性(例如 .NET Remoting 可以开发 SOAP, HTTP 通信),对于开发人员来说,不同的选择会有不同的程序设计模型,而且必须要重新学习,让开发人员在使用中有许多不便。同时,面向服务架构(Service-Oriented Architecture) 也开始盛行于软件工业中,因此微软重新查看了这些通信方法,并设计了一个统一的程序开发模型,对于数据通信提供了最基本最有弹性的支持,这就是 Windows Communication Foundation。

    2概念

    WCF 由于集合了几乎由.NET Framework 所提供的通信方法,因此学习曲线比较陡峭,开发人员必须要针对各个部份的内涵做深入的了解,才能够操控 WCF 来开发应用程序。
    通信双方的沟通方式,由合约来订定。通信双方所遵循的通信方法,由协议绑定来订定。通信期间的安全性,由双方约定的安全性层次来订定。

    契约(Contract)

    WCF 的基本概念是以契约(Contract) 来定义双方沟通的协议,合约必须要以接口的方式来体现,而实际的服务代码必须要由这些合约接口派生并实现。合约分成了四种:
    数据契约(Data Contract),订定双方沟通时的数据格式。服务契约(Service Contract),订定服务的定义。操作约(Operation Contract),订定服务提供的方法。消息约(Message Contract),订定在通信期间改写消息内容的规范。一个 WCF 中的约,就如同下列代码所示:
    using System;
    using System.ServiceModel;
    namespace Microsoft.ServiceModel.Samples{
    [ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")] // 服务契约
    public interface ICalculator
    {
    [OperationContract] // 操作契约
    double Add(double n1, double n2);
    [OperationContract] //操作
    double Subtract(double n1, double n2);
    [OperationContract] // 操作
    double Multiply(double n1, double n2);
    [OperationContract] //操作
    double Divide(double n1, double n2);
    }
    }

    协议绑定 (Binding)

    由于 WCF 支持了HTTPTCP,Named Pipe,MSMQ,Peer-To-Peer TCP 等协议,而 HTTP 又分为基本 HTTP 支持 (BasicHttpBinding) 以及 WS-HTTP 支持 (WsHttpBinding),而 TCP 亦支持 NetTcpBinding,NetPeerTcpBinding 等通信方式,因此,双方必须要统一通信的协议,并且也要在编码以及格式上要有所一致。
    一个设置通信协议绑定的示例如下:
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <system.serviceModel>
    <!-- 设定服务系结的资讯 -->
    <services>
    <service name=" CalculatorService" >
    <endpoint address="" binding="wsHttpBinding" bindingConfiguration="Binding1" contract="ICalculator" />
    </service>
    </services>
    <!-- 设定通讯协定系结的资讯 -->
    <bindings>
    <wsHttpBinding>
    <binding name="Binding1">
    </binding>
    </wsHttpBinding>
    </bindings>
    </system.serviceModel>
    </configuration>
    虽然 WCF 也可以使用SOAP做通信格式,但它和以往的ASP. NETXML Web Services不同,因此有部分技术文章中,会将 ASP. NET  的 XML Web Services 称为ASMX Service
    WCF 的服务可以挂载于 Console Application,Windows Application,IIS (ASP. NET) Application,Windows Service以及Windows Activation Services中,但大多都会挂在 Windows Service。

    安全性层次

    WCF 实现上已经支持了传输层次安全性 (Transport-level security) 以及消息层次安全性 (Message-level security) 两种。
    传输层次安全性:在数据传输时期加密,例如 SSL。消息层次安全性:在数据处理时就加密,例如使用数字签名,散列或是使用密钥加密法等。

    3客户端

    对于 WCF 的客户端来说,WCF 服务就像是一个 Web Service 一样,在 Visual Studio 2008 中,所有 WCF 服务的连接都是由客户端的 服务代理(WCF Service Proxy) 来运行,开发人员不用花费太多心思在通信上,而 WCF Service Proxy 在 Visual Studio 中被称为服务引用(Service Reference)。
    在 Visual Studio 中加入 WCF 的服务引用时,Visual Studio 会自动帮开发人员做掉一些必要工作(例如组态创建以及产生 Service Proxy 等),开发人员只需要在代码中取用 WCF Service Proxy 对象即可。

    4下载地址

    目前最新的WCF版本是February 2006 CTP,下载页面是:http://www.microsoft. com/downloads/details.aspx?FamilyId=F51C4D96-9AEA-474F-86D3-172BFA3B828B&displaylang=en。使用WCF需要用到一些相关的工具,如SvcUtil.exe,所以还需要下载WinFX Runtime Components的SDK,其下载页面是:http://www.microsoft. com/downloads/details.aspx?FamilyId=9BE1FC7F-0542-47F1-88DD-61E3EF88C402&displaylang=en。安装SDK可以选择网络安装或本地安装。如果是本地安装,文件大小为1.1G左右,是ISO文件。安装了SDK后,在program files目录下,有microsoft SDK目录。
    WCF是微软重点介绍的产品,因此也推出了专门的官方网站(http://windowscommunication. net),该网站有最新的WCF新闻发布,以及介绍WCF的技术文档和样例代码。

    5WCF的优势

    在David Chappell所撰的《Introducing Windows Communication Foundation》一文中,用了一个活鲜鲜的例子,来说明WCF的优势所在。假定我们要为一家汽车租赁公司开发一个新的应用程序,用于租车预约服务。该租车预约服务会被多种应用程序访问,包括呼叫中心(Call Center),基于J2EE的租车预约服务以及合作伙伴的应用程序(Partner Application)
    从功能的角度来看,WCF完全可以看作是ASMX,.Net Remoting,Enterprise Service,WSE,MSMQ等技术的并集。(注:这种说法仅仅是从功能的角度。事实上WCF远非简单的并集这样简单,它是真正面向服务的产品,它已经改变了通常的开发模式。)因此,对于上述汽车预约服务系统的例子,利用WCF,就可以解决包括安全、可信赖、互操作、跨平台通信等等需求。开发者再不用去分别了解.Net Remoting,ASMX等各种技术了。
    概括地说,WCF具有如下的优势:
    1、统一性
    前面已经叙述,WCF是对于ASMX,.Net Remoting,Enterprise Service,WSEMSMQ等技术的整合。由于WCF完全是由托管代码编写,因此开发WCF的应用程序与开发其它的.Net应用程序没有太大的区别,我们仍然可以像创建面向对象的应用程序那样,利用WCF来创建面向服务的应用程序。

    由于WCF最基本的通信机制是SOAP(Simple Object Access Protocol 简易对象访问协议),这就保证了系统之间的互操作性,即使是运行不同的上下文中。这种通信可以是基于.Net到.Net间的通信,如下图所示:
    可以跨进程、跨机器甚至于跨平台的通信,只要支持标准的Web Service,例如J2EE应用服务器(如WebSphere,WebLogic)。应用程序可以运行在Windows操作系统下,也可以运行在其他的操作系统,如Sun Solaris,HP Unix,Linux等等。如下图所示:
    3、安全与可信赖
    WS-Security,WS-TrustWS-SecureConversation均被添加到SOAP消息中,以用于用户认证数据完整性验证,数据隐私等多种安全因素。
    在SOAP 的header中增加了WS-ReliableMessaging允许可信赖的端对端通信。而建立在WS-Coordination和WS- AtomicTransaction之上的基于SOAP格式交换的信息,则支持两阶段的事务提交(two-phase commit transactions)。

    上述的多种WS-Policy在WCF中都给与了支持。对于Messaging而言,SOAP是Web Service的基本协议,它包含了消息头(header)和消息体(body)。在消息头中,定义了WS-Addressing用于定位SOAP消息的地址信息,同时还包含了MTOM(消息传输优化机制,Message Transmission Optimization Mechanism)。
    WCF充分的考虑到了与旧有系统的兼容性。安装WCF并不会影响原有的技术如ASMX和.Net Remoting。即使对于WCF和ASMX而言,虽然两者都使用了SOAP,但基于WCF开发的应用程序,仍然可以直接与ASMX进行交互。

     

    展开全文
  • WCF

    2010-08-26 19:04:00
    从过去到未来。 函数 → 对象→ 组件 → 服务 ...WCF 的特点: 统一了以前微软平台上的各项技术,允许客户端和服务端内部都使用CLR 数据类型,而WCF 则在中间完成所有转换工作。另外,WCF 也允许非WC
    从过去到未来。     函数 → 对象→ 组件 → 服务 
    
    结构化编程(SP )→ 面向对象编程(OOP )→ 组件化开发(CBD )→ 基于服务的开发(SOA ) 
    
    面向对象编程/ 组件化开发用于创建应用程序,面向服务的编程则用于连接这些应用程序。 
    
    WCF 的作用: WCF 使应用程序功能成为一个通过网络可以访问的服务。 
    
    WCF 的特点: 统一了以前微软平台上的各项技术,允许客户端和服务端内部都使用CLR 数据类型,而WCF 则在中间完成所有转换工作。另外,WCF 也允许非WCF 客户端来访问WCF 服务端。 
    
    WCF 一统江湖: ASMX 、Enterprise Services 、WSE 、.NET Remoting 、Message-Oriented Programming 
    
    从WCF 引例中掌握WCF 基本概念 
    
    引例介绍: 
    
    WCF 服务端和客户端应用程序都是控制台应用程序。WCF 服务端应用程序( HelloWCFServiceServer ) 
    
    在本机8000 端口发布一个简单的WCF 服务,向外界返回一个“Hello.WCF !”字串。客户端通过HTTP 协议访问此WCF 服务,显示出从服务端取回的字串。 
    
    一、服务端实现: 
    
    1、 需要给客户端和服务端应用程序同时添加对System.ServiceModel 程序集的引用。 
    
    2、 服务端声明契约接口, 契约(Contract )规定了WCF 服务端与客户端相互交换信息的格式。 
    
    [ServiceContract] 
    
    Public interface IHelloWCFService{ [OperationContract] string GetServiceMessage();} 
    
    3、 服务对象负责具体实现服务,简单地说:当客户端访问服务时,一个服务对象被创建,相应的方法(由契约所规定的)被调用,方法执行的结果被传回给客户端。 
    
    public class ServiceProvider:IHelloWCFService 
    
    {public string GetServiceMessage(){ return "Hello,WCF!";}} 
    
    4、 服务对象由服务宿主负责创建。服务宿主是一个ServiceHost 对象,每个ServiceHost 对象都对应着一个服务(本例通过其构造函数实现这种对应关系),在合适的时候(通常是客户端发出调用服务的请求时)ServiceHost 对象会创建服务对象(本例为ServiceProvider 对象)来响应客户端请求。 
    
    static void Main(string[] args) 
    
    { 
    
        ServiceHost host=new ServiceHost(typeof(ServiceProvider), 
    
        new Uri("http://localhost:8000/HelloWCFService")); 
    
        host.AddServiceEndpoint(typeof(IHelloWCFService),new BasicHttpBinding(),""); 
    
        host.Open(); 
    
    } 
    
    http://localhost:8000/HelloWCFService 代表服务的地址,不同的服务必须拥有不同的地址。 
    
    当调用ServiceHost.Open() 方法时,WCF 将在本机8000 端口处监听客户端传来的请求并将其转发给相应的服务对象处理。注意:不同的服务可以重用同一端口,但其服务地址绝不能一样。ServiceEndPoint 是服务的访问点,客户端只能通过这一访问点才能访问服务。Service End Point 中文译为“服务终结点”。 
    
    二、访问WCF 服务的客户端实现 
    
    1 、为了与服务端通讯,客户端需要知道以下的事实:(1 )WCF 服务的地址(2 )WCF 服务的契约 
    
    2 、客户端引入WCF 契约。 客户端必须使用与服务端一致(或者相互兼容)的契约,才能保证调用的顺利完成。与服务端实现的第2 条一样。或在Visual Studio 中从“项目”菜单中选择“添加服务引用”命令,在弹出的对话框中输入元数据交换终结点地址。http://localhost:8000/HelloWCFService/mex 
    
    3 、客户创建代理 
    
    ChannelFactory channelFactory=new ChannelFactory( 
    
    New BasicHttpBinding(),new EndpointAddress("http://localhost:8000/HelloWCFService"));IHelloWCFService Proxy = channelFactory.CreateChannel(); 
    
    客户端需要创建一个服务代理对象proxy (必须实现服务契约IHelloWCFService )。服务代理对象由通道工厂(ChannelFactory )负责创建。 
    
    4 、通过代理访问WCF 服务。代理对象创建以后,访问WCF 服务就体现为对代理对象方法(由服务契约所约定)的调用。这些调用将会被远程传送到WCF 服务端。 
    
       Console.WriteLine(“ 从服务端返回:”Proxy.GetServiceMessage()); 
    
      
    
    一个WCF 服务向WCF 客户提供一些可用的功能。WCF 客户通过终结点(endpoint) 来访问WCF 服务。因此,一个WCF 服务至少要包含一个终结点。如果允许服务端反过来调用客户端的代码(即所谓回调callback ),则客户端也应该提供回调所使用的终结点。WCF 服务与客户程序要想成功通讯,必须遵循特定的协议,WCF 规定,在WCF 服务与WCF 客户间发送的所有消息都遵循SOAP 协议。 
    
      
    
    契约: 契约定义了一个终结点向外界发布的操作,以及WCF 服务与客户相互通讯时的消息格式。WCF 中有四种类型的契约,引例中定义的是“服务契约”。 
    
    1 、服务契约: 定义一个接口,给接口附加[ServiceContract] ,给接口方法附加[OperationContract] 
    
    2 、数据契约: 数据契约定义将在客户端与服务器端传送的各种数据类型。定义数据契约时需要使用[DataContract] 和[DataMember] 。 
    
    3 、消息契约: 可以使用消息契约来定制WCF 服务与WCF 客户间相互通讯的SOAP 消息格式。 
    
    4 、错误契约: 定义在服务中如何处理异常,以及这些异常又如何传送到客户端。 
    
      
    
    WCF 地址类型与通讯协议对应 
    
    使用TCP :地址以“net.tcp ”打头,多用于局域网环境 
    
    使用HTTP :地址以“http ”和“https ”打头,多用于互联网环境 
    
    使用消息队列:地址以“net.msmq ”打头。消息队列用于提供离线的消息服务,即调用服务时WCF 服务程序可以还没运行,调用请求被放到一个消息队列中,WCF 服务程序启动后取出此请求,解析后向WCF 客户提供服务。适用于局域网环境。使用命名管道:地址以“net.pipe ”打头。当WCF 服务与WCF 客户都位于同一台计算机时,这种通讯方式可以获得好的性能。 
    
      
    
    WCF 预定义绑定 
    
    BasicHttpBinding 、 WSHttpBinding 和WSFederationHttpBinding :使用HTTP 
    
    WSDualHttpBinding :使用两个HTTP 通道实现双向通讯 
    
    NetTcpBinding :使用TCP 
    
    NetPeerTcpBinding :使用P2P (很Cool 的一个绑定,后面会用它来开发有趣的应用) 
    
    NamedPipeBinding :使用命名管道 
    
    NetMsmqBinding 和MsmqIntegrationBinding :使用消息队列 
    
      
    
    WCF 服务应有一个宿主程序。可选的宿主程序类型有:IIS ,WAS ,Windows Form/WPF Application ,Console Application ,Windows Service 。在客户端可以访问服务之前,服务宿主进程必须启动。一个服务宿主程序可以同时承载多个服务。 
    
    
    
    展开全文
  • Wcf

    2008-04-02 01:42:00
    根据微软官方的解释,WCF(之前的版本名为“Indigo”)是使用托管代码建立和运行面向服务(Service Oriented)应用程序的统一框架。它使得开发者能够建立一个跨平台的安全、可信赖、事务性的解决方案,且能与已有...
  • (精华)2020年8月17日 微服务 WCF的使用

    万次阅读 2020-08-16 22:56:03
    using (RedisListService service = new RedisListService()) { service.FlushAll(); service.Add("article", "XT1234"); service.Add("article", "kevin"); service.Add("article", "大叔");...
  • WCF全面解析(源码)

    2014-07-07 18:42:30
    WCF全面解析(套装上下册)》由蒋金楠所著,是作者多年潜心研究WCF技术的心血之作,也是这些年来从事WCF开发的经验总结。书如其名,此书涵盖了WCF几乎所有的知识点,并对其底层框架进行了“庖丁解牛”式的剖析,力求...
  • 用PHP写了一个调用WCF的程序,WCF可以正常发布,访问老是报错,试了很多种办法都还没有解决。。 WCF发布后可以正常访问,如下图: ![图片说明](https://img-ask.csdn.net/upload/201508/10/1439203617_614245.png) ...
  • WCF入门

    千次阅读 热门讨论 2014-10-19 19:13:24
    WCF是什么? WindowsCommunicationFoundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,它是.NET框架的一部分,由.NET Framework 3.0开始引入,与WindowsPresentation Foundation及 Windows ...

空空如也

1 2 3 4 5 ... 20
收藏数 32,356
精华内容 12,942
关键字:

wcf