使用Visual Studio 开发、调试WCF入门-1-零代码开发、调试WCF服务器端。HelloWorld

时间:2022-09-03 16:52:13

本文以Visual Studio 2012为例讲解,但是据我所知,跟VS2010相比,除了代码的.NET平台,其它基本没什么区别。

 

抛开各种Contract、Config文件不提,直接开始:

1、新建一个空白解决方案:【文件】-【新建】-【新建项目】-【已安装】-【模板】-【其他项目项目类型】-【空白解决方案】,命名为【Kinoo.WCF】

使用Visual Studio 开发、调试WCF入门-1-零代码开发、调试WCF服务器端。HelloWorld

2、添加新建项目,选择【WCF服务库】项目,命名为【Kinoo.WCF.ServiceLibrary】

使用Visual Studio 开发、调试WCF入门-1-零代码开发、调试WCF服务器端。HelloWorld

建立完成后,解决方案如下图所示:

使用Visual Studio 开发、调试WCF入门-1-零代码开发、调试WCF服务器端。HelloWorld

3、不写任何代码,直接右键单机新建的项目,选择【调试】-【启动新实例】,任务栏会出现以下图标:

使用Visual Studio 开发、调试WCF入门-1-零代码开发、调试WCF服务器端。HelloWorld

4、稍后打开了如下界面:

使用Visual Studio 开发、调试WCF入门-1-零代码开发、调试WCF服务器端。HelloWorld

5、开始调试:先不管这个Test客户端哪里来的,直接双击IService1下面的【GetData】,在右侧输入一个数字,然后点击【Invoke】

使用Visual Studio 开发、调试WCF入门-1-零代码开发、调试WCF服务器端。HelloWorld

无视下面这个对话框,直接点【OK】

使用Visual Studio 开发、调试WCF入门-1-零代码开发、调试WCF服务器端。HelloWorld

执行结果如下:

使用Visual Studio 开发、调试WCF入门-1-零代码开发、调试WCF服务器端。HelloWorld

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后,右键单机项目,选择【重新加载项目】,项目就又恢复了。

使用Visual Studio 开发、调试WCF入门-1-零代码开发、调试WCF服务器端。HelloWorld

3、WCF服务器端,为什么调试时还能自动启动一个调试客户端?

右键单机项目属性,选择【调试】,可以看到下面有一行命令行参数。意思是:调试此项目时,自动打开【WCF测试客户端】

使用Visual Studio 开发、调试WCF入门-1-零代码开发、调试WCF服务器端。HelloWorld

5、WCF Test Client界面中有个ConfigFile 和项目中的app.config文件不一样,为什么?

双击Test Client中的Config File会打开此文件,看看标题上这文件叫什么:【Client.dll.config】意思是,这是客户端的配置文件。于是建立客户端的配置,有了一个捷径,如果您建立了一个客户端,将此配置文件中的文件Copy过去,就可以了,不用自己再手动写连接服务器该怎么配置。但是一般来讲,Visual Studio连这个Copy的机会也不会给你,会自动给你做好,后面的章节会介绍到。

使用Visual Studio 开发、调试WCF入门-1-零代码开发、调试WCF服务器端。HelloWorld

 

OK,至此,服务器端,勉强OK了!之所以说勉强,是因为实际应用中需要有一个真正的主机来Host【宿主】这个服务器端,不着急,下一节开始讲。