这几天再配置 wcf 记录一下
1.服务端
<services>
<service name="BondDBService.Host.Lib.BondDataService" behaviorConfiguration="customBehavior">
<endpoint binding="netTcpBinding" bindingConfiguration="netCustomBinding" contract="Pengyuan.ServiceContract.BondDB.IBondDataService" address="" />
<endpoint binding="mexTcpBinding" contract="IMetadataExchange" address="mex" />
<host><baseAddresses><add baseAddress="net.tcp://localhost:12347/BondDataService"/> </baseAddresses>
</host>
</service>
<service name="Pengyuan.ServiceContract.Impl.BondDB.BondDataService" behaviorConfiguration="customBehavior">
<endpoint address="" binding="netTcpBinding" bindingConfiguration="netCustomBinding" contract="Pengyuan.ServiceContract.BondDB.IBondDataService"/>
<endpoint binding="mexTcpBinding" contract="IMetadataExchange" address="mex" />
<host><baseAddresses><add baseAddress="net.tcp://localhost:12347/Impl/BondDataService"/> </baseAddresses> </host>
</service>
</services>
服务端的 发布的服务是放在Services 里面的 ,里面的每个Service对应一个服务,每个服务有:行为配置,协议配置,地址,名称,接口协议
名称 ,对于每个服务来说,就是服务的实现。
行为配置,一般在服务名称后面,有的是必须的,比tcp服务的协议的服务就必须有个行为的配置,以通过交换接口IMetadataExchange 开放出 服务协议
协议配置 这个就是传说的b了。b里面东西挺多的,有个传输模式如下,可以用流或者缓存方式,配不对会报 “组帧模式” 的错误。
<netTcpBinding>
<binding name="netCustomBinding" transferMode="Streamed" maxReceivedMessageSize="2147483647">
</binding>
</netTcpBinding>
地址 就是传说的a了
接口协议,一般就是接口的全名称
svc文件其实可以不要的,只要在配置文件里加上,
<serviceHostingEnvironment multipleSiteBindingsEnabled="true">
<serviceActivations>
<!--Impl svc-->
<add relativeAddress="" service="Pengyuan.ServiceContract.Impl.BondDB.BondDataService"/>
</serviceActivations>
</serviceHostingEnvironment>
第二个服务就不需要svc文件。
引用nettcp服务的时候要加上mex ,生成代理,比如
net.tcp://localhost:12347/Impl/BondDataService/mex
更清楚的,引用一下:http://www.cnblogs.com/TivonStone/archive/2011/05/11/2043694.html
客户端:客户端引用有几种方式,其实是一种。
浙公网安备 33010602011771号