信息系统项目管理师自学笔记(十五)——Web服务、J2EE与.NET平台

3.4 Web服务

Web Service(Web服务)是解决应用程序之间相互通信的一项技术。Web服务是描述一系列操作的接口,它使用标准的、规范的XML描述接口。

3.4.1 Web服务模型

在Web服务模型的解决方案中,一共有三种工作角色,其中服务提供者(服务器)和服务请求者(客户端)是必须的,服务注册中心是一个可选的角色。
信息系统项目管理师自学笔记(十五)——Web服务、J2EE与.NET平台_第1张图片

  • 服务提供者。即Web服务的所有者,该角色负责定义并实现Web服务,使用WSDL(Web Service Description Language, Web服务描述语言)对Web服务进行详细、准确、规范的描述,并将该描述发布到服务注册中心供服务请求者查找并绑定使用。
  • 服务请求者。即Web服务的使用者,虽然Web服务面向的是程序,但程序的最终使用者仍然是用户。从体系结构的角度看,服务请求者是查找、绑定并调用服务,或与服务进行交互的应用程序。服务请求者角色可以由浏览器来担当,由人或程序(如另外一个Web服务)来控制。
  • 服务注册中心。服务注册中心是连接服务提供者和服务请求者的纽带,服务提供者在此发布他们的服务描述,而服务请求者在服务注册中心查找他们需要的Web服务。不过,在某些情况下,服务注册中心是整个模型中的可选角色,如使用静态绑定的Web服务,服务提供者可以把描述直接发送给服务请求者。
    对于Web服务模型中的操作,包含以下三种:发布服务描述、查找服务描述、根据服务描述绑定或调用服务。这些操作可以单次或反复出现。
  • 发布。为了使用户能够访问Web服务,服务提供者需要发布服务描述使得服务请求者可以查找它。
  • 查找。在查找操作中,服务请求者直接检索服务描述或在服务注册中心查询所要求的服务类型。对于服务请求者,可能会在生命周期的两个不同阶段中牵涉到查找操作,它们分别是:在设计阶段,为了程序开发而查找服务的接口描述;在运行阶段,为了调用而查找服务的位置描述。
  • 绑定。在绑定操作中,服务请求者使用服务描述中的绑定细节来定位、联系并调用服务,从而在运行时与服务进行交互。
    绑定可以分为动态绑定和静态绑定。在动态绑定中,服务请求者通过服务注册中心查找服务描述,并动态地同Web服务交互;在静态绑定中,服务请求者实际已经同服务提供者达成默契,通过本地文件或其他的方式直接同Web服务进行绑定。

3.4.2 Web服务协议堆栈

信息系统项目管理师自学笔记(十五)——Web服务、J2EE与.NET平台_第2张图片

  • 在Web服务协议堆栈的下层为网络通信部分,Web服务继承了Web的访问方式,使用HTTP(S)作为网络传输的基础,除此之外,Web服务还采用了其他的传输协议如SMTP、FTP、JMS、IIOP等。
  • 在消息处理方面,Web服务使用了SOAP(Simple Object Access Protocol,简单对象访问协议)作为消息的传送标准。在此之上是WSDL,用以描述Web服务的访问方法。
  • 位于最顶层的是与Web服务和应用程序以及Web服务之间相互集成相关的协议,其中包含发现、集成等若干方面。
    除了底层的传输协议外,整个Web服务协议栈是以XML为基础的,XML语义的精确性和灵活性赋予了Web服务强大的功能。
    (1)SOAP。SOAP是一种基于XML的协议,通过SOAP,应用程序可以在网络中进行数据交换和远程调用。SOAP使用XML进行编码,是一个开放式的协议。SOAP本身并没有定义信息的语义、服务质量、事务处理等问题。我们可以将SOAP理解为:HTTP+XML+RPC(Remote Procedure Call,远程过程调用)。
    (2)WSDL。WSDL包含了一套基于XML的语法,将Web服务描述为能够进行消息交换的服务访问点的集合,从而满足了这种需求。WSDL定义了可被机器识别的SDK(Software Development Kit,软件开发工具包)文档,同时,WSDL也可用于描述自动执行应用程序在通信中所涉及的细节问题。WSDL的目标是描述如何使用程序来调用Web服务,所以我们可以把WSDL理解为Web服务的SDK标准,或者是Web服务的接口定义。
    (3) UDDI(Universal Description Discovery and Integration,统一描述、发现和集成)。UDDI提供了一种Web服务的发布、查找和定位方法。我们可以将UDDI理解为一种目录服务,Web服务提供者使用UDDI将服务发布到服务注册中心,而Web服务使用者通过UDDI查找并定位服务。UDDI除了目录服务之外,还定义了一个用XML表示的服务描述标准。UDDI定义了一种Web服务的发布方式。

3.4.3 实现SOA的技术

在采用Web服务作为SOA的实现技术时,该系统应该至少分为6个层次:底层传输层、服务通信协议层、服务描述层、服务层、业务流程层和服务注册层。

  • 底层传输层主要负责消息的传输机制,HTTP、JMS和SMTP都可以作为Web服务的消息传输协议,其中HTTP使用最广。
  • 服务通信协议层的主要功能是描述并定义服务之间进行消息传递所需的技术标准,常用的标准是SOAP协议,还有新出现的REST(Representational State Transfer,表述性状态转移)协议。
  • 服务描述层主要以一种统一的方式描述服务的接口与消息交换方式,相关的标准是WSDL。
  • 服务层的主要功能是将遗留系统进行包装,并通过发布的WSDL接口描述被定位和调用。
  • 业务流程层的主要功能是支持服务发现,服务调用和点到点的服务调用,并将业务流程从Web服务的底层调用抽象出来。相关的标准是WS-BPEL(Web Service-Business Process Execution Language,Web服务业务流程执行语言)。
  • 服务注册层的主要功能是使得服务提供者能够通过WSDL发布服务定义,并支持服务请求者查找所需的服务信息。相关的标准是UDDI。

3.5 J2EE与.NET平台

3.5.1 J2EE的核心技术

J2EE为设计、开发、装配和部署企业级应用程序提供了一个基于构件的解决方案。使用J2EE可以有效地减少费用,快速设计和开发企业级的应用程序。
J2EE平台提供了一个多层结构的分布式的应用程序模型,该模型具有重用构件的能力、基于XML的数据交换、统一的安全模式和灵活的事务控制。
使用J2EE不仅可以更快地发布新的解决方案,而且独立于平台的特性让使用J2EE的解决方案不受任何提供商的产品和API的限制。用户可以选择最合适自己的商业应用和所需技术的产品和构件。

  1. EJB。EJB是Java服务器端的构件模型。EJB容器作为EJB构件的执行环境,提供服务器端的系统级功能,包括线程管理、状态管理和安全管理等。EJB定义了访问构件服务的分布式客户接口模型,通过RMI-IIOP(Java Remote Method Invocation-Internet Inter-ORB Protocol),EJB可以同COBRA对象进行互操作。使用Java开发的EJB具有一次编写到处运行的优点,按照标准开发的EJB构件可以部署到任何一个支持EJB标准的应用服务器中。使用EJB开发企业应用,可以缩短开发周期,开发人员只需要将注意力集中在业务逻辑的实现上,底层服务完全由EJB容器提供。使用EJB开发的业务逻辑部分具有很好的移植性,不需要更改EJB的代码,开发人员能够将EJB从一种操作环境移植到另一种操作环境。
  2. JDBC。JDBC是Java语言连接数据库的标准,从免费的MySQL到企业级的DB2和Oracle, JDBC都提供了很好的接口。JDBC API有两个部分,一个用来访问数据库的应用程序级的接口,另一个用来将JDBC驱动整合到J2EE平台中的服务提供商接口。
  3. Java Servlet(Java服务器端小程序)。在Servlet技术中封装了HTTP协议,开发者不需要处理复杂的网络连接和数据包,就可以扩展Web服务器的功能。类似于其他的服务器端程序,Servlet完全运行于Web服务器中,具有不错的效率和更好的移植性。
  4. JSP(Java Server Page, Java服务器页面)。可以认为是一种高层的Servlet,在服务器端,JSP总是首先被编译成Servlet运行的。如同在ASP(Active Server Page,动态服务器页面)中直接使用VBScript一样,使用JSP可以直接在HTML代码中嵌入Java代码,并提交给服务器运行。使用JSP便于逻辑和表现形式的分离。
  5. JMS(Java Message Service, Java消息服务)。JMS是一个消息标准,它允许J2EE应用程序建立、发送、接收和阅读消息。它使得建立连接简单的、可靠的和异步的分布式通信成为可能。
  6. JNDI(Java Naming and Directory Interface, Java命名目录接口)。JNDI提供命名的目录功能,为应用程序提供标准的目录操作的方法,例如,获得对象的关联属性、根据它们的属性搜寻对象等。使用JNDI,一个J2EE应用程序可以存储和重新得到任何类型的命名Java对象。因为JNDI不依赖于任何特定的执行,应用程序可以使用JNDI访问各种命名目录服务,这使得J2EE应用程序可以和传统的应用程序和系统共存。
  7. JTA(Java Transaction API, Java事务API)。JTA提供事务处理的标准接口,EJB使用JTA与事务处理服务器通信。JTA提供启动事务、加入现有的事务、执行事务处理和恢复事务的编程接口。
  8. Java Mail API(Java邮件API)。J2EE应用程序可以使用Java Mail API来发送电子邮件。Java Mail API包含两部分,分别是应用程序级接口和服务接口。
  9. JAXP(Java XML解析API)。JAXP支持DOM、SAX(Simple API for XML)、XSLT(Extensible Stylesheet Language for Transformation)转换引擎。JAXP使得应用程序可以更简单的处理XML。
  10. JCA(J2EE Connector Architecture, J2EE连接架构)。JCA是对J2EE标准集的重要的补充,它注重的是用于将Java程序连接到非Java程序和软件包的中间件的开发。JCA包括三个关键的元素,分别是资源适配器、系统界面、通用客户界面。JCA在功能上比Web服务要丰富,但是它发布起来更难,而且限制了只能从Java环境访问它们。
  11. JAAS(Java Authentication Authorization Service, Java认证和授权服务)。JAAS提供灵活和可伸缩的机制来保证客户端或服务器端的Java程序,它让开发者能够将一些标准的安全机制通过一种通用的,可配置的方式集成到系统中。

3.5.2 .NET平台

Microsoft .NET平台包括5个部分:

  1. 操作系统是.NET平台的基础,在操作系统方面,Microsoft有着强大的开发能力,目前的.NET平台可以运行在多个由Microsoft提供的操作系统中。
  2. .NET Enterprise Servers提供了包括Application Center 2008、BizTalk Server 2008、Commerce Server 2008等一系列服务器产品,通过这些产品可以缩短构建大型企业应用系统的周期。
  3. .NET Building Block Services指的是一些成型的服务,例如,由Microsoft提供的NET Passport服务等。.NET的开发者可以以付费的方式直接将这些服务集成在自己的应用程序中。
  4. .NET Framework位于整个.NET平台的中央,为开发.NET应用提供低层的支持。.NET Framework的核心部分是CLR。CLR是.NET程序的执行引擎,.NET的众多优点也是由CLR所赋予的。CLR同JVM的功能类似,提供了单一的运行环境。任何.NET应用程序都会被最终编译成为IL(Intermediate Language,中间语言),并在这个统一的环境中运行。也就是说,CLR可以用于任何针对它的编程语言,这也就是.NET的多语言支持功能。CLR还负责.NET应用程序的内存管理、对象生命期的管理、线程管理、安全等一系列的服务。
  5. Visual Studio.NET是.NET应用程序的集成开发环境,它位于.NET平台的顶端。Visual Studio.NET是一个强大的开发工具集合,里面集成了一系列.NET开发工具,如C#.NET、VB.NET、XML Schema Editor等。

3.5.3 比较分析

要对J2EE和.NET进行比较,我们需要明确它们的目标,这两个平台都是为了解决构建企业计算等大型平台而出现的。在这两个平台中都包含了一系列的技术,通过这些技术可以缩短开发周期,提高开发效率,节省构造成本,同时这两个平台都在安全性、扩展性、性能方面做出了努力,都提供了一系列的技术可供选择。
从这个角度来说,这两个平台都实现了他们的目标,都是成功的。因为这两个平台要解决的问题类似,所以很多技术也非常类似,有些概念甚至仅仅是名称上的差别而已,两个平台的类似之处远远多于相异之处。
在开发语言的选择范围中,.NET的语言选择范围相当大;而构建J2EE应用,在语言选择方面,则只能使用Java语言。
在对企业计算的支持方面,虽然技术都是完备的,但二者还是有较大的差别。
.NET虽然可以宣称平台中的技术是标准,但与J2EE不同,.NET的标准并没有完全的开放。可能使用.NET来开发企业计算平台唯一可以不选用Microsoft产品的就是数据库了,然而在.NET中ADO.NET直接支持的也仅仅是MS SQL Server和Access,对于其他的数据库(例如DB2),都必须使用OLE DB来访问(后来,增加了对Oracle的支持)。而使用J2EE的选择余地则很大。J2EE是一种开放式的标准,任何厂商都可以根据这些标准来开发自己的产品。无论是开发工具还是应用服务器和操作系统都有极大的选择余地,这有助于降低系统成本,减少开发费用。同样,由于J2EE的开放性,它也可以支持更多的技术标准。也就是说,虽然.NET中的技术标准可以构造完整的分布式应用,但J2EE的选择范围更多。

你可能感兴趣的:(信息系统项目管理师,web开发,持续集成系统)