精华内容
下载资源
问答
  • 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

    2012-09-10 09:22:38
    WCF是微软建立新一代的分布式应用及面向服务应用的标准平台,是基于原有.NET Framework 2.0的扩展。虽然在WCF发布不久就已经在项目中使用WCF技术了。但是由于在项目中还没有较大规模的应用WCF技术,因此感觉掌握的还...

    WCF是微软建立新一代的分布式应用及面向服务应用的标准平台,是基于原有.NET Framework 2.0的扩展。虽然在WCF发布不久就已经在项目中使用WCF技术了。但是由于在项目中还没有较大规模的应用WCF技术,因此感觉掌握的还不是很好。网上已经有很多WCF方面的文章了,而且在我学习的过程中帮助也很大。不过技术的东西还是要靠自己边学边总结一下。

    下面这张图说明了WCF整合了微软现有技术的优点。但是WCF不单单是整合现有技术这么简单。Windows Communication Foundation (WCF) 是一个运行库和一组 API,用于创建在服务与客户端之间发送消息的系统。它使用相同的基础结构和 API 来创建应用程序。在以前不同技术的开发过程和方法是大相径庭的,在WCF中则一般只需要更改一些属性或配置即可。

    image

     

     

    WCF术语

    消息(message)
    消息是一个独立的数据单元,它可能由几个部分组成,包括消息正文和消息头。
     
    服务(service)
    服务是一个构造,它公开一个或多个终结点,其中每个终结点都公开一个或多个服务操作。
     
    终结点(endpoint)
    终结点是用来发送或接收消息(或同时执行这两种操作)的构造。终结点包括一个定义消息可以发送到的目的地的位置(地址)、一个描述消息应如何发送的通信机制规范(绑定),以及对可以在该位置发送或接收(或同时执行这两种操作)的一组消息的定义(服务协定,用于描述可以发送哪些消息)。 WCF 服务作为一个终结点集合向外界公开。
     
    应用程序终结点(application endpoint)
    一个终结点,由应用程序公开并对应于该应用程序实现的服务协定。
     
    基础结构终结点(infrastructure endpoint)
    一个终结点,由基础结构公开,以便实现与服务协定无关的服务需要或提供的功能。例如,服务可能拥有一个提供元数据信息的基础结构终结点。
     
    地址(address)
    地址指定接收消息的位置。地址以统一资源标识符 (URI) 的形式指定。URI 架构部分指定用于到达地址的传输机制,如 HTTP 和 TCP。URI 的层次结构部分包含一个唯一的位置,其格式取决于传输机制。

    使用终结点地址可以为服务中的每个终结点创建唯一的终结点地址,或者在某些条件下在终结点之间共享一个地址。下面的示例演示了一个将 HTTPS 协议和一个非默认端口结合使用的地址:HTTPS://cbcye:7788/ServiceModelSamples/CalculatorService

    绑定(binding)
    绑定定义终结点与外界进行通信的方式。它由一组称为绑定元素的要素构造而成,这些元素“堆叠”在一起以形成通信基础结构。绑定最起码应定义传输协议(如 HTTP 或 TCP)和所使用的编码(如文本或二进制)。绑定可以包含指定详细信息(例如,用于保护消息的安全机制或终结点所使用的消息模式)的绑定元素。有关更多信息,请参见(MSDN)配置服务
     
    绑定元素(binding element)
    绑定元素表示绑定的特定部分,如传输协议、编码、基础结构级协议(如 WS-ReliableMessaging)的实现以及通信堆栈的其他任何要素。
     
    行为(behaviors)
    行为是控制服务、终结点、特定操作或客户端的各种运行时特性的要素。行为按照范围进行分组:常见行为在全局范围内影响所有终结点,服务行为仅影响与服务相关的方面,终结点行为仅影响与终结点相关的属性,操作级行为影响特定操作。例如,有一种服务行为是遏制,它指定当过多的消息可能超出服务的处理能力时,服务应该如何反应。另一方面,终结点行为仅控制与终结点相关的方面,如查找安全凭据的方式和位置。
     
    系统提供的绑定(system-provided bindings)
    WCF 包含许多系统提供的绑定。这些绑定是针对特定方案进行优化的绑定元素的集合。例如,WSHttpBinding 是为了与实现各种 WS* 规范的服务进行互操作而专门设计的。通过仅提供那些可以正确应用于特定方案的选项,这些预定义的绑定可以节省时间。如果预定义的绑定不能满足您的要求,则可以创建您自己的自定义绑定。
     
    配置与编码(configuration versus coding)
    可以通过代码编写、配置或将两者结合在一起对应用程序进行控制。配置的优点在于,它使非开发人员(如网络管理员)可以在代码编写完成后直接对客户端和服务参数进行设置,而不必重新进行编译。使用配置不仅可以设置值(如终结点地址),还可以通过添加终结点、绑定和行为来实施进一步的控制。通过代码编写,开发人员可以保持对服务或客户端的所有组件的严格控制,而且可以对通过配置完成的所有设置进行检查,并根据需要通过代码进行重写。
     
    服务操作(service operation)
    服务操作是在服务的代码中定义的过程,用于实现某种操作的功能。此操作作为一个 WCF 客户端上的方法向客户端公开。该方法可能返回一个值,并可能采用数量可选的参数,或是不采用任何参数且不返回任何响应。例如,一个实现简单的“Hello”的操作可以用作客户端存在通知,并可以开始一系列操作。
     
    服务协定(service contract)
    服务协定将多个相关的操作联系在一起,组成单个功能单元。协定可以定义服务级设置,如服务的命名空间、对应的回调协定以及其他此类设置。在大多数情况下,协定的定义方法是用所选的编程语言创建一个接口,然后将 ServiceContractAttribute 属性应用于该接口。通过实现该接口,可生成实际的服务代码。
     
    操作协定(operation contract)
    操作协定定义参数并返回操作的类型。在创建定义服务协定的接口时,可以通过将 OperationContractAttribute 属性应用于协定中包含的每个方法定义来表示一个操作协定。可以将操作建模为采用单个消息作为参数并返回单个消息,或者建模为采用一组类型作为参数并返回一个类型。在后一种情况下,系统将确定需要为该操作交换的消息的格式。
     
    消息协定(message contract)
    消息协定描述消息的格式。例如,它会声明消息元素应包含在消息头中还是包含在消息正文中,应该对消息的何种元素应用何种级别的安全性,等等。
     
    错误协定(fault contract)
    可以将错误协定与服务操作进行关联,以指示可能返回到调用方的错误。一个操作可以具有零个或更多个与其相关联的错误。这些错误是在编程模型中作为异常建模的 SOAP 错误。
     
    数据协定(data contract)
    服务使用的数据类型必须在元数据中进行描述,以使其他各方可以与该服务进行交互操作。数据类型的说明称为数据协定,而这些类型可以在消息的任何部分使用(例如,作为参数或返回类型)。如果服务仅使用简单类型,则无需显式使用数据协定。
     
    宿主(hosting)
    服务必须承载于某个进程中。“宿主”是控制服务的生存期的应用程序。服务可以是自承载的,也可以由现有的宿主进程进行管理。
     
    自承载服务(self-hosted service)
    自承载服务是在开发人员创建的进程应用程序中运行的服务。开发人员控制服务的生存期、设置服务的属性、打开服务(这会将服务设置为侦听模式)以及关闭服务。
     
    宿主进程(hosting process)
    宿主进程是专为承载服务而设计的应用程序。这些宿主进程包括 Internet 信息服务 (IIS)、Windows 激活服务 (WAS) 和 Windows 服务。在这些宿主方案中,由宿主控制服务的生存期。例如,使用 IIS 可以设置包含服务程序集和配置文件的虚拟目录。在收到消息时,IIS 将启动服务并控制服务的生存期。
     
    实例化(instancing)
    每个服务都具有一个实例化模型。有三种实例化模型:“单个”,在这种模型中,由单个 CLR 对象为所有客户端提供服务;“每个调用”,在这种模型中,将创建一个新的 CLR 对象来处理每个客户端调用;“每个会话”,在这种模型中,将创建一组 CLR 对象,并且为每个独立的会话使用一个对象。实例化模型的选择取决于应用程序要求和服务的预期使用模式。
     
    客户端应用程序(client applicant)
    客户端应用程序是与一个或多个终结点交换消息的程序。客户端应用程序通过创建一个 WCF 客户端实例并调用该 WCF 客户端的方法来开始工作。需要注意的是,单个应用程序既可以充当客户端,也可以充当服务。
     
    通道(channel)
    通道是绑定元素的具体实现。绑定表示配置,而通道是与该配置相关联的实现。因此,每个绑定元素都有一个相关联的通道。通道堆叠在一起以形成绑定的具体实现:通道堆栈。
     
    WCF 客户端(WCF client)
    WCF 客户端是一个将服务操作作为方法公开的客户端应用程序构造(用您所选的 .NET Framework 编程语言编写,如 Visual Basic 或 Visual C#)。任何应用程序都可以承载 WCF 客户端,包括承载服务的应用程序。因此,可以创建一个包含其他服务的 WCF 客户端的服务。 通过使用 ServiceModel Metadata Utility Tool (Svcutil.exe) 并使其指向正在运行的发布元数据的服务,可以自动生成 WCF 客户端。
     
    元数据(metadata)
    服务的元数据描述服务的各种特征,外部实体需要了解这些特征以便与该服务进行通信。ServiceModel Metadata Utility Tool (Svcutil.exe) 可以使用元数据生成 WCF 客户端以及客户端应用程序可用来与服务进行交互的伴随配置。服务所公开的元数据包括 XML 架构文档(用于定义服务的数据协定)和 WSDL 文档(用于描述服务的方法)。 启用元数据后,WCF 通过检查服务及其终结点自动生成服务的元数据。若要发布服务的元数据,必须显式启用元数据行为。
     
    安全(Security)
    WCF 中的安全包括保密性(为防止偷听而进行的消息加密)、完整性(用于检测对消息所做篡改的方法)、身份验证(用于验证服务器和客户端的方法)以及授权(资源访问控制)。通过利用现有安全机制(如 TLS over HTTP,也称为 HTTPS)或通过实现各种 WS-* 安全规范中的一个或多个规范,可以提供这些功能。
     
    传输安全模式(transport security model)
    可以通过以下三种模式之一来保证安全:传输模式、消息安全模式和使用消息凭据的传输模式。传输安全模式指定由传输层机制(如 HTTPS)提供保密性、完整性和身份验证。在使用像 HTTPS 这样的传输协议时,此模式的优点在于性能出色,而且由于它在 Internet 上非常流行,因此很容易理解。其缺点在于,这种安全分别应用于通信路径中的每个跃点,这使得通信容易遭受“中间人”攻击。
     
    消息安全模式(message security model)
    消息安全模式指定通过实现一个或多个安全规范来保证安全,如名为“Web Services Security: SOAP Message Security”(Web 服务安全:SOAP 消息安全)的规范(可在 http://go.microsoft.com/fwlink/?LinkId=94684 获得)。每个消息都包含必要的安全机制,用于在消息传输过程中保证安全,并使接收方能够检测到篡改和对消息进行解密。从这种意义上说,安全信息封装在每个消息中,从而提供了跨多个跃点的端到端安全。由于安全信息成为消息的一部分,因此还可以在消息中包含多种凭据(这些凭据称为“声明”)。这种方法还具有这样一个优点,即消息可以通过任意传输协议(包括在其起点和目标之间的多个传输协议)安全地传送。这种方法的缺点在于所使用的加密机制较为复杂,使性能受到影响。
     
    使用消息凭据的传输安全模式(transport with message credential security model)
    此模式使用传输层来提供消息的保密性、身份验证和完整性,并且每个消息都可以包含消息接收方所要求的多个凭据(声明)。
     
    WS-*
    一组不断增加的、在 WCF 中予以实现的 Web 服务 (WS) 规范(如 WS-Security、WS-ReliableMessaging 等)的简写。

     

    展开全文
  • 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-05-28 11:24:00
    根据微软官方的解释,WCF(之前的版本名为“Indigo”)是使用托管代码建立和运行面向服务(Service Oriented)应用程序的统一框架。它使得开发者能够建立一个跨平台的安全、可信赖、事务性的解决方案,且能与已有...
  • WCF教程WCF教程

    2017-12-25 16:26:21
    wcf教程,基础,事件,高级,扩展,每章都有代码,由浅入深,很好的WCF编程教材。
  • WCF教程WCF教程WCF教程

    2010-04-01 11:37:06
    WCF教程WCF教程WCF教程WCF教程
  • WCF例子,WCF例子,WCF例子,WCF例子,WCF例子,WCF例子
  • WCF】什么是WCF

    万次阅读 热门讨论 2018-06-10 21:51:41
    什么是WCF ​ Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台。WCF的最终目标是通过进程或不同的系统、通过本地网络或是通过Internet收发...
  • Wcf实例

    2015-07-14 16:42:58
    代码建立了一个简单wcf的demo; 内容包含wcfwcf宿主、wcf客户端等,实际测试可以正常允许,请下载查看。
  • WCF全称Windows Communication Foundation,是Microsoft为构建面向服务的应用提供的分布式通信编程框架,是.NET Framework 3.5的重要组成部分。使用该框架,开发人员可以构建跨平台、安全、可靠和支持事务处理的企业...
  • WCF全面解析

    2018-04-26 10:20:03
    WCF全面解析 WCF全面解析 WCF全面解析 WCF全面解析 WCF全面解析
  • wcf 代理 wcf开发示例

    2010-09-29 17:22:20
    wcf 代理 wcf开发示例 wcf 代理 wcf开发示例
  • WCF服务编程

    2018-02-27 11:51:32
    WCF服务编程WCF服务编程WCF服务编程WCF服务编程WCF服务编程

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,639
精华内容 14,655
关键字:

wcf