文章教程

16.4Web服务的实现

8/31/2020 9:52:39 PM 人评论 次浏览

16.4 Web服务的实现

Web服务的实现就是在支持SOAP通讯的类中建立一个或多个方法,简单的说是把一些信息或逻辑对其他计算机用户公开。

16.4.1 创建Web服务

在Visual Studio 2012之中提供了创建Web服务的模板,只要使用这个模板,就可以很轻松的完成对Web服务的创建。

【实例16-1】创建简单的Web服务

本实例创建一个简单的Web服务,在应用于程序中通过调用创建的Web服务方法获得Web服务中具体内容并显示在网页中,具体实现步骤如下:

01 用启动Visual Studio 2012,创建一个ASP.NET Web空应用程序,命名为“实例16-1”。

02 用右键单击网站名称。在弹出的快捷菜单中选择“添加”|“添加新项”命令,弹出如图16-8所示的“添加新项”对话框。

alt

图16-8 “添加新项”对话框

03 选择“已安装”模板下的“Visual C#”模板,并在模板文件列表中选中“Web服务”,然后在“名称”文本框输入该文件的名称WebService.asmx,最后单击“添加”按钮。

04 在解决方案资源管理器中出现如图16-9所示Web服务的文件。发现现在多了两个文件:一个是App_Code文件夹下的Service.cs的文件,另一个是Service.asmx文件。Service.asmx就是刚才创建的Web服务文件,而Service.cs文件是该Web服务的后台代码文件,并且这个文件自动被放在了App_Code文件夹中。

alt

图16-9 解决方案资源管理器

05 双击进入Service.cs文件,文件中生成的代码如下所示:

alt

上面的代码中第1行[WebService(Namespace = "http://tempuri.org/")]指出这个类是一个Web服务,并使用Namespace指出服务的唯一标示符即命名空间。第2行的[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]中ConformsTo属性指出了这个Web服务遵循的标准。第5行定义了一个名为Service的类,该类继承于System.Web. WebService,在ASP.NET中,所有的Web服务类都会继承于System.Web.WebService类。该类包含一个构造函数,一般情况下可以不需要该构造函数。第11行~第13行还包含一个服务方法HelloWorld,这其实是一段示例代码,告诉开发人员如何编写Web服务。方法HelloWorld很简单,和一般类的方法没有什么区别。删除第12行代码,编写新的代码如下:

alt

以上代码返回一个字符串文本对象。

这里要注意的是HelloWorld方法上面第10行添加了一个名为WebMethod的属性,该属性用来标志方法可以被远程的客户端访问。WebMethod包含6个属性用来提供描述它所标识方法的接口,WebMethod属性如表16-4所示。

表16-4 WebMethod的属性

alt

06 双击打开Service.asmx文件,生成代码如下:

alt

在文件中只有一句代码,其中,@WebService指令说明这是一个Web服务,Language属性设置后台代码采用C#来编写,CodeBehind属性设置后台代码在程序中的目录地址。Class属性设置Web服务类的名字。

16.4.2 测试Web中的操作

通过上面一节创建好了一个Web服务,接着将测试这个Web服务是否可用,具体步骤如下:

01 按Ctrl+F5快捷键运行程序,效果如图16-10所示。该页面显示了服务的名称和所有的操作列表即服务的目录。

alt

图16-10 显示服务页面

02 单击图中仅有的一个名为Hello World的操作,弹出如图16-11所示的测试Hello World的操作页面。

alt

图16-11 Web服务测试页面

03 单击“调用”按钮,显示该操作的结果,呈现一个包含如图16-12所示的XML文档信息的页面。返回了字符串“一个简单的Web服务!”。这是通过Service.cs文件中定义的方法HelloWorld实现的。

alt

图16-12 获得操作结果

16.4.3 引用和调用Web服务

通过以上步骤,一个完整的Web服务已经创建成功,接着需要把该服务添加到应用程序中,具体步骤如下:

01 用右键单击网站名称,在如图16-13所示的快捷菜单中选择“添加Web引用”菜单命令,弹出如图16-14所示的“添加Web引用”对话框。

alt

图16-13 添加Web引用

alt

图16-14 添加Web引用对话框

02 单击“高级”按钮,弹出如图16-15所示的“服务引用设置”对话框。

alt

图16-15 “服务引用设置”对话框

03 单击“添加Web引用”按钮,弹出如图16-16所示的“添加Web引用”对话框。

alt

图16-16 “添加服务引用”对话框

04 “添加服务引用”对话框中有三个选项链接:“此解决方案中的Web服务”选项用于添加创建在应用程序中的Web服务;“本地计算机上的We服务”用于添加在本地机器中存在的Web服务;“浏览本地网络上的UDDI服务”用于添加在互联网中存在的Web服务。由于前面创建的Service.asmx保存在应用程序中,所以此处选择单击“此解决方案中的Web服务”选项,弹出如图16-17所示的“显示Web服务”对话框。

alt

图16-17 显示所有服务

05 在“显示Web服务”对话框中可以看到本解决方案中所有存在的Web服务。单击WebService服务名称,弹出如图16-18所示的“显示操作目录”对话框。

alt

图16-18 “显示操作目录”对话框

06 在对话框中可以看到Web服务所在的URL路径,Vistual Studio 2012能够根据这个路径找到该Web服务。可以修改Web引用名为localhost,最后单击“添加引用”按钮。

07 这时网站文件目录结构发生了如图16-19所示的变化。在“解决方案资源管理器”窗口中多了一个文件夹App_WebReferences,其中还包含了一个子文件夹MyWebService,里面有三个文件,都以服务的名字为文件名,分别以.disco、discomap、wsdl为扩展名。这三个文件和前面介绍的Web服务标准相对应。

alt

图16-19 解决方案资源管理器

08 在网站根目录中创建一个名为Default.aspx的窗体文件。

09 单击Default.aspx文件,打开“视图设计器”,进入到“源视图”,编写代码如下:

alt

以上代码在页面上添加了一个服务器标签控件Label1。

10 单击网站根目录下的Default.aspx.cs文件,在窗体加载事件Page_Load事件中添加如下代码:

alt

上面的代码中第1行先实例化Web服务WebService对象lw,然后在第2行通过调用服务中的HelloWorld方法就能实现使用Web服务的功能。

11 按快捷键Ctrl+F5运行程序的结果如图16-20所示。

alt

图16-20 程序运行结果

教程类别