问题:a公司使用wcf 发布服务(.net Framework 3.0 or 3.5),b公司需要使用a公司发布的服务 ,但b公司目前阶段只使用.net Framework2.0(.net Framework 2.0不支持wcf),如果要调用a公司wcf 服务,那怎么办呢?
一、先上wcf 代码(这里懒得写了,借用microsoft公司发布的wcf? samples):

 namespace?Microsoft.ServiceModel.Samples
 {
 ????//?NOTE:?If?you?change?the?interface?name?"IService1"?here,?you?must?also?update?the?reference?to?"IService1"?in?Web.config.
 ????[ServiceContract,?XmlSerializerFormat]
 ????public?interface?ICalculator
 ????{
 ????????[OperationContract]
 ????????double?Add(double?n1,?double?n2);
 ????????[OperationContract]
 ????????double?Subtract(double?n1,?double?n2);
 ????????[OperationContract]
 ????????double?Multiply(double?n1,?double?n2);
 ????????[OperationContract]
 ????????double?Divide(double?n1,?double?n2);
 ????}

 ????public?class?CalculatorService?:?ICalculator
 ????????{
 ????????????public?double?Add(double?n1,?double?n2)
 ????????????{
 ????????????????return?n1?+?n2;
 ????????????}

 ????????????public?double?Subtract(double?n1,?double?n2)
 ????????????{
 ????????????????return?n1?-?n2;
 ????????????}

 ????????????public?double?Multiply(double?n1,?double?n2)
 ????????????{
 ????????????????return?n1?*?n2;
 ????????????}

 ????????????public?double?Divide(double?n1,?double?n2)
 ????????????{
 ????????????????return?n1?/?n2;
 ????????????}
 ????????}
 }
?
配置文件:

 <?xml?version="1.0"?encoding="utf-8"??>
 <configuration>
 ??<system.serviceModel>
 ????<services>
 ??????<service
 ??????????name="Microsoft.ServiceModel.Samples.CalculatorService"
 ??????????behaviorConfiguration="CalculatorServiceBehavior">
 ????????<endpoint?address=""
 ??????????????????binding="basicHttpBinding"
 ??????????????????contract="Microsoft.ServiceModel.Samples.ICalculator"?/>
 ??????</service>
 ????</services>
 ????<behaviors>
 ??????<serviceBehaviors>
 ????????<behavior?name="CalculatorServiceBehavior">
 ??????????<serviceMetadata?httpGetEnabled="True"/>
 ??????????<serviceDebug?includeExceptionDetailInFaults="False"?/>
 ????????</behavior>
 ??????</serviceBehaviors>
 ????</behaviors>
 ??</system.serviceModel>
 </configuration>
?
运行,记录服务地址。
二、使用wsdl工具将wcf service生成asp.net webservice方式。
start --->运行--->cmd --->cd C:/Program Files/Microsoft SDKs/Windows/v6.0A/bin? 回车。
输入wsdl 服务地址。例(wsdl http://localhost:8571/Service1.svc )便生成相应的类似asp.net webservice代理类的文件。文件地址亦在上面bin中。
新建Console application (net Framework 2.0),添加刚刚生成的代理类。调用:
调用代码:

 ?class?Client
 ????{
 ????????static?void?Main()
 ????????{
 ????????????//?Create?a?client?to?the?CalculatorService
 ????????????using?(CalculatorService?client?=?new?CalculatorService())
 ????????????{
 ????????????????//?Call?the?Add?service?operation.
 ????????????????double?value1?=?100.00D;
 ????????????????double?value2?=?15.99D;
 ????????????????double?result?=?client.Add(value1,?value2);
 ????????????????Console.WriteLine("Add({0},{1})?=?{2}",?value1,?value2,?result);

 ????????????????//?Call?the?Subtract?service?operation.
 ????????????????value1?=?145.00D;
 ????????????????value2?=?76.54D;
 ????????????????result?=?client.Subtract(value1,?value2);
 ????????????????Console.WriteLine("Subtract({0},?result);

 ????????????????//?Call?the?Multiply?service?operation.
 ????????????????value1?=?9.00D;
 ????????????????value2?=?81.25D;
 ????????????????result?=?client.Multiply(value1,?value2);
 ????????????????Console.WriteLine("Multiply({0},?result);

 ????????????????//?Call?the?Divide?service?operation.
 ????????????????value1?=?22.00D;
 ????????????????value2?=?7.00D;
 ????????????????result?=?client.Divide(value1,?value2);
 ????????????????Console.WriteLine("Divide({0},?result);

 ????????????}

 ????????????Console.WriteLine();
 ????????????Console.WriteLine("Press?<ENTER>?to?terminate?client.");
 ????????????Console.ReadLine();
 ????????}
 ????}
?
?配置文件:
?
?

<?xml?version="1.0"?encoding="utf-8"??> <configuration> ??<appSettings> ????<add?key="CalculatorServiceAddress"?value="http://localhost:8571/Service1.svc"/> ??</appSettings> </configuration>
运行,即可成功调用。
项目完整代码。http://files.cnblogs.com/yiyisawa/wcfclienttowebservice.rar
(完)
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|