WCF
WCF接口实例介绍

WCF接⼝实例介绍Windows Communication Foundation(WCF)是由微软开发的⼀系列⽀持数据通信的应⽤程序框架,可以翻译为Windows 通讯开发平台。
WCF整合了原有的windows通讯的 .net Remoting,WebService,Socket的机制,并融合有和的相关技术。
简单的归结为四⼤部分1>.⽹络服务的协议,即⽤什么开放客户端接⼊。
2>.业务服务的协议,即声明服务提供哪些业务。
3>.数据类型声明,即对客户端与服务器端通信的数据部分进⾏⼀致化。
4>.传输安全性相关的定义。
下⾯直接看⼀个例⼦:⼀.服务端实例1.定义⼀个WCF接⼝名称未Ichangeline服务契约(ServiceContract),订定服务的定义。
// 注意: 使⽤“重构”菜单上的“重命名”命令,可以同时更改代码和配置⽂件中的接⼝名“IStaffLoginCheckService”。
[ServiceContract] //服务协定定义public interface IChangeline{[OperationContract] // 操作服务定义string EsopCheckOk();[OperationContract]string HelloWorld();}2.定义⼀个类实现接⼝名称Changeline// 注意: 使⽤“重构”菜单上的“重命名”命令,可以同时更改代码和配置⽂件中的类名“StaffLoginCheckService”。
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single, InstanceContextMode = InstanceContextMode.Single)]public class Changeline : IChangeline{public string HelloWorld(){string result = "123456";return result;}}3.开通WCF所需要的服务,也可以从VS直接添加WCF服务1#region启动WCF服务2private void OpenWcfService()3 {4try5 {6var changeline = new Changeline(bendview);7 host = new ServiceHost(changeline, new Uri("http://localhost:8734/MyService/"));8//这是我们服务的地址9 host.AddServiceEndpoint(typeof(IChangeline), new BasicHttpBinding(), string.Empty);10 host.Description.Behaviors.Add(new ServiceMetadataBehavior { HttpGetEnabled = true });11//mex元数据的地址12 host.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexHttpBinding(),13"mex");14 host.Open();15var port = "8734"; //获取端⼝号16var inname = "Changeline"; //打开端⼝号的名称17var str = " netsh advfirewall firewall add rule name=" + inname +18" dir=in action=allow protocol=TCP localport= " + port;19var pro = new Process(); //实例化进程20 pro.StartInfo.FileName = "cmd.exe"; //设置要运⾏的程序⽂件21 eShellExecute = false; //是否使⽤操作系统shell程序启动22 pro.StartInfo.RedirectStandardInput = true; //是否接受来⾃应⽤程序的调⽤23 pro.StartInfo.RedirectStandardOutput = true; //是否接受来⾃应⽤程序的输出信息24 pro.StartInfo.RedirectStandardError = true; //是否接受重定向错误信息25 pro.StartInfo.CreateNoWindow = true; //不显⽰窗⼝信息26 pro.Start(); //启动程序2728//向cmd窗⼝发送输⼊信息29 pro.StandardInput.WriteLine(str + "&exit");3031 pro.StandardInput.AutoFlush = true;32 pro.WaitForExit(); //等待程序运⾏完退出程序33 pro.Close(); //关闭进程34 }35catch (Exception ex)36 {37 Tool.Log.Error("WCF开起失败:" + ex.Message);38 }39 CheckWCFServerTh = new Thread(WCF_HostCheck);40 CheckWCFServerTh.IsBackground = true;41 CheckWCFServerTh.Start();42 }43void WCF_HostCheck(object o)44 {45//Closed 指⽰通信对象已关闭,且不再可⽤。
WCF配置详解

WCF配置详解服务端的配置⽂件主要是对services、bindings、behaviors的配置。
在默认的App.config中,使⽤的是WCF Framework定义好的wsHttpBinding默认配置,所以看不到binding配置节。
配置节展开如下图:BTW: "元数据端点”通过WS-MetadataExchange帮我们实现了对服务的描述,提供了WSDL,启动Host之后我们可以通过<http://localhost:8732/Design_Time_Addresses/WcfServiceLib/Service1/?wsdl> 查看到公开的服务描述。
配置节展开如下图:关于WCF中的地址和绑定,需要补充⼀下。
WCF中⽀持的传输协议包括HTTP、TCP、Peer network(对等⽹)、IPC(基于命名管道的内部进程通信)以及MSMQ(微软消息队列),每个协议对应⼀个地址类型:HTTP地址:<http://localhost:8080/>TCP地址: net.tcp://localhost:8080/IPC地址: net.pipe://localhost/ (适⽤于跨进程,不能使⽤于不同机器间)MSMQ地址: net.msmq://localhost/对等⽹地址: net.p2p://localhost/WCF中提供的绑定有:BasicHttpBinding: 最简单的绑定类型,通常⽤于 Web Services。
使⽤ HTTP 协议,Text/XML 编码⽅式。
WSHttpBinding: ⽐ BasicHttpBinding 更加安全,通常⽤于 non-duplex 服务通讯。
WSDualHttpBinding: 和 WSHttpBinding 相⽐,它⽀持 duplex 类型的服务。
WSFederationHttpBinding: ⽀持 WS-Federation 安全通讯协议。
WCF 基础培训讲义

Messaging(消息传递) WS Security Channel HTTP Channel WS Reliable Messaging Channel TCP Channel Transactional Flow Channel Encoders Binary/Text/MTOM/XML MSMQ Channel
25
WCF体系结构
Application(应用程序) Contracts(合约) Data Contracts Message Contracts Service Contracts Policy and Bindings
Service Runtime(服务运行时) Throttling Behavior Metadata Support Error Behavior Instance Support Transactional Behavior Message Inspection Concurrency Behavior Message Dispatching
11
WCF 与 Web Service 的区别
Web Service 就是 Web Service WCF比Web Service性能好 WCF比 Web Service快 SOA 体系架构 WCF比Web Service速度快 WCF比Web Service强大 WCF比Web Service安全 Web Service Web Service必将被WCF取代 行业标准 WCF其实就是Web Service
/ 支持 /
/ / 支持
支持 支持 支持
21
WCF特性
统一性
WCF整合了ASMX、.Net Remoting、Enterprise Service、WSE和MSMQ等技术,使它们统一到一 起。 开发WCF的应用程序与开发其它类型的.NET应用 程序几乎没有区别。可以像创建对象导向的应用程 序那样,利用WCF来创建面向服务的应用程序。 WCF可以以IIS作为宿主(Host),也可以以 Windows Service,Windows Forms,WPF等作为宿 主。 WCF既可以支持HTTP协议,也可以支持TCP协议。
JAVA与C#平台通信 WCF CXF SOAP

问题提出:采用的方案:Java和C#的互操作性,采用基于Soap的通信协议什么是WCF根据微软官方的解释,WCF是使用托管代码建立和运行面向服务(Service Oriented)应用程序的统一框架。
它使得开发者能够建立一个跨平台的、安全、可信赖、事务性的解决方案,且能与已有系统兼容协作。
WCF是微软分布式应用程序开发的集大成者,它整合了.Net平台下所有的和分布式系统有关的技术,例如.Net Remoting、ASMX、WSE和MSMQ。
以通信(Communiation)范围而论,它可以跨进程、跨机器、跨子网、企业网乃至于Internet;以宿主程序而论,可以以,EXE,WPF,Windows Forms,NT Service,COM+作为宿主(Host)。
WCF可以支持的协议包括TCP,HTTP,跨进程以及自定义,安全模式则包括SAML,Kerberos,X509,用户/密码,自定义等多种标准与模式。
/antswallowWCF平台搭建JAVA调用WCFDynamicClientFactory dcf=DynamicClientFactory.newInstance();org.apache.cxf.endpoint.Client client=dcf.createClient("http://localhost:37563/WebSite4/Service.asmx?wsdl"); Object[]reply=client.invoke("HelloWorld",new Object[]{});System.out.println("Server said:"+reply[0].toString());详见:/Apache CXF=Celtix+XFire,Apache CXF的前身叫Apache CeltiXfire,现在已经正式更名为Apache CXF了,以下简称为CXF。
国际商会国际组织简介

国际组织(含ICC和WCF)简介国际商会国际商会(International Chamber of Commerce ,ICC)成立于1919年,是全球最大、最具代表性的商业组织,其来自超过180个国家的无数成员单位遍布了商业活动的各个领域。
国际商会的主要工作包括3个方面:规则制定、争端解决以及政策倡议。
由于其成员单位及协会自身都从事国际商业活动,国际商会在制定管理跨国商业规则方面具有无与伦比的权威性。
尽管国际商会制定的规则并不是强制性规则,但是在每天的交易中广泛使用,并且成为国际商事规则的一部分。
企业、国家和国际组织(包括联合国、世贸组织、世界银行和G20集团)都将国际商会视为国际商业领域的权威。
国际商会世界商会联合会国际商会世界商会联合会(World Chambers Federation,WCF)是国际商会(ICC)为加强世界各国商协会联系而下设的部门,负责管理ICC 650万家会员中的1.2万家商协会会员。
WCF原名为商会联合会国际信息局(International Information Bureau of Chambers of Commerce),于1966年改名为商会联合会国际局(International Bureau of Chambers of Commerce),后在2001年改为现名。
WCF主要提供ATA单证册、原产地证书(CO)服务及其他商协会间合作项目。
自二十世纪五十年代创立以来,WCF已成为商会领袖及高管进行交流合作的全球平台。
全球各级商协会,无论是地方性、区域性、国家级、双边或多边商会,还是公私立商会,都参与到WCF的活动和项目中。
WCF具有独立的运营机制。
理事会为WCF最高决策机构,每年召开两次会议,讨论和决定年度计划、项目开展、ATA单证册和原产地证书(CO)委员会工作及两年一度的世界商会大会(WCC)举办地点和日程等。
WCF理事会共有48名成员,由地级、省区级、国家级和跨国商会的领袖组成,包括WCF主席1名、荣誉主席1名、执行委员会成员11名、选举理事20名、增选理事12名及合作机制理事3名。
wcf面试知识点

WCF面试知识点1. 什么是WCFWCF(Windows Communication Foundation)是一个用于构建分布式应用程序的微软平台。
它提供了一种统一的编程模型,用于构建可靠、可扩展和安全的服务导向应用程序。
WCF支持多种传输协议(如HTTP、TCP、MSMQ等),并具有内置的安全性、可靠性和事务支持。
它使用基于SOAP的消息传递机制,可以在不同的平台和技术之间进行通信。
2. WCF的核心概念2.1 服务契约(Service Contract)服务契约定义了服务所提供的操作(方法)和消息。
它使用属性和接口来描述服务的行为和数据格式。
[ServiceContract]public interface ICalculatorService{[OperationContract]double Add(double x, double y);[OperationContract]double Subtract(double x, double y);}2.2 绑定(Binding)绑定定义了服务和客户端之间的通信方式,包括传输协议、编码方式和安全性要求等。
<bindings><basicHttpBinding><binding name="BasicHttpBinding_ICalculatorService" /></basicHttpBinding></bindings>2.3 终结点(Endpoint)终结点定义了客户端如何与服务进行通信。
它包含绑定信息、服务地址和协定等。
<endpoint address="http://localhost/CalculatorService"binding="basicHttpBinding"bindingConfiguration="BasicHttpBinding_ICalculatorService "contract="CalculatorService.ICalculatorService"name="BasicHttpBinding_ICalculatorService" /></client>2.4 服务宿主(Service Host)服务宿主是承载WCF服务的应用程序。
WCF入门教程

WCF入门教程本节中包含的主题旨在帮助您快速了解 Windows Communication Foundation (WCF) 编程体验。
这些主题要根据本主题底部的列表中的顺序完成。
通过学习本教程,您可以初步了解创建 WCF 服务和客户端应用程序所需的步骤。
服务是一种构造,它公开一个或多个终结点,其中每个终结点都公开一项或多项服务操作。
服务的终结点指定下列信息:服务所在的位置;一个绑定,其中包含客户端必须与服务进行通信的信息;一个协定,用于定义服务向其客户端提供的功能。
在完成本教程中的系列主题之后,您将会得到一个正在运行的服务,以及一个可以调用该服务的操作的客户端。
前三个主题描述如何使用协定定义服务,如何实现服务,以及如何在代码中配置服务、承载服务和运行服务。
所创建的服务是自承载服务,客户端和服务都在同一计算机上运行。
服务使用代码而非配置进行配置。
另外还可以将服务承载于 Internet 信息服务 (IIS) 下。
有关如何执行此操作的更多信息,请参见“如何:如何:在 IIS 中承载 WCF 服务”。
也可以在配置文件中配置服务。
有关使用配置文件的更多信息,请参见使用配置文件配置服务。
后三个主题描述如何创建客户端代理,如何配置客户端应用程序,以及如何创建和使用可以访问服务功能的客户端。
服务会发布可以访问的元数据,这些数据定义了客户端应用程序与服务操作进行通信所需的构造。
WCF 提供了一个ServiceModel Metadata Utility Tool (Svcutil.exe)来自动完成以下过程:访问发布的这些元数据,然后使用这些元数据来构造和配置服务的客户端应用程序。
本节中的所有主题均假定您使用 Visual Studio 2008 作为开发环境。
如果您使用的是其他开发环境,请忽略特定于 Visual Studio 的说明。
注意:如果运行的是 Windows Vista,则必须通过在“开始”菜单上右击 Microsoft Visual Studio 2008,然后选择“以管理员身份运行”的方式来启动 Visual Studio。
常见的WCF面试问题

常见的WCF⾯试问题1. WCF和ASMX WebService的区别是什么?最基本的区别在于,ASMX或者 WebService是⽤来通过基于HTTP的SOAP来实现通讯。
但WCF可以使⽤任意协议(HTTP,TCP/IP,MSMQ,NamedPipes等),消息封装可以使⽤任意格式(默认SOAP)。
更多的细节⽐较,可以参考:1. 怎么理解WCF的Service EndPoints?对于WCF服务来说,Endpoints暴漏了其被调⽤的⽅式;客户端必须知道这些细节才能够与服务端进⾏通讯。
每个Endpoints就是⽤于通信的⼊⼝,客户端和服务端通过Endpoint交换信息。
⼀个WCF Service Endpoint⼀般包括3个基本的元素:Address:定义了“WHERE”,⼀串URL标识了服务的地址;Binding:定义了“HOW”,确定服务器怎么被访问,例如消息发送的传输协议(如TCP,HTTP),安全(如SSL,SOAP 消息安全)。
Contract:定义了“WHAT”,即服务提供的内容和契约⽅式,描述的是消息所包含的内容,以及消息的组织和操作⽅式,例如是one-way,duplex和request/reply。
1. 通过那些⽅式可以托管WCF Service?要托管WCF Service,必须具备⾄少⼀个托管的进⾏,⼀个ServiceHost实例和⼀份正确Endpoint配置。
可能的情况如下:1. 托管程序或者⾃我托管[Managed Application/ Self Hosting]:Console ApplicationWindows ApplicationWindows Service2. Web Server托管IIS 6.0 ( Application supports only HTTP)Windows Process Activation Service (WAS) i.e. IIS 7.0 supports HTTP, TCP, NamedPipes, MSMQ.4. 怎样在WCF Service中启⽤操作重载(Operation Overloading )?默认情况下,WSDL不⽀持操作重载,重载⾏为必须通过OperationContract的Name属性来实现。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4、WCF工作原理
WCF主要分服务端和客户端两部分。服务端和客户端进行通 信的过程如下图所示:
图1-3 WCF工作原理
在上图中,主机进程就是服务端,在其中需要创建服务,然后 将服务通过EndPoint(终结点)与客户端进行通信。客户端在 使用服务时,需要首先创建一个代理服务,然后调用这个代理 服务。 EndPoint(终结点)在WCF中是非常重要的部分。它包含了服 务地址(Address)、绑定格式(Binding)和契约(Contract)。 其中,地址定义了服务的位置,绑定定义了服务通信的方式, 契约定义了服务所提供的功能。为了便于记忆,我们将终结点 的这三个要素简称为服务的ABC。后面会详细讲解这三个要素。
WCF快速入门 快速入门
一、WCF简介
WCF的全称是Windows Communication Foundation, Windows通信基础的意思,是Microsoft为构建面向服务的应 用程序而提供的统一编程模型,它整合.NET平台下所有和 分布式系统有关的技术,例如.Net Remoting、ASMX、WSE 和MSMQ。
WS双向绑定( WS双向绑定(Duplex WS Binding) 双向绑定 Binding)
由WSDualHttpBinding类提供。与WS Binding类似,但它还支 持从服务到客户端的双向通信。
MSMQ绑定 MSMQ绑定
由NetMsmqBinding类提供。对离线消息队列调用提供支持。
MSMQ集成绑定(MSMQ Integration Binding) MSMQ集成绑定( 集成绑定 Binding)
(3)在该接口中添加4个方法,分别是Add()、Subtract()、 Multiply()、Divide(),并在这些方法上标记[OperationContract]属性。 否则,即便当前接口应用了[ServiceContract]属性,该接口中的成员 也不是契约中的一部分。 (4)添加一个类,命名为CalculatorService,并实现 ICalculatorService接口。
可从企业外部访问 随时可以调用 松散耦合 可重用的服务 服务接口设计管理 标准化的服务接口 支持各种消息模式 精确定义的服务契约
2、什么是WCF
之所以要先介绍SOA架构,是因为只有了解SOA模式后,我们 才可以以正确的理念去学习WCF,因为WCF是浓缩版的SOA。 SOA是通用的一种设计模式,而WCF不是通用的,是一个组件。 可以结合以下的概念加强对WCF的理解: 微软平台上的SOA架构。用于构建分布式和可交互操作的应用 程序。
<appSettings> <add key="addr" value="http://localhost:10086/CalculatorService" /> </appSettings>
b.添加<system.serviceModel>节点,并将该节点设置如下:
<system.serviceModel> <services> <service name="CalculatorService.CalculatorService" behaviorConfiguration="ServiceBehavior"> <endpoint address="" binding="wsHttpBinding" contract="CalculatorService.ICalculatorService" /> </service> </services> <behaviors> <serviceBehaviors> <behavior name="ServiceBehavior"> <serviceMetadata httpGetEnabled="true"/> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel>
1、设计WCF服务的契约
由于要设计计算器应用程序,所以首先要设计计算器的计算方法。 在WCF中,这些方法由契约实现。 (1)新建一个类库项目,命名为CalculatorService。因为WCF的 大部分功能都包含在一个单独的程序集System.ServiceModel.dll中, 所以要在该项目添加对System.ServiceModel的引用。 (2)添加一个接口,命名为ICalculatorService。因为要将该接口 作为契约公布,所以需要为该接口添加一个[ServiceContract]属性。 如果接口没有标记该属性,则WCF客户端不能访问该契约。
6、WCF服务的绑定(Binding)
绑定类型决定着客户端如何获取数据。WCF定义了9种类型 的数据绑定方式。
基本绑定(Basic Binding) 基本绑定( Binding)
由BasicHttpBinding类提供。用来对以前的ASMX Web Service提供支持,这样既有的客户端程序可以连接到WCF服 务上,而且WCF客户端也可以使用现有的Web Service服务。
TCP绑定 TCP绑定
由NetTcpBinding类提供。使用TCP协议实现在Intranet中跨 机器的通信。支持多种特性,包括可靠性、事务性、安全性, 并专门针对WCF-to-WCF进行了优化,不过需要客户端和服务 端都要具备WCF环境。
对等网绑定
由NetPeerTcpBinding类提供。使用P2P网络进行通信,这恐怕 是使用率最少的一种绑定类型了。 IPC绑定 由NetNamedPipeBinding类提供。在同一主机上使用命名管道进 行通信,这种绑定方式最为安全,因为它不能接收来自机器外 部的调用。 Web服务(WS)绑定 服务( 由WSHttpBinding类提供。使用HTTP/HTTPS在Internet上进行 消息传输,支持可靠性、事务性、安全性等功能。 WS联邦绑定(Federated WS Binding) 联邦绑定( 由WSFederationHttpBinding类提供。
5、WCF服务的地址(Address)
地址是找寻服务端服务的一个路径。在WCF中,每个服务都会 关联到一个唯一的地址。地址提供了两个重要信息:服务位置 (location)和传输协议(transport protocal)。 服务位置包括目标机器名、站点或网络、通信端口、管道或队 列,以及一个可选的特定路径或者URI。URI即统一资源标识 (Universal Resource Identifier),它可以是任意的唯一标识的字 符串,例如服务名称或GUID。
图1-1 传统的三层结构图
用户层
Service 业务逻辑层 数据访问
Service 业务逻辑层 数据访问
Service 业务逻辑层 数据访问
Service 业务逻辑层 数据访问
图1-2 SOA结构图
很明显,SOA架构比传统的三层结构多了一层Service,表示服 务层,这就是现在流行的SOA四层结构,通过服务为应用程序 提供实现方法。SOA的基本特性如下:
8、WCF服务的宿主
WCF服务不能凭空存在。每个WCF服务都必须托管(Hosting) 在一个Windows进程中,该进程被称为宿主进程。 WCF服务宿主可以由IIS提供,可以由Windows服务提供,也 可以由Windows Vista的Windows激活服务提供。其中,使用 IIS托管只能使用HTTP协议。
统一Web Service、.NET Remoting和Enterprise Services 的开发模型。为各种应用程序提供单一的编程模型,例如基于 配置驱动的协议选择、消息格式化、进程分配等。 面向服务。构建面向服务的体系,简化实现SOA的方法。 松耦合。没有限制特定的协议、编码格式和主机环境,所有 选项可配置。 可交互。支持Web Service的核心标准,在可扩展方面能够 快速适应新的协议和更新。 整合性。整合微软早期的技术,如COM、MSMQ、Enterprise Services等。
注意: 注意:TCP地址采用net.tcp协议进行传输,通常它还包括端口 号。如果没有指定端口号,则TCP地址的默认端口号为808。 HTTP地址使用http协议进行传输,也可以利用https进行安全传 输。HTTP地址通常会被用作对外的基于Internet的服务,并为 其指定端口号。如果没有指定端口号,则默认为80。
2、设计WCF服务的宿主
WCF的宿主有四种类型。 1、Windows应用程序托管。 2、IIS托管。 3、Windows服务托管。 4、Windows激活服务。
3、Windows应用程序托管
这种宿主进程可以是任意的Windows进程,例如Windows窗体 应用程序或Windows控制台应用程序。 (1)新建一个控制台应用程序,命名为CalculatorServiceHost。 添加对System.ServiceModel的引用。 (2)添加一个应用程序配置文件App.config,并在其中设置公 布服务所需的各种信息。 a.添加一个<appSettings>节点,以便在代码中直接加 载其中的内容:
1、SOA架构模式
SOA(Service-Oriented Architecture),是面向服务的架构。 它是一种设计模式和设计方法,并不是一种具体的技术。 SOA可以根据需求,通过网络对松散耦合的粗粒度,应用组 件进行分布式部署、组合和使用。服务层是SOA的基础,可 以直接被调用,从而有效控制系统中与软件代理交互的人为 依赖性。这个定义看起来比较抽象,却很好地说明了SOA是 应用架构中的一层,这个层可以被直接调用,也可以被不同 的程序调用。