如果有人输入错误的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