Web服务的构建及其典型应用

来源 :计算机时代 | 被引量 : 0次 | 上传用户:qiuwangyang
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要: Web服务基于标准的数据格式和协议,如XML、SOAP和HTTP,不同平台和操作系统的客户和服务端可以基于同样的协议,没有障碍地通信,Web服务客户端只需标识Web服务的位置及其可以调用的方法,就可以简单地使用Web服务。微软公司的.NET框架针对Web服务提供了广泛的支持。因此研究了.NET环境下Web Services的构建、处理流程,举例说明了Web服务的典型应用。
  关键词: .NET框架; Web服务; 服务构建; 应用
  中图分类号:TP311.11 文献标志码:A 文章编号:1006-8228(2014)11-22-02
  Construction and application research of Web Services
  Luo Haitao
  (School of Informatics, Guangdong University of Foreign Studies, Guangzhou, Guangdong 510420, China)
  Abstract: Web Service is based on standard protocols such as XML, SOAP and HTTP. Client and server with different OS can communicate freely based on the same protocols. The client simply identifies the location and method of Web Service when it uses the services. The .NET Framework of Microsoft Company provides wide support to Web Services. The construction and processing of Web Services under .NET Framework are analyzed. Typical examples of Web Services are proposed.
  Key words: .NET framework; Web Services; service construction; application
  0 引言
  随着Internet的发展和深入普及,基于Internet的Web应用得到了快速发展。从早期使用HTML标记语言设计的静态网页,到使用CGI、ASP、JSP、PHP、ASP.NET开发设计的动态网站,实现的功能越来越复杂[5]。2002年微软开发出了.NET框架(.NET Framework),提供了一种开发Web应用程序,包括Web服务的全新模式,其底层用类实现,是一种面向对象的实现方法。十几年来.NET框架几经发展,已可以在这个框架下利用VB.NET、C#、C++或JScript.NET等程序语言,进行WEB应用程序设计(即通常说的动态网页/网站)、Web服务应用、Windows应用程序设计、控制台应用程序设计等。
  Web服务又叫XML Web Service,Web服务基于“简单对象访问协议”(Simple Object Access Protocol,简称SOAP)。Web服务提供在一个使用标准协议(如HTTP、XML、XSD、SOAP和WSDL)的松耦合环境中交换信息的能力,先由服务开发方开发,并发布能够完成特别应用需求的在线应用服务,其他用户或者应用软件能够通过Internet来访问并使用这项在线应用服务。XML Web Services基础结构建立在基于XML的消息通信之上,这些消息遵循服务开发方根据具体服务发布的服务说明。服务说明是用名为WSDL(Web 服务描述语言)的XML语法编写的XML文档,它定义XML Web Services要求的消息格式,起协议的作用,它定义XML Web Services的行为和功能,并指示潜在客户端如何与该服务进行交互。Web服务返回给客户端的是数据,而不是网页。Web服务技术规范仍然在飞速发展中,各种新的Web服务技术规范和定义层出不穷。各个主要的软件平台厂商如微软、IBM和SUN等公司也都不遗余力地推出各类操作系统和开发平台对Web服务提供广泛的支持。微软公司的.NET平台针对Web服务提供了广泛的支持,是一个比较适合于构建Web服务的平台。
  1 Web Services的构建及处理流程
  在.NET框架下,构建Web Services大致有三个步骤。第一步,建立一个包含Web Services的扩展名为.asmx的Web服务文件,文件中定义一个类,在类中定义提供Web Services的方法或者函数。第二步,用.NET框架提供的工具wsdl对Web服务文件进行处理,处理时可以指定名称空间(Namespace)的名字,生成SOAP代理类文件;文件中定义一个刚刚处理时指定名字的Namespace,在Namespace中定义类,类中定义提供Web服务的相应的方法和函数;如果前面的.asmx的Web服务文件指定语言为VB,则代理类为“.vb”类型文件,如果.asmx的Web服务文件指定语言为C#,则代理类为“.cs”类型文件。第三步,用vbc(对“.vb”文件)或者csc(对“.cs”文件)工具对上一步生成的SOAP代理类文件进行编译,生成“.dll”文件,再把它部署到应用程序根目录下的bin文件夹。之后,客户就可以通过该代理类调用这个Web服务。如果是Visual Studio.NET,这些工作是自动完成的,基本的步骤一样。
  客户端通过代理类访问服务端的Web服务,代理类使用XML序列化技术把请求序列化成SOAP消息。代理类发出的服务请求可以采用HTTP GET、HTTP POST或者HTTP SOAP协议。当客户端请求服务端的Web服务时,服务器的IIS把被请求的.asmx文件映射到Aspnet_isapi.dll,后者则通过请求处理管道把请求转发给ASP.NET工作进程,之后.NET框架就会通过HttpRuntime来处理这个请求。首先,该请求被送入HttpApplication实例,进入HttpModule,HttpModule完成身份验证、授权和缓冲等工作;然后HttpRuntime核实.asmx文件,注册到WebServiceHandlerFactory Handler并创建一个HTTP handler,它是WebServiceHandler的对象实例,负责处理Web服务请求。HTTP handler再把SOAP消息翻译成Web方法调用。   2 Web Services典型应用
  ⑴ Web服务返回DataSet对象[4]
  假设一个搜索引擎专门从各网站搜索体育消息,对各类消息分门别类,例如足球消息、篮球消息、田径消息等等,保存在数据库sportsnews.mdb的表“sports_news”中,每类消息设置了相应的关键字,以便查询。该搜索引擎向Internet用户提供免费查询各类消息的服务,客户端界面如图1所示。
  
  图1 体育新闻搜索服务的客户端界面
  服务器端的.asmx服务文件主要代码如下:
  Public Class SportsNews :Inherits WebService
   Public Function SearchNews(NewsType As
  string) As DataSet
  Dim connection1 As New OleDbConnection("Provider=
  Microsoft.Jet.OLEDB.4.0; Data Source=" & Server
  .Mappath("sportsnews.mdb"))
  Dim StrSql As String
  StrSql="Select * From sportsnews Where newsType
  = & NewsType & "
  Dim adptr As New OleDbDataAdapter(StrSql, connection1)
  Dim ds1 As New DataSet()
  adptr.Fill(ds1, "sportsnews")
  Return(ds1)
  End Function
  End Class
  该服务文件由wsdl工具转换为“.vb“文件,转换时指定名称空间myService1,则转换后的“.vb“文件自动产生一行代码“Namespace myService1”,后面的代码则根据.asmx文件规定,生成相应的类及相关的服务方法和函数。之后用vbc工具进行编译,生成dll文件,并将该文件部署到应用程序根目录的bin文件夹即可。
  客户端通过代理类调用Web服务,主要代码如下:
  Sub Enter_Click(Sender As Object, E As EventArgs)
  Dim ds As New DataSet()
  Dim mn As New myNews()
  ds=mn.SelectNews(keyword.Text)
  MyDataGrid.DataSource=DS.Tables(0).DefaultView
  MyDataGrid.DataBind()
  End Sub
  以下仅列出html部分中的表单form部分:
  

  请输入体育新闻关键字
    runat="server"/>
    "#BCBCBC" Width="100%" runat="server"/>
  ⑵ 利用SoapHeader传递用户凭据[3]
  如果是有偿服务,服务器端可以要求客户端提供凭据,凭据验证通过后才提供服务。下面的例子假设Web服务提供了求两个整数的平方和计算,返回整数,客户端可以通过SoapHeader传递用户名和密码,并假设用户名为Luo,密码为123才能通过验证,实际应用中可以根据客户端传递的用户凭据到数据库中查找,服务程序文件如下所示:
  namespace theNamespace {
  public class theHeader : SoapHeader {
  public string Username, Password;
  }
  public class theService {
  public theHeader sHeader;
  [WebMethod][SoapHeader("sHeader")]
  public int theSquare(int a, int b) {
  if (sHeader==null) return -1;
  string usr=sHeader.Username;
  string pwd=sHeader.Password;
  if (AuthenticateUser(usr, pwd)) return a*a+b*b;
  else return -1;
  }
  private bool AuthenticateUser(string usr, string pwd) {
  if ((usr=="Luo")&&(pwd=="123")) return true;   return false;
  }
  }
  }
  客户端程序主要代码如下:
  theService s1=new theService();
  theHeader myHeader=new theHeader();
  myHeader.Username="Luo";
  myHeader.Password="123";
  s1.theHeaderValue=myHeader;
  Response.Write(s1.theSquare(3,4));
  除了上述两种典型的方法实现Web服务应用外,还有很多其他方法应用Web服务。例如,利用WSE技术传递UsernameToken令牌以及加密SOAP消息,这是一种更加安全的应用方法。Web Services Enhancements(WSE)是微软公司发布的一种针对Web Service的增强技术,通过WSE技术可以把安全、路由、附件等技术同Web Service完美地结合在一起,通过在SOAP消息中添加一个或多个安全性凭据,对SOAP消息进行数字签名和加密SOAP消息来实现SOAP消息级别的安全性[1]。
  而异步Web服务调用也是一种可以考虑的选择。在异步调用中,向Web服务发出请求后,客户端不必等待请求结束,可以继续执行其他任务。服务器端不用特别的设置,就像普通Web服务一样即可。.NET Framework的异步调用方法的设计模式指定每个同步方法都有两个异步方法。对于每个同步方法,都有一个Begin异步方法和一个End异步方法[2]。
  3 结束语
  Web服务因为客户端和服务器端通信消息采用XML文本格式,便于不同平台系统之间的通信,因此在一个基于Web服务的模型中,客户不需要考虑服务器端使用的语言和操作系统,不同平台和操作系统的客户端和服务器端可以基于同样的协议,没有障碍地通信。客户端只需标识Web服务的位置及其可以调用的方法,就可以简单地使用Web服务。微软公司的.NET框架针对Web服务提供了广泛的支持。为了提高服务的安全性,微软的.NET框架同时提供了WSE技术(Web Services Enhancements)。WSE提供对Web服务技术规范的支持,包括WS-Routing、WS-Security和WS-Attachment。总体而言,其.NET框架是实现Web服务的简单而且便利的平台。本文举例说明了.NET环境下,Web服务的构建及其典型的应用,以供读者参考。
  参考文献:
  [1] Peter Thorsteinson,G. Gnana Arun Ganesh著,梁志敏,蔡建译,
  .NET安全性与密码术[M].清华大学出版社,2004.
  [2] J.D. Meier, Srinath Vasireddy, Ashish Babbar, Alex Mackman,
  Improving Web Services Performance. http://msdn2.microsoft.com/en-us/library/ms998562.aspx,2004.
  [3] 石志国等.ASP.NET应用教程[M].清华大学出版社,2005.
  [4] 尚俊杰.ASP.NET程序设计[M].清华大学出版社,2004.
  [5] 崔淼等.ASP.NET程序设计教程(C#版)(第2版)[M].机械工业出版社,
  2011.
其他文献
为提高C语言程序设计课程的教学质量,让学生更好地掌握核心技能,针对课程中教学难点多、语法知识多、学生重视程度不够等问题进行了认真分析,同时结合笔者在长期的教学实践过
在初中生物课堂的互动教学中,教师应通过设疑质疑、合作探究、实验创新、涉足课外等方式方法,激发学生的潜能,培养学生的创新能力,从而提高学生的综合素质。
摘 要: 依据当前先进的教育教学理念以及长期的教学实践经验,结合高职生源情况,形成以职业岗位能力培养为核心的DAP教学模式。通过Demo→Activity→Project渐进模式,逐步培养学生的专业能力,全面提升学生的职业能力。基于DAP高职教学模式,对ADO.NET课程进行改革。通过改革教学内容、开展教学资源库建设、改革课程考核方法、开拓第二课堂、加强双师型师资队伍建设等措施,取得了一定的教学成
为了解决传统写作课堂上学生练习时间不足,学生写作“修改”环节重视度不够,以及师生、生生之间交流不足的问题,文章以翻转课堂模式在高中英语写作课程教学中的运用为出发点,对翻
目的:对分离筛选获得絮凝剂产生菌Sphingomonas sp.X20絮凝特性及培养条件进行研究。方法:采用单因素和正交实验确定最适产絮凝剂培养条件。结果:研究发现,菌株X20的微生物絮凝
发展是我党的第一党务,也是外交政策的立足点.创造一个和平的外交环境,就是为了加快社会主义现代化建设的发展步伐.邓小平的国际战略思想是正确处理外交关系的行动指南.文章
现代医学模式揭示人是一个“生物-心理-社会”的综合体,护理学也由单纯的疾病护理转变到“以人的健康为中心”现代护理。随着护理学科的发展与人们物质生活水平的不断提高,人们
课外阅读是语文教育的重要组成部分。在小学阶段,要求学生达到145万字以上的阅读量,其目的旨在夯实学生语文基础,培养阅读素养。语文教师如何指导小学生的课外阅读呢?本文从培
运用测验法对浙江省跆拳道队8名女队员进行体成分与体重测量,通过现场观察法和访谈法调查冬训及体重控制情况,认为冬训体能训练使队员脂肪含量明显减少和肌肉含量明显增加,大部
在高校计算机机房建设中,布线是整个网络系统的重点.机房管理教师在布线之初必须做好前期的规划设计工作.为此,电源线和网络线的布设分为设计、施工、验收三个步骤,在保证系