【IT168 技术文档】
过去六个月以来,我在RCG信息科技公司使用网络服务(Web services)和企业流程管理工具来建置一套服务导向架构 (SOA,Service-Oriented Architecture)。这个经验让我更有信心与你分享打造绝佳SOA的秘诀。
以下经验将会让贵公司降低对ERP应用的依赖,不再受应用与供货商的牵制。你的公司将可开始在实时的环境下运作,从此批处理(batch)这个字也会跟打卡(punch card)一样进入IT部门的历史词汇中。
中间件不再是代罪羔羊
最初建立SOA时,我们把每样东西都放入中间件中,它可针对目标网络服务进行XSL转换,并向UDDI查询目标网络服务的位置,甚至还启动目标网络服务。于是,似乎只要出了任何问题只需归咎于「中间件」就行了
因此,我们决定绕过中间件,让中间件只当作连接应用程序的「联机管道」而已;中间件接受来源地的XML档案,并进行XML语法分析(parse),找出意欲前往的目的地,再将XML传送给预定的目标,而预定目标则会负责转换XML的工作。
这里学到的教训是:移除所有可能在中间件中的东西,你只能把它当作商业流程,或作为传送XML的管道。
利用XSLT将数据转为任何格式
XSLT(可延伸样式表语言转换)对于跨应用的通讯来说是很重要的。我们还没有发现导入XSLT之后,系统和系统之间无法沟通的例子。XSLT是种典范转移(paradigm shift),若你是第一次使用,你必须先从小部分功能开始着手,然后再逐步扩展。笔者推荐名为Beginning XSLT的工具书,作者为Jeni Tennison,该书包含9成常用的XSLT。
以邮件自动通知问题点
每天都会发生网络断线、数据库损毁、应用服务器当机、XML档案不完整、XSLT和你想要的功能有所出入,还有,你的中间件有些小问题。因此,要准备好能够每天自动处理这些问题,不要手动处理这类问题,否则要是相关人员度假去或改转移至其它新项目时就会出现问题。你可利用下列方式来处理:
- 以系统或是整合点(integration point)为基础来设定邮件群组
- 列出系统可能会发生的全部错误,和曾被你忽略的问题细节
- 允许使用者为他们的系统设定错误
-
以系统或是整合点为基础,允许使用者和开发人员管理他们想要被知会的错误信息
因为信息通知将会开始塞爆使用者的收件箱,可以预见,使用者将会央求解决所有的错误。当然,开发人员不能忽视且让这样的情况发生。
在建置完成的前几周中,我们统计了每个整合点的错误排名,藉此评估哪些错误应该优先处理。目前,我们的开发人员已经很少收到错误通知了。
- 我们建立队列(queue)和行动(action)来处理错误
- 我们使用先进/先出(first in/first out)队列来处理应用程序当机
- 我们通知来源系统重送那些没有被目标系统收到的记录
如果有人输入错误的WSDL档案位置,我们设定UDDI会每隔一段时间重新检索,如此开发人员便可直接更新UDDI即可,而不用重送记录。
现在整个SOA便可平顺运作了,因为即使有问题发生,中间件与队列也会处理错误。现在开发人员仅需处理一些例外状况,并可专注在其它商业开发项目上,在维护旧系统上则不用耗费时间。
好用的动态启动
如果你已开始建立SOA,不妨顺便学习动态启动网络服务的方式。藉由传递WSDL档案位置、你想要启动的方法、客户端程序的适当参数,你就可利用一个网络服务客户端程序启动任何的目标网络服务,这样也可以减少维护成本。我们在这个计划中使用Apache的WSIF。如果你为每个网络服务都建立一个客户端程序,那每次网络服务一有变动,你就要每个程序都去修改了。
UDDI:企业的服务目录
我们使用Systinet旗下的WASP UDDI建立一企业级UDDI,这与SOA或企业级的SOA不同。UDDI可当作搜寻网络服务的企业目录,开发人员会与这些网络服务紧密结合在一起,如此一来,其它系统的开发人员若需密码或合作测试,就有接触管道。我们整理了一份「如何连上企业」的手册,好让开发人员得知新近合并的公司。
开发人员可依唯一识别键(unique key)来查询网络服务的位置。如果产品服务器当机,我们可以将所有的识别键指向产品备份服务器上的网络服务。
SOAP信息侦错
网络服务主要就是进行SOAP信息的接收与传送。我传递一个SOAP信息给你,这个信息就像信纸放在信封中寄出一样,而SOAP的主体被包装在SOAP信封里面。SOAP主体是由我这端来控制,直到我放到信封内寄出为止,之后目标系统能够打开信封,它就能够控制SOAP主体。然而,目标系统偶尔无法辨识出SOAP信封为有效的SOAP信息。这种情况在Java以动态启动方式传送给.NET的网络服务时尤其明显,因为该SOAP信息是为你动态产生的。
还好市面上有SOAP监视软件,可捕捉在应用程序之间所传送的信息。你可以从来源系统中了解SOAP信息是如何建构的,而且还能够修改它。我们使用Apache.org旗下的Axis(SOAP Server)所附赠的免费SOAP监视软件,它甚至可以其侦错.NET SOAP信息。
成功的秘诀
以下有几个使用网络服务设计SOA的建议:
- 只把中间件当作传递两边(来源与目的地)信息的管道。
- 一旦数据格式被系统接受后,善用XSLT来解读数据。
- 建立错误通报系统
- 熟悉动态启动网络服务以减少维护成本
- 取得SOAP监视软件,让开发人员可了解来源系统到底传递什么给予目标系统
- 成为处理SOAP信息的专家
- 若要建立企业级的SOA,首要研究如何取得UDDI
原文地址:http://tech.it168.com/j/2007-09-10/200709101404970.shtml
分享到:
相关推荐
ORACLE 培训资料:ORACLE SOA 架构Web Services的安全 Web Services Security: What’s Required To Secure A Service-Oriented Architecture
Web+Services:技术、架构和应用
Java Web Services: up and running. Java web 服务》构建与运行。包括书中源码。
SOA with Web Services SOA with Web Services
Web表单设计:点石成金的艺术.pdf
Web Services概述 Web Services技术 SOA网格服务体系结构 Web Services实现技术
一本介绍Web Services 以及SOA的书,是中文的哦
SOA, Web Services and The Global Delivery Model
project_webservices_uninorte 使用SOA和WebServices模块的Web服务进行项目开发-Post-Uninorte脚步服务器-Java桌面更改服务器URL时,必须重新编译服务器和客户端。生成服务器类wsgen -cp bin -s src -wsdl br....
Web Services vs SOA,a good book!
基于WebServices的SOA架构设计方法的研究
Developing Java Web Services: Architecting and Developing Secure Web Services Using Java
Understanding SOA with Web Services
RESTful Java Web Services, Master core REST concepts and create RESTful web services in Java, Jose Sandoval, Copyright 2009 Packt Publishing
Flask Building Python Web Services 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
Web Services 教程Web Services 教程Web Services 教程Web Services 教程
Understanding.SOA.with.Web.Services中文版(Eric Newcomer原著,徐涵译)2分之2
在java开发services中,会用到: 1.webservices-api.jar 2.webservices-extra.jar 3.webservices-rt.jar 4.webservices-tools.jar 5.webservices-extra-api.jar 此压缩文件里就是这五个jar文件。
本书的内容涵盖了Web Services的各种关键技术、Web Services的整体体系架构和应用体系架构,以及Web Services应用的设计和开发。本书以Web Services技术系列为主线,逐一详细分析解释包括Web Services的各种核心技术...
web services web services web services web services web services