使用.net 2.0调用远程WCF服务,即把WCF服务当成一个web service服务来调用。但是因为WCF封装问题,特别是发布到远程服务器上的WCF,使用客户端调用还真出现不少问题。
下面用三个方面来阐述这个问题:WCF服务端、生成客户端代理文件、出现的问题
一、WCF服务端
因为使用的是2.0调用WCF服务,所以把binding配置成basicHttpBinding,即使用简单的HTTP协议进行服务调用。
1、配置文件:
把WCF配置成相应的binding,在发布前可先不管地址问题
<system.serviceModel>
<services>
<service behaviorConfiguration="NWS.WCFService.Service1Behavior" name="NWS.WCFService.NWSService">
<host>
<baseAddresses>
<add baseAddress="http://localhost:5678/NWSService.svc" />
</baseAddresses>
</host>
<endpoint address="" binding="basicHttpBinding" contract="NWS.Interface.INWSService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="NWS.WCFService.Service1Behavior">
<!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false 并删除上面的元数据终结点-->
<serviceMetadata httpGetEnabled="true"/>
<!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息-->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
2、程序业务逻辑:
这里省略,可自己想像一个业务需求,假如一个下载配置文件的需求,方法名为DownloadConfig()
3、测试本地WCF服务:
使用WCFTestClient工具。
VS命令提示工具(2008以上),输入:
这时会弹出WCF客户端测试工具
使用VS自带的测试工具,将能快速高效的完成WCF服务的测试。
二、生成代理类
1、wsdl生成
打开visual studio 2008 命令提示工具,定位到放置代理类文件的路径,在本例中使用的是d盘。
输入以下命令:
wsdl http://localhost:5678/networkspeedservice.svc?wsdl
系统提示正在写入文件,如下图。
其实这个方法生成的代理类,将以webservice的SOAP协议去请求WCF服务,所以WCF只能使用的协议是basic模式。但这个在.net 2.0的应用程序开发过程中,却是很有用的一种办法。
2、svcutil生成WCF客户端代理类与配置文件
除了使用基本的WSDL的方式访问WCF服务外,.NET 3.0以上的应用程序,可以使用svcutil的命令生成WCF客户端调用代理,并会生成一个配置文件。
把生成的代理类融入项目中即可调用WCF服务了。
三、出现的问题
额,因为这草稿放好几年了,忘了这边有什么问题了。等想起来再补上吧。