一、服务端配置文件
主要包括
1、services
配置服务节点
<!--name 指的是契约实现类--> <service name="WcfLib.User2" behaviorConfiguration="mexBehaviour"> <host> <baseAddresses> <!--指定默认地址--> <add baseAddress="http://localhost:6666/"/> </baseAddresses> </host> <!--address不填写则用默认值 baseaddress,如果填写而且baseaddress有值 则两者拼接 http://localhost:6666/MyServices2,如果baseaddress没有则用address--> <!--binding通讯格式 一共九种,对应的地址格式也不一样,复杂配置还需要参看文档--> <!--contract 契约--> <endpoint address="MyServices2" binding="basicHttpBinding" contract="WcfLib.IUser2"> <!-- 用户定义的xml元素集合,一般用作SOAP的header内容--> <headers> <a></a> <b></b> <c></c> <d></d> </headers> <!--身份认证用 作者也没用过--> <identity> <dns/> </identity> </endpoint> <!--元数据节点 即使关闭元数据,这个节点也可以把元数据暴露出去。--> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"></endpoint> </service>
2、behaviors
定义behavior就可以设置服务的运行时属性。
分为服务行为和端点行为。
对象实例的生命周期、 并发与异步处理、 配置行为、 事务行为、 序列化行为、 元数据转换、 会话的生命周期、 地址过滤以及消息头的处理、 模拟(Impersonation);
2.1、服务行为
元数据暴露等等
<serviceBehaviors> <behavior name="mexBehaviour"> <!-- 为避免泄漏元数据信息, 请在部署前将以下值设置为 false 并删除上面的元数据终结点 --> <!--设置未false被人不能发现,一般当客户端已经加载好服务代理就可以设置为false了。配置修改,服务要重启,才能生效--> <serviceMetadata httpGetEnabled="true" /> <!--服务终结点的可发现性--> <serviceDiscovery> <!--指定用于公开服务的服务终结点的绑定、协定和地址属性。--> <announcementEndpoints> <!--<endpoint address="" name="" binding="" contract=""></endpoint>--> </announcementEndpoints> </serviceDiscovery> <!--在WCF的使用过程中,有时会碰到传递的数据量比较巨大,客户端程序报错。常见的解决方法就是通过增大改变服务端与客户端配置文件serviceBehaviors的dataContractSerializer 的maxItemsInObjectGraph属性--> <!--<dataContractSerializer maxItemsInObjectGraph="" ignoreExtensionDataObject="" />--> </behavior> </serviceBehaviors>
2.2、端点行为
具体方法回调,等等(笔者也没有具体研究)
<endpointBehaviors> <behavior> </behavior> </endpointBehaviors>
3、bindings
传输格式描述
<!--描述具体绑定操作 传输编码 形式 kookie 内容大小 等--> <bindings> <basicHttpBinding> <binding name="basic" maxReceivedMessageSize="2147483647" transferMode="Streamed" messageEncoding="Text" allowCookies="false"></binding> </basicHttpBinding> <netTcpBinding> </netTcpBinding> <customBinding> <!--自定义绑定,貌似只有一些超时操作--> <!--<binding openTimeout="" closeTimeout="" receiveTimeout="" sendTimeout="" name=""></binding>--> </customBinding> </bindings>
二、客户端配置文件
<bindings> <basicHttpBinding> <binding name="BasicHttpBinding_IUser1" /> <binding name="BasicHttpBinding_IUser2" /> <binding name="BasicHttpBinding_IUnity1" /> </basicHttpBinding> <netTcpBinding> <binding name="NetTcpBinding_IUnity2" /> </netTcpBinding> </bindings> <behaviors> </behaviors> <client> <endpoint address="http://localhost:9999/MyServices1" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IUser1" contract="WCFServiceUser1.IUser1" name="BasicHttpBinding_IUser1" /> <endpoint address="http://localhost:6666/MyServices2" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IUser2" contract="WCFServiceUser2.IUser2" name="BasicHttpBinding_IUser2" /> <endpoint address="http://localhost:7777/MyServices3" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IUnity1" contract="WCFServiceUnity.IUnity1" name="BasicHttpBinding_IUnity1" /> <endpoint address="net.tcp://localhost:7776/MyServices4" binding="netTcpBinding" bindingConfiguration="NetTcpBinding_IUnity2" contract="WCFServiceUnity.IUnity2" name="NetTcpBinding_IUnity2"> </endpoint> </client>
自动生成,不在具体描述。
三、通过工具配置 配置文件
1、没有配置文件的情况,
文件-->新建服务
新建服务
浏览已经生成好的wcf类库dll,加载进去。然后配置。配置完成后,保存生成app.config文件。
2、已经存在配置文件的情况,直接打开
四、代理代码生成工具
1、添加外部工具
工具-->外部工具-->添加
初始目录:是指代理类以及配置文件生成的目录, 可以在点击后面的三角图标按钮选择,不同的生成位置。
C:Program Files (x86)Microsoft SDKsWindowsv10.0AinNETFX 4.6.1 ToolsSvcUtil.exe(根据自己安装的类库任意选择)
知道简单配置就可以了,具体的实际中查询配置文档
推荐: https://msdn.microsoft.com/zh-cn/library/ms731354(v=vs.110).aspx
http://www.cnblogs.com/yank/p/3668371.html
http://www.cnblogs.com/wayfarer/archive/2007/08/24/867987.html