Web Service是一个面向服务的架构(SOA),不依赖于语言,不依赖于平台,可以实现不同的语言间的相互调用,通过Internet进行基于Http协议的网络应用间的交互。基于.NET平台,可以使用Visual Studio来开发Web Service。不同于Java平台,需要使用开源组件(Axis2、CXF等),微软直接在Visual Stuido里集成了开发Web Service的功能,使用起来非常方便。
下面基于.NET Framework 3.5,使用Visual Studio 2010来开发Web Service,包括创建、发布、部署、调用等步骤。
1. 创建Web Service
打开VS2010,点击菜单栏“文件”按钮,选择“新建”--“项目”,如下图所示:
在弹出的新建窗体中,在左侧“已安装模板”列表选择“Viusal C#”-“Web”,选择“.NET Framework 3.5”框架,在应用程序模板中选择“ASP.NET Web 服务应用程序”,在下面名称输入框中输入项目名“DotNetWebServiceDemo”。
(需要注意的是,由于微软在.NET 3.5之后推行WCF作为支持数据通信的应用程序框架,所以在.NET4.0及以后版本的应用程序模板中找不到“ASP.NET Web 服务应用程序”)
新建成功之后,出现如下界面,系统自动新建了一个名为“Service1”的服务,其中有一个“HelloWorld”方法。
继续添加两个方法,“sayHelloToPerson”和“plusXandY”,提供的服务如下图所示:
至此,Web Service创建完成。
2. 发布Web Service
在右侧解决方案列表,右键项目解决方案,在弹出的菜单中选择“发布”。
在弹出的传统中,发布方法选择“文件系统”,目标位置选择桌面,并加上项目名称。
点击“发布”按钮,发现桌面上生成了一个文件夹,里面内容如下图所示,说明Web Service发布成功了。
3. 部署Web Service
打开IIS,在左侧列表中,右键点击“网站”,在弹出的菜单中选择“添加网站”。在添加网站窗体中,输入网站名称,物理路径选择上一步发布成功的目录,输入端口,点击“确定”按钮。
部署成功之后,发现左侧网站列表多了刚才新部署的网站。
打开浏览器,在地址栏中输入http://localhost:8889/Service1.asmx,敲击回车发现由于权限不足无法读取配置文件。
找到网站物理路径所在文件夹,右键文件夹,选择“属性”;在弹出的属性窗体中选择“安全”。
点击“编辑”按钮,添加“Authenticated Users”,设置权限为完全控制,点击确定按钮。
重启网站之后,再次访问地址,出现如下界面,说明Web Service部署成功了。
点击“服务说明”,可以查看Web Service的WSDL描述文件。
4. 调用Web Service
在VS2010中新建了一个WinForm窗体程序,如下图所示:
在右侧解决方案列表中,右键点击解决方案,在弹出的菜单中选择“添加服务引用”。
在弹出的窗体中,在地址中输入“http://localhost:8889/Service1.asmx”,点击“前往”按钮,发行在服务列表中多了“Service1”服务,在命名空间中输入“DoNetWebServiceDemo”,点击“确定”按钮。
添加完成之后,发行在项目解决方案文件列表中,“Service References”多了刚才我们引用的Web Service。
在添加Web Service应用之后,我们需要找到调用Web Service需要使用的类。在“Service References”下,右键点击引用的Web Service,在弹出的菜单中选择“在对象浏览器中查看”,即可查看到添加的Web Service的命名空间了。通常情况下,我们用来调用Web Service的类以Web Service的名字开头,以“Client”作为结尾,在这里就是Service1SoapClient。
在窗体的.cs文件里,首先引用导入的命名空间,然后命名空间下的“Service1SoapClient”类就可像调用本地方法一样调用远程Web Service了。
完成编码之后,运行Windows窗体程序,效果如下: