论文部分内容阅读
摘要:随着互联网的发展,各种应用系统之间的信息共享诉求越来越强烈。基于WebService进行数据查询程序的开发,可以满足不同程序间的信息共享需求。在校园信息系统的开发中也不例外。文章以一个学生信息查询接口的设计为切入点,详细介绍了如何基于C#语言,利用WebService开发出基于Web的API接口,以作为各个系统间共享数据的来源,为“互联网 ”时代下的程序开发工作提供了重要参考。WebService接口的实现,为信息系统的数据共享提供了可能,有效保证了单位内部信息传达的实时性和一致性。
关键词: WebService;通信;信息共享;C#;校园信息
中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2018)20-0243-03
1 WebService概述及应用场合
1.1 WebService简介
在互联网环境下,应用程序往往需要从Internet或者Intranet上接收其他应用传递过来的请求并进行处理。WebService就是这么一种处理的技术,它全称XML Web Service,是一种轻量级的信息处理技术。它使用SOAP在Web上提供的软件服务,以WSDL文件作为说明文档,并通过UDDI进行注册。
WebService以 HTTP 协议为基础,通过 XML 进行客户端与服务器端的通信,其通信架构如图1所示。
图1 通信架构图
WebService其实是在实现应用程序间的通信。现时主流的程序通信方法有两种,通过RPC(远程过程调用)和消息传递。使用RPC协议,客户端对服务器上的远程过程进行调用,完成一个远程对象的实例化并调用其方法和属性。RPC力求达到一种透明性,就是服务器显露出远程对象的接口,而客户端就如同在本地使用这些对象的接口一样。这样一来,底层的信息就被隐藏了,客户端不需要知道服务器端对象是在哪台机器上。
1.2 WebService的基础工具及协议
WebService平台需要一套工具及协议来帮助分布式应用程序的创建。要实现不同平台间数据的互通,WebService必须使用一套标准的协议进行数据处理。这些工具及协议有:
XML(Extensible Markup Language):可扩展标记语言,是一种独立于各种程序和平台的结构化数据描述方式,是SOAP的基础。
SOAP(Simple Object Access Protocol):简单对象存取协议。SOAP是WebService的基础。当用户通过UDDI找到源系统的WSDL描述文档后,便可以通过SOAP调用源系统建立的Web服务中的一个或多个操作。SOAP以XML文档形式规范地描述调用方法,它可以支持如HTTP(S)或者SMTP等多种底层接口。
WSDL(Web Services Description Language):使用XML语法规则写成的WSDL文件,用于说明一组SOAP协议产生的消息以及交换这些消息的方法。大多数下应用软件能自动生成和使用WSDL。
UDDI (Universal Description,Discovery and Integration) :针对Web服务供应商和使用者所使用的项目。UDDI是一种根据描述文档来引导系统查找相应服务的机制。UDDI利用SOAP消息机制来发布、编辑、浏览以及查找注册信息。UDDI使用XML来封装不同类型的数据,并发送到注册中心或者接收注册中心返回需要的数据。
1.3 使用WebService的优点
1) WebService实现了跨平台,弥补了各种平台不兼容的缺陷。WebService采用HTTP协议工作,而每一台访问Web的主机,都使用HTTP协议来通信,另外,大部分防火墙也接收HTTP协议的请求。使用WebService,可以方便、安全地实现通信。
2)WebService实现了跨语言,使各种语言开发的应用能互相共享数据。基本上每一种编程语言都支持XML文本解析,使用WebService产生的基于XML格式的数据,可以被各种语言开发的应用所读取,实现了不同语言之间的通信。例如Java语言开发的服务端程序,可以与用C或C#语言开发的客户端利用XML进行通信,实现数据共享。
2 WebService的应用场合
1)跨防火墙的通信
现时,全国技工学校学籍管理系统、学生资助管理系统等一系列的应用在全国各地职业类学校全面铺开使用,为全国各地监控、管理、共享技工院校的学生信息提供了方便。面对分布在全国各地的院校用户,其校园信息系统使用不同的平台,也架设了防火墙或代理服务器,客户端和服务器之间的通信是一个难题。
为解决这个难题,传统的做法是以浏览器作为客户端,服务器端以ASP、PHP等技术,通过编写一系列动态页面,包含数据查询处理逻辑的中间层组件,对客户的输入进行处理并以HTML的形式返回给客户。这样做的结果是开发难度大,程序很难维护。
另外一种做法是,使用WebService开发一个API接口作为中间层,让各院校的本地程序通过该接口直接调用服务器的数据。访问WebService,可以通过由Microsoft SOAP Toolkit或.NET等编写的SOAP客户端,也可以通过用户自定义的SOAP客户端,然后将其和本地应用程序连接起来。利用WebService,既减少了代码复杂度和程序开发工作量,也增强了应用程序的可维护性。
2)实现软件和数据重用
除了重用代码,在重用数据方面,WebService也同样出色。使用WebService,在互联网的环境下,程序只需要直接调用远端的WebService,就可以使用相应的服务和数据。例如,要获取全国各地实时的天气情况,只需把获取请求直接发送给中国国家气象局等官方提供的WebService,它就会帮你查阅相关的信息并返回。这样的需求如果要通過组件重用来实现是很难的,因为程序运行的平台必须下载并安装好包含所有地区天气信息的数据库,即便如此,该数据库还不能实时更新,与官方提供的数据同步。 现在比较流行的另一种软件重用,是在网站上将几个应用程序的功能加以集成。例如,要建立一个综合性的门户站点,让用户在站内可以查询天气、交通状况,了解股市行情,可以在线浏览各大电商站点的产品并下订单,在线订票等,这在很多网站上已经实现。各种服务机构将查询快递、订票等单一的功能通过WebService提供给外部,门户网站就可以迅速地将这些功能整合到自身,为用户提供友好的查询界面,使用户在一个站点上就可以使用多种生活信息服务,非常便利。
从以上应用可以看出,WebService在完成基于Web的交互性操作或实施远程调用、分布式共享的时候是最有用的。
3 WebService实例——学生查询接口的实现
下面以校园信息系统中学生信息查询接口的实现为例,详细说明WebService在.NET下的开发过程。在实际的应用中,为了安全起见,如果需要调用接口,还需要程序实现身份的验证过程,例如用MD5加密验证来确保调用接口的安全性。该实例在Visual Studio 2010开发环境下调试完成。程序所使用的学生信息表其结构主要字段如表1所示。
1) 创建Web服务程序并编写学生信息查询代码,如图2所示。[using System;
…… //省略部分引用代码
using System.Collections;
namespace WebService
{
///
/// StuAPI 的摘要说明
///
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允許使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
// [System.Web.Script.Services.ScriptService]
public class CommonService : System.Web.Services.WebService
{
///
/// 返回学生数据列表以及学生详情
///
///
[WebMethod]
public List GetStudentListDetail(string strWhere)
{
DataSet ds;
StringBuilder strSql = new StringBuilder();
strSql.Append("select SSI_ID,SSI_PSW,SSI_StudentNo,SSI_Name,SSI_Sex_out,DSB_ID,DSB_BlockName,CGI_ID,CGI_Name,CCI_ID,
CCI_Name,CDep_ID,CDep_Name,CCI_IsGraduate");
strSql.Append(" FROM STU_V_StuInfo ");
if (strWhere.Trim() != "")
{
strSql.Append(" where " strWhere);
}
ds = DbHelperSQL.Query(strSql.ToString());
return (new kangkai.verp.BLL.Stu.STU_V_StuInfo()).DataTableToListWS(ds.Tables[0]);
}
}
} ]
2) 部署到服务器后,调用API接口,如图3所示。
3) 输入条件即可查询到接口数据,返回结果如图4所示。
[<?xml version="1.0" encoding="UTF-8"?>
-
-
10643
1020432905
袁灿燊
男
智能制造系
13数控高级1班
…… //省略部分返回结果
]
4 小结 本文通过校园信息系统中学生信息查询接口的实现,介绍了.NET环境下以C#语言编写WebService过程。从全国技工院校学生信息管理系统、跨公司的商务交易集成、天气预报数据获取等实际应用可以看到,通过利用WebService,达到了各个不同系统之间数据共享之目的,突破了不同语言下的应用不能互相兼容的障碍,实现了异构系统之间的整合与统一。当然,WebService也不是万能的。在某些场合的开发中,就不适宜采用WebService,例如:
1) 单机应用程序的开发
目前,单机的桌面应用程序还有一定的市场,这些程序一般只需要与本机上的其他应用通信,不需要通过HTTP传输数据。这样的话,最好不要用WebService,只采用本地的API就可以了,或者编写COM也是不错的选择,因為它体积小,运行速度快。同样,在一台服务器上运行的服务器软件也是这样,最好直接使用COM或其他本地的API来进行应用程序间的调用。当然WebService也能在这些场合使用,但开发的成本较高,对机器资源的消耗较大。
2) 同构应用程序的开发
在某些应用中,几乎所有的模块都是使用同一种语言如VB或VC开发的,都在同一个局域网中相互通信,例如,有两个服务器端程序需要相互通信,或者有一个Win32或WinForm的客户程序需要连接局域网上另一个服务端程序,这种情况下,使用DCOM会比SOAP或HTTP更有效。
在实际开发中,程序员需要从应用程序结构和应用目标的角度出发,对多种开发模式进行比较,并进行有效的测试与维护,将WebService用对、用好。
参考文献:
[1] 胡泽,廖闻剑,彭艳兵.WebService技术研究及应用[J].硅谷,2009(5).
[2] 尹兆冰,王加阳.Web Service及其关键技术研究综述[J].软件导刊,2010(2).
[3] 杨东.Web服务中若干问题的研究[D].吉林:吉林大学,2014.
[4] 王向方,武伟,唐伟媛.WebService技术在企业中的应用[J].电脑编程技巧与维护,2015(2).
[5] 王建品,李科.WebService在网络地理信息系统构建中的应用[J].商丘师范学院学报,2009(9).
[6] 谢宝智,王刘凯.基于XML和Web Service的数据集成中间件[J].信息技术,2010(1).
关键词: WebService;通信;信息共享;C#;校园信息
中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2018)20-0243-03
1 WebService概述及应用场合
1.1 WebService简介
在互联网环境下,应用程序往往需要从Internet或者Intranet上接收其他应用传递过来的请求并进行处理。WebService就是这么一种处理的技术,它全称XML Web Service,是一种轻量级的信息处理技术。它使用SOAP在Web上提供的软件服务,以WSDL文件作为说明文档,并通过UDDI进行注册。
WebService以 HTTP 协议为基础,通过 XML 进行客户端与服务器端的通信,其通信架构如图1所示。
图1 通信架构图
WebService其实是在实现应用程序间的通信。现时主流的程序通信方法有两种,通过RPC(远程过程调用)和消息传递。使用RPC协议,客户端对服务器上的远程过程进行调用,完成一个远程对象的实例化并调用其方法和属性。RPC力求达到一种透明性,就是服务器显露出远程对象的接口,而客户端就如同在本地使用这些对象的接口一样。这样一来,底层的信息就被隐藏了,客户端不需要知道服务器端对象是在哪台机器上。
1.2 WebService的基础工具及协议
WebService平台需要一套工具及协议来帮助分布式应用程序的创建。要实现不同平台间数据的互通,WebService必须使用一套标准的协议进行数据处理。这些工具及协议有:
XML(Extensible Markup Language):可扩展标记语言,是一种独立于各种程序和平台的结构化数据描述方式,是SOAP的基础。
SOAP(Simple Object Access Protocol):简单对象存取协议。SOAP是WebService的基础。当用户通过UDDI找到源系统的WSDL描述文档后,便可以通过SOAP调用源系统建立的Web服务中的一个或多个操作。SOAP以XML文档形式规范地描述调用方法,它可以支持如HTTP(S)或者SMTP等多种底层接口。
WSDL(Web Services Description Language):使用XML语法规则写成的WSDL文件,用于说明一组SOAP协议产生的消息以及交换这些消息的方法。大多数下应用软件能自动生成和使用WSDL。
UDDI (Universal Description,Discovery and Integration) :针对Web服务供应商和使用者所使用的项目。UDDI是一种根据描述文档来引导系统查找相应服务的机制。UDDI利用SOAP消息机制来发布、编辑、浏览以及查找注册信息。UDDI使用XML来封装不同类型的数据,并发送到注册中心或者接收注册中心返回需要的数据。
1.3 使用WebService的优点
1) WebService实现了跨平台,弥补了各种平台不兼容的缺陷。WebService采用HTTP协议工作,而每一台访问Web的主机,都使用HTTP协议来通信,另外,大部分防火墙也接收HTTP协议的请求。使用WebService,可以方便、安全地实现通信。
2)WebService实现了跨语言,使各种语言开发的应用能互相共享数据。基本上每一种编程语言都支持XML文本解析,使用WebService产生的基于XML格式的数据,可以被各种语言开发的应用所读取,实现了不同语言之间的通信。例如Java语言开发的服务端程序,可以与用C或C#语言开发的客户端利用XML进行通信,实现数据共享。
2 WebService的应用场合
1)跨防火墙的通信
现时,全国技工学校学籍管理系统、学生资助管理系统等一系列的应用在全国各地职业类学校全面铺开使用,为全国各地监控、管理、共享技工院校的学生信息提供了方便。面对分布在全国各地的院校用户,其校园信息系统使用不同的平台,也架设了防火墙或代理服务器,客户端和服务器之间的通信是一个难题。
为解决这个难题,传统的做法是以浏览器作为客户端,服务器端以ASP、PHP等技术,通过编写一系列动态页面,包含数据查询处理逻辑的中间层组件,对客户的输入进行处理并以HTML的形式返回给客户。这样做的结果是开发难度大,程序很难维护。
另外一种做法是,使用WebService开发一个API接口作为中间层,让各院校的本地程序通过该接口直接调用服务器的数据。访问WebService,可以通过由Microsoft SOAP Toolkit或.NET等编写的SOAP客户端,也可以通过用户自定义的SOAP客户端,然后将其和本地应用程序连接起来。利用WebService,既减少了代码复杂度和程序开发工作量,也增强了应用程序的可维护性。
2)实现软件和数据重用
除了重用代码,在重用数据方面,WebService也同样出色。使用WebService,在互联网的环境下,程序只需要直接调用远端的WebService,就可以使用相应的服务和数据。例如,要获取全国各地实时的天气情况,只需把获取请求直接发送给中国国家气象局等官方提供的WebService,它就会帮你查阅相关的信息并返回。这样的需求如果要通過组件重用来实现是很难的,因为程序运行的平台必须下载并安装好包含所有地区天气信息的数据库,即便如此,该数据库还不能实时更新,与官方提供的数据同步。 现在比较流行的另一种软件重用,是在网站上将几个应用程序的功能加以集成。例如,要建立一个综合性的门户站点,让用户在站内可以查询天气、交通状况,了解股市行情,可以在线浏览各大电商站点的产品并下订单,在线订票等,这在很多网站上已经实现。各种服务机构将查询快递、订票等单一的功能通过WebService提供给外部,门户网站就可以迅速地将这些功能整合到自身,为用户提供友好的查询界面,使用户在一个站点上就可以使用多种生活信息服务,非常便利。
从以上应用可以看出,WebService在完成基于Web的交互性操作或实施远程调用、分布式共享的时候是最有用的。
3 WebService实例——学生查询接口的实现
下面以校园信息系统中学生信息查询接口的实现为例,详细说明WebService在.NET下的开发过程。在实际的应用中,为了安全起见,如果需要调用接口,还需要程序实现身份的验证过程,例如用MD5加密验证来确保调用接口的安全性。该实例在Visual Studio 2010开发环境下调试完成。程序所使用的学生信息表其结构主要字段如表1所示。
1) 创建Web服务程序并编写学生信息查询代码,如图2所示。[using System;
…… //省略部分引用代码
using System.Collections;
namespace WebService
{
///
/// StuAPI 的摘要说明
///
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允許使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
// [System.Web.Script.Services.ScriptService]
public class CommonService : System.Web.Services.WebService
{
///
/// 返回学生数据列表以及学生详情
///
///
[WebMethod]
public List
{
DataSet ds;
StringBuilder strSql = new StringBuilder();
strSql.Append("select SSI_ID,SSI_PSW,SSI_StudentNo,SSI_Name,SSI_Sex_out,DSB_ID,DSB_BlockName,CGI_ID,CGI_Name,CCI_ID,
CCI_Name,CDep_ID,CDep_Name,CCI_IsGraduate");
strSql.Append(" FROM STU_V_StuInfo ");
if (strWhere.Trim() != "")
{
strSql.Append(" where " strWhere);
}
ds = DbHelperSQL.Query(strSql.ToString());
return (new kangkai.verp.BLL.Stu.STU_V_StuInfo()).DataTableToListWS(ds.Tables[0]);
}
}
} ]
2) 部署到服务器后,调用API接口,如图3所示。
3) 输入条件即可查询到接口数据,返回结果如图4所示。
[<?xml version="1.0" encoding="UTF-8"?>
-
-
…… //省略部分返回结果
4 小结 本文通过校园信息系统中学生信息查询接口的实现,介绍了.NET环境下以C#语言编写WebService过程。从全国技工院校学生信息管理系统、跨公司的商务交易集成、天气预报数据获取等实际应用可以看到,通过利用WebService,达到了各个不同系统之间数据共享之目的,突破了不同语言下的应用不能互相兼容的障碍,实现了异构系统之间的整合与统一。当然,WebService也不是万能的。在某些场合的开发中,就不适宜采用WebService,例如:
1) 单机应用程序的开发
目前,单机的桌面应用程序还有一定的市场,这些程序一般只需要与本机上的其他应用通信,不需要通过HTTP传输数据。这样的话,最好不要用WebService,只采用本地的API就可以了,或者编写COM也是不错的选择,因為它体积小,运行速度快。同样,在一台服务器上运行的服务器软件也是这样,最好直接使用COM或其他本地的API来进行应用程序间的调用。当然WebService也能在这些场合使用,但开发的成本较高,对机器资源的消耗较大。
2) 同构应用程序的开发
在某些应用中,几乎所有的模块都是使用同一种语言如VB或VC开发的,都在同一个局域网中相互通信,例如,有两个服务器端程序需要相互通信,或者有一个Win32或WinForm的客户程序需要连接局域网上另一个服务端程序,这种情况下,使用DCOM会比SOAP或HTTP更有效。
在实际开发中,程序员需要从应用程序结构和应用目标的角度出发,对多种开发模式进行比较,并进行有效的测试与维护,将WebService用对、用好。
参考文献:
[1] 胡泽,廖闻剑,彭艳兵.WebService技术研究及应用[J].硅谷,2009(5).
[2] 尹兆冰,王加阳.Web Service及其关键技术研究综述[J].软件导刊,2010(2).
[3] 杨东.Web服务中若干问题的研究[D].吉林:吉林大学,2014.
[4] 王向方,武伟,唐伟媛.WebService技术在企业中的应用[J].电脑编程技巧与维护,2015(2).
[5] 王建品,李科.WebService在网络地理信息系统构建中的应用[J].商丘师范学院学报,2009(9).
[6] 谢宝智,王刘凯.基于XML和Web Service的数据集成中间件[J].信息技术,2010(1).