用XML、XQuery和本机XML数据库技能加快SOA
副问题[/!--empirenews.page--]
【 技能文章】 许多 SOA 实现都依靠于用 XML 界说的动静名目。功效,动静模式也许变得很是伟大、不兼容、难以维护,乃至造成严峻的可伸缩性和机能题目。在本文中,Frank Cohen 将先容怎样通过在 SOA 中间层行使 XML、XQuery 和本机 XML 数据库技能来进步 SOA 机能的计谋和技能。 许多软件架构师在面向处事系统布局(SOA)计划中行使 XML,固然没有一种 SOA 尺度要求在 SOA 中行使 XML 可能提供相干指南。因此,软件开拓社区做了许多尝试和观测来发明界说处事端点和动静界说(模式)的最佳方法。这些要领大大国都市带来了糟糕的机能和可伸缩性。 好比,最早提出用 SOA 实现 ebXML 的 General Motors Corp.,其最初的计划行使的是 Universal Business Language (UBL),成立的 XML 动静有 150,000 字节到 10 兆字节乃至更大。2004 年,我的机能测试公司 PushToTest 以为其时的 Java™ 应用措施处事器没有提供足够的吞吐量,在 GM Web Services Performance Benchmark 研究中提出了可伸缩性和机能题目。 其时基于 XML 的 Web 处事技能还很是新,我以为新一代应用措施处事器技能会办理机能题目。但大部门题目如故存在。 Web 处事吞吐量题目和伟大的 XML 2005 年,PushToTest 完成了一项新的 SOA 机能研究(请参阅参考资料)表白,在处理赏罚伟大的 XML 动静时,行使当前 Java 应用措施处事器构建的应用措施其机能很差,不敷以投入出产。是发明的题目和早年研究中的题目沟通: 简朴工具会见协议(SOAP)绑定(署理)低效而迟钝。 图 1. WSDL 界说的例子 固然可以行使行使差异技能成立基于 XML 的 Web 处事,但我发明大都开拓职员更乐意从处事的 Web Services Description Language (WSDL) 界说开始。Java 应用措施处事器提供了输入 WSDL界说和天生署理类的器材。署理器吸取 SOAP 哀求并把哀求转发给 Java 工具或 Enterprise Java Bean (EJB) 举办处理赏罚。SOAP 绑定(署理器)是一种 Java 类,可通过 servlet 接口挪用它。 图 2. Java 要领挪用 图 2 声名白 Web 处事斲丧者怎样向处事发出 SOAP 哀求。SOAP 绑定对 SOAP 动静体中的 XML 内容举办反序列化。这个进程必要举办大量的处理赏罚,很是伟大,由于动静体经常包括伟大的数据范例。好比,斲丧者也许向处事发送包括多个值的散列表。SOAP 绑定必要解码散列表的内容,对每个值建设 Java 工具的实例。散列表还也许包括其他散列表,因此解码 SOAP 动静内容不是一件轻易的事。假如不信托的话,请看一看 Apache Axis 反序列化器的源代码。 SOAP 绑定实例化包括 SOAP 动静体内容的 Java Request 工具。SOAP 绑定挪用方针类中的方针要领,并将 Request 工具作为参数转达。方针 EJB 或 Java 工具提供全部须要的处理赏罚来成立对哀求的相应。SOAP 绑定将 EJB 或 Java 工具返回的值序列化到 SOAP 相应动静中。SOAP 绑定将相应工具中的值解码成可以或许序列化到 SOAP 相应动静中的值必要颠末同样伟大的进程。 通过研究用风行的 Java 应用措施处事器器材建设的 SOAP 绑定,我发明白以下题目: 应用措施处事器器材建设的 SOAP 绑定服从很低。好比,我发明某些 SOAP 绑定建设 SOAP 哀求的多个副本,每个哀求都实例化为 String 工具 —— 这样做并没有明明的来由。一些 SOAP 绑定建设了 15,000 个 Java 工具来反序列化动静体中包括 500 个元素的 SOAP 哀求。 图 3. 斲丧者 不只仅是一个处事的机能题目,每个处事在序列化、反序列化哀求和相应的时辰城市增进同样的开销。跟着处事挪用条理的增进,机能题目也成倍增进。 加速 SOA 失去的机遇 除了 SOAP 绑定署理速率慢的题目,SOA 计划还经常忽略可能忽视其它两个题目。 起首,SOA 计划经常忽视了用中间层处事缓冲来进步 SOA 机能的也许性。好比大都 SOA 计划中的 XML 模式都界说了了相应的 time-to-live 值。在这种环境下,缓冲处事相应并在处事再次收到同样的哀求时从头行使缓冲的相应是一种进步 SOA 处事机能的公道而恰当的要领。 其次,在 SOA 机能测试中,我实行了各类差异的 XML 动静理会要领,个中包罗 Streaming API for XML (StAX)、XML 绑定编译器、Java Architecture for XML Binding (JAXB) 和 Document Object Model (DOM) 技能。一些技能的机能要优于另一些。好比,许多 StAX 理会器可以或许提供比 DOM 理会器快 2 到 10 倍的机能。 (编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |