本文以Visual Studio 2012为例讲解,但是据我所知,跟VS2010相比,除了代码的.NET平台,其它基本没什么区别。
抛开各种Contract、Config文件不提,直接开始:
1、新建一个空白解决方案:【文件】-【新建】-【新建项目】-【已安装】-【模板】-【其他项目项目类型】-【空白解决方案】,命名为【Kinoo.WCF】
2、添加新建项目,选择【WCF服务库】项目,命名为【Kinoo.WCF.ServiceLibrary】
建立完成后,解决方案如下图所示:
3、不写任何代码,直接右键单机新建的项目,选择【调试】-【启动新实例】,任务栏会出现以下图标:
4、稍后打开了如下界面:
5、开始调试:先不管这个Test客户端哪里来的,直接双击IService1下面的【GetData】,在右侧输入一个数字,然后点击【Invoke】
无视下面这个对话框,直接点【OK】
执行结果如下:
6、OK,至此,一个最简化版的WCF服务器端、客户端完成了。
下面开始讲解几处原理:
1、WCF开发需要了解无尽的入门知识才可以开发的,怎么现在服务器端就执行了呢?
.NET在提供WCF技术时就提供了内置的服务器端、测试客户端,但是各种入门书籍似乎不屑于提这个,搞得大家都头大了。
Visual Studio 更是将这个功能集成了进来。
2、Visual Studio凭什么判断这个项目是WCF服务器端?
右键单机项目,选择【卸载项目】,项目变为不可用,再右键单机此项目,选择【编辑xxx.csproj】,在弹出的编辑框,找到如下这行:
<ProjectTypeGuids>{3D9AD99F-2412-4246-B90B-4EAA41C64699};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
这个GUID是所有WCF项目统一的,Visual Studio写死的,Visual Studio会据此自动确认此项目是否是一个WCF服务器端项目。
看完这个GUID后,右键单机项目,选择【重新加载项目】,项目就又恢复了。
3、WCF服务器端,为什么调试时还能自动启动一个调试客户端?
右键单机项目属性,选择【调试】,可以看到下面有一行命令行参数。意思是:调试此项目时,自动打开【WCF测试客户端】
5、WCF Test Client界面中有个ConfigFile 和项目中的app.config文件不一样,为什么?
双击Test Client中的Config File会打开此文件,看看标题上这文件叫什么:【Client.dll.config】意思是,这是客户端的配置文件。于是建立客户端的配置,有了一个捷径,如果您建立了一个客户端,将此配置文件中的文件Copy过去,就可以了,不用自己再手动写连接服务器该怎么配置。但是一般来讲,Visual Studio连这个Copy的机会也不会给你,会自动给你做好,后面的章节会介绍到。
OK,至此,服务器端,勉强OK了!之所以说勉强,是因为实际应用中需要有一个真正的主机来Host【宿主】这个服务器端,不着急,下一节开始讲。