代码改变世界

WCF学习汇总20150904--参考[无废话WCF入门教程]

2015-09-04 23:53  一叶之秋愁上头  阅读(298)  评论(0)    收藏  举报

(一) 创建WCF程序

1. 新建【WCF服务应用程序】

2. 自定义【wcf服务】,后缀svc

3. 在接口处定义

定义

[ServiceContract] 说明是Wcf接口,否则外部无法调用

[OperationContract] 说明是wcf接口方法,否则外部也无法调用

4. 将其svc定义初始页,F5进行执行

clip_image002

 

(二) IIS进行部署

类似网站安装一样。设定【端口】以及文件路径。浏览:

clip_image004

可能会报错【HTTP 错误 403.14 – Forbidden】需修改【目录浏览】设定:设定启动即可

clip_image005 clip_image007

 

(三) 创建WCF客户端程序

1. 直接引用服务:添加服务引用

clip_image008

自动生成App.Config文件进行配置

 

2. 使用svcutil.exe来生成文件与Config文件。在调用时一定要将其名称改成App.Config,需要引用【System.ServiceModel】

备注: svcUtil如何附加工具中可参考:

wcf Svcutil用法

http://www.cnblogs.com/scottckt/archive/2012/05/20/2510716.html

 

(四) 其它

Config文件配置: endpoint

address 地址

binding 绑定

contract 合同

相关范例

<endpoint address="http://192.168.1.16:6060/User.svc"

binding="basicHttpBinding"

contract="WcfClient.IUser"

/>

 

(五) WCF服务库与WCF服务应用程序

WCF服务应用程序,是一个可以执行的程序,它有独立的进程,WCF服务类契约的定义,可以直接看到运行的效果. 引用System.ServiceModel

WCF服务库,可以认为是一个包含WCF服务以及契约定义的类库。不能直接运行.引用System.ServiceModel, System.Runtime.Serialization

宿主程序

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

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

 

(六) WCF服务库宿主—宿主程序

1. 控制台宿主---ServiceHost类

2. Winform宿主---注意其App.config文件配置:name, binding, contract必须与WCF服务库下名称一致。

WCF服务库

<service name="WcfLibrary.User">

<endpoint address="" binding="wsHttpBinding" contract="WcfLibrary.IUser">

其它

</endpoint>

</service>

App.Config配置注意

<service name="WcfLibrary.User">

<host>

<baseAddresses>

<add baseAddress="http://localhost:8050/User" />

</baseAddresses>

</host>

<endpoint address="" binding="wsHttpBinding" contract="WcfLibrary.IUser"></endpoint>

</service>

3. WAS宿主

确认安装IIS激活组件

a)打开控制面板--程序和功能--打开或关闭windows功能

clip_image009

Windows Process Activation Service;

Net.Msmq Listener Adapter;

Net.Pipe Listener Adapter;

Net.Tcp Listener Adapter; 需启动

Net.Tcp Port Sharing Service 需启动

b)确认支持Non-Http支持

clip_image010

c)net.tcp设置

clip_image011

clip_image013

d) 配置总算成功

clip_image015

 

4. 基于Windows服务—未实现

 

 

(七) WCF服务配置文件

1 客户文件位置

Web程序在Web.config中配置

应用程序中在App.config中配置

2  配置节点

包含在: <system.serviceModel> </system.serviceModel>之间

Service配置节[必须有]:配置服务、接口和终结点。

每个Service都会有以下两个属性。

name:名称空间.类名[服务的具体实现类]。

behaviorConfiguration:一个在behaviors节点中找到的名称。

Binding配置节[可有可无]:配置绑定,如httptcp等。

Behavior配置节[可有可无]:配置行为,如认证等。

 

(八) WCF通信模式

1. 请求与应答

客户端发出请求、需等待服务端发出响应(异步调用除外),否则会假死状态。

2. 单向通信

客户端向服务端发送求,但是不管服务端是否执行完成就接着执行下面的程序。[OperationContract(IsOneWay = true)]

特点:使用 IsOneWay=true 标记的操作不得声明输出参数、引用参数或返回值

3. 双工通信

双工模式建立在上面两种模式的基础之上,实现客户端与服务端相互的调用。

支持回调的绑定有4种:

WSDualHttpBinding、

NetTcpBinding、

NetNamedPipeBinding、

NetPeerTcpBinding

服务端:

a) config需定义

<services>

<service name="WCFServerBoth.User">

<endpoint address="" binding="wsDualHttpBinding" contract="WCFServerBoth.IUser">

<identity>

<dns value="localhost" />

</identity>

</endpoint>

</service>

</services>

b) 服务端【接口类】添加

[ServiceContract(CallbackContract = typeof(接口))]

另定义一个接口

c) 服务端【实现类】添加

包含另一个接口的字段

构造函数时初始化:

callback = OperationContext.Current.GetCallbackChannel<接口>();

d) 客户端【实现服务器端未实现接口】

InstanceContext insContext = new InstanceContext(new 类());

 

(九) 附录

无废话WCF入门教程

http://www.cnblogs.com/iamlilinfeng/archive/2012/09/26/2703759.html

WCF:如何将net.tcp协议寄宿到IIS

http://www.cnblogs.com/Gyoung/archive/2012/12/11/2812555.html

Windows服务发布WCF服务

http://www.cnblogs.com/stulife/archive/2011/04/14/2016118.html

 

源代码: 点这里