上篇文章中,我们讲述了如何创建客户端和配置文件。使用asmx,就必须有一个代理类。要使用这些配置文件以及其他文件,就需要一个新的控制台应用程序,并将这些文件添加进去。注意不要忘了添加System.ServiceModel引用。一旦做完了上面的步骤,就能顺利编译了。
首先,创建一个HelloClient的实例,这样,就能读取客户端上的应用程序配置信息了。但是,连接只会在第一次调用的时候进行。创建完实例时候,就能调用HelloWorld的操作了。注意,HelloComputer是没有暴露出来的,因为我们并没有在接口中给他加上OperationContractAttribute属性。除了产生的这些配置文件,不需要再写任何代码,我们就能进行调用了。
1 static void Main(string[] args)
2 {
3 Console.WriteLine("Press any key when the service is available...");
4 Console.ReadKey();
5
6 HelloClient client = new HelloClient();
7
8 string msg = client.HelloWorld();
9
10 Console.WriteLine("The message is : {0}", msg);
11 Console.WriteLine("Press any key to quit...");
12 Console.ReadKey();
13 }
第六行创建了一个HelloClient的实例,在第8行我们调用了这个服务。第10行在控制台窗口中显示出调用服务得到的信息。注意第3行和第4行,在运行两个组件(注:一个服务,一个客户端)时,需要一种手段,在等候直到用户交互后,才允许服务开始和运行。有两种方法运行这个组件,第一种方法就是在Project上点击右键,选择Debug, 再选择Start new instance;第二种方法是右键点击解决方案,选择Set StartUp Projects...,然后选择单选选项Multiple startup projects。然后让两个项目一并运行。这样的话,只要按了F5键,两个项目就会同时运行了。
客户端程序配置
查看一下客户端程序(就是调用服务的这个控制台应用程序啦)的配置,就能看到许多关于basicHttpBinding的信息,但是此时这个并非最重要的。其他诸如timeouts, message encoding等等之类的配置,也可以暂且抛之脑后,采用缺省值即可。最重要的就是“client”节点下的信息,如下所示。
<client>
<endpoint address="http://localhost:8080/HelloService/" binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_IHello" contract="IHello"
name="BasicHttpBinding_IHello" />
</client>
WCF ABC又来了,哈哈,这些信息都是由Service Utility (svcutil.exe)自动导入的,现在他们都在客户端类里了。这样我们就设置好了一个服务和一个客户端。注意,二者目前都运行在同一台机器上,但是我们可以把二者中的任意一个放置到世界上任何一台电脑上,也能实现*连通,但是可能会因为网络等问题感觉有些延迟。
你可以下载完整的源代码, 自己试着去探究一下。在继续探索Windows Communication Foundation的世界并搞定WCF ABC之前,我们还是回头看看之前的预热一下吧。:)
注:要查看原始文章,请看这里的全部索引。