今天上导师的课,在里课堂里提到WCF Web Service创建者在设计此项技术时的一个基本原则:“服务具有自主性:服务及其客户端同意它们之间的接口,但相互独立。它们可以采用不同的语言编写。#t#
可以使用不同的运行时环境(如 CLR 和 Java 虚拟机),可以运行在不同操作系统上,还可以存在其他方面的不同。” 我想这就说明 Indigo 的 Service 可以发布成一个标准的WCF Web Service ,客户端可以是任意语言编写的程序,只要它能通过WCF Web Service 的方式与其他程序交互。
我做了以下尝试:
1. 用 WCF 写一个 Service。
- <configuration
- xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
- <system.serviceModel>
- <services>
- <service name="WcfServer.MathService"
- behaviorConfiguration="MathServiceBehavior">
- <host>
- <baseAddresses>
- <add baseAddress="http://localhost:8000/MathService"/>
- baseAddresses>
- host>
- <endpoint
- address=""
- binding="basicHttpBinding"
- contract="WcfServer.IMath"/>
- service>
- services>
- <behaviors>
- <serviceBehaviors>
- <behavior name="MathServiceBehavior">
- <serviceMetadata httpGetEnabled="True"/>
- <serviceDebug includeExceptionDetailInFaults="False" />
- behavior>
- serviceBehaviors>
- behaviors>
- system.serviceModel>
- configuration>
- 2. 运行这个程序启动 WCF 服务
- 3. 用 WSDL 工具生成一个代理类
- 在控制台中输入:wsdl http://localhost:8000/MathService?wsdl
- 4. 创建一个客户端工程,把生成的代理加入这个工程中:
- namespace UsingWebServiceMode
- {
- class Program
- {
- static void Main(string[] args)
- {
- MathService proxy = new MathService();
- int result;
- bool resultSpecified;
- proxy.Add(4, true, 5, true, out result, out resultSpecified);
- Console.WriteLine(result);
- Console.WriteLine(resultSpecified);
- Console.ReadLine();
- }
- }
- }
我的最终目的是要让 Java 写的程序与WCF 技术实现的Service进行交互,要想让 Java 的程序和.Net的程序交互,我想最好的方法就是WCF Web Service 。我写的那些代码就是想先试一下C# 的代码能否用WCF Web Service 的方式与WCF技术实现的Service 进行交互,但现在的问题是我没法精确控制这个WCF Web Service 的接口。