了解SOA架构

ayo*_*ntu 0 soa soap wsdl web-services uddi

我正在开发一个基于SOAP的SOA项目.好吧,我在互联网上阅读了很多教程,但我仍然有同样的问题,这是所有文章和博客,甚至eclipse的官方文档告诉你如何使用IDE助手或这样的API和框架(例如:JAX-WS, CXF)创建一个Web服务,并为您提供SOAP,WSDL和UDDI的一些定义,但没有一个解释SOA如何工作,发布和部署WS的过程以及C/S req/resp如何使用所有这些实体SOAP,WSDL和UDDI以及SOA项目中存在的其他文件(XML文件和Java文件)来完成远程Web服务的调用过程.我已经阅读了很多电子书,但仍然不了解SOA的工作原理.pliiiz我需要你的帮助,我真的很不安和困惑.提前谢谢了.

bcm*_*ney 10

不要过于担心这个术语面向服务的体系结构(SOA),因为它更像是一个营销术语,描述了一个众所周知的实践软件开发方法,即将程序转换为可在各种范围内重用的专用组件.应用.它还可以描述将此软件开发方法应用于业务流程建模,其中业务单元和工作流被模块化并视为单个服务而不是泡沫中存在的单一流程,有些人将这种不同但相关的应用称为面向服务的建模.

虽然SOA与模块化共享很多共同点,但它还增加了这样的要求,即您的单独代码模块不仅可以互相操作和集成(即可以很好地协同工作),还可以与世界上其他人的代码进行互操作,并且它们可以通过一些明确定义的机制获得.

SOA"纯粹主义者"可能会告诉您,为了使您的软件"符合SOA"(请注意:这不是真实的,因为没有单一的规则或管理机构),您需要将其编写为SOAP Web服务,发布和维护WSDL,它可以作为您与任何实施方之间的合同,并遵循相关的WS-*规范.但是,实际上REST和其他轻量级模块化/集成/可重用性方法与SOA的概念一致.

如果您确实想成为SOA中的"专家",那么请仔细阅读以下规范中的每一个字:

发现

MESSAGING

元数据

安全

服务质量

(这些只是一些最重要的WS-*规范,请参见此处的完整列表)

然后阅读以下基本SOA书籍的每一页:

但是,我实际上并没有建议,因为阅读材料太多了.我建议的是,您在使用SOA方法编写自己的程序时将它们用作参考,并注意到在特定区域,有关下一步操作的参考手册会派上用场.实践是完美的,你将从真实世界的例子中学到更多东西,而不是阅读书籍和学习有关标准和理论的一切.正如您所提到的,从过分简单化的JAX-WS和JAX-RS Web服务示例开始,这些示例与NetBeans或Eclipse等IDE一起开箱即用,然后尝试一些流行的SOA框架(如CXF,Axis2)附带的示例或RESTlet.

一般情况下,当您编写代码时,不断问自己,您的代码是:

  1. 可在其他应用程序或域中重复使用
  2. 使其核心功能在内部可扩展并可从外部访问(特别是通过网络连接,即HTTP)
  3. 以易于解析/处理(从而集成)格式提供输出数据或元数据,如XML,JSON或许多相关数据语言和子语言之一
  4. 能够按需提供元数据来描述其内部工作方式,从而实现自动化集成
  5. 尽可能专业化和模块化; 同时,如果还有其他类似的specalized API或Web服务已经存在,那么使用它们而不是重新发明轮子会更好吗

人们可能会使用许多其他问题和标准,但恕我直言这些是最重要的.