SOAP + WSDL以外的标准来实现SOA

时间:2011-07-29 05:34:27

标签: architecture soap wsdl soa

我读了这个question

但是,我仍然不清楚在没有使用SOAP / WSDL等技术的情况下实现SOA体系结构的另一种方法。 我正在处理部署到websphere和weblogic应用服务器的应用程序。如果您能提供与此类环境相关的示例,将会更有帮助。

2 个答案:

答案 0 :(得分:2)

您可以使用RESTful服务而不是SOAP / WSDL ...

答案 1 :(得分:1)

首先要明确 SOA 。许多人认为,您使用的是 SOA ,那么您必须拥有Web服务。我认为这是错误的。 SOA 由许多称为服务的单个原子模块组成。现在,您必须公开端点以访问这些服务(在应用程序内部)和out(在您的应用程序外)。

您可以通过多种方式公开SOA服务的终点:

  1. 使用网络服务。
  2. 使用RMI(存根/骨架)
  3. 使用一些消息传递中间件(JMS / ActiveMQ等)
  4. 使用JSON。
  5. 使用您的自定义XML架构。
  6. TCP套接字直接服务。
  7. 或者你知道的任何其他方式。
  8. 我们使用(在JAVA中)JBoss jBPM,JBoss Drools和JMS / ActiveMQ 构建 SOA。根据我们对特定服务的要求,我们的服务有不同的终点。比如,某些服务需要定期发布数据,因此我们将这些服务创建为Web服务,自定义XML模式请求/响应(其中一些是JSON)。某些服务不会暴露在应用程序的一端,具有RMI的端点,或JMS队列/主题等。可以使用简单的方法调用(VM端点)调用某些服务。

    PersistenceService为例。它负责管理数据库访问和其他操作。因此,SOA中的任何服务都需要数据库访问,需要使用PersistenceService。因为,这项服务对最终用户来说并不重要(或者我们可以说应用程序的一面),您可以使用直接方法调用(VM端点),RMI存根/框架,创建JMS队列/主题来公开该服务的端点正在听的等等。

    现在,我们有 UserManagementService ,它负责用户管理任务,如身份验证,授权,管理角色等。您的应用程序将使用它来登录/注销来自用户的内容。因此,您可以将其公开为Web服务或您自定义的XML架构请求/响应。

    因此,我们可以说SOA服务在您的应用程序内部和应用程序之外使用。取决于它的端点不同。服务的终点取决于您希望使用该服务的方式。

    感谢。

    <强>更新
    是的,我完全同意你的看法。但对于可以像业务功能一样提供的服务,情况确实如此。但是,您可以在应用程序的环境中应用相同的SOA服务概念。您可以使用SOA方式设计应用程序,使得您的应用程序中的所有服务都可以像单个SOA服务一样运行,无论它们是应用程序的公共服务还是核心服务(如PersistenceService,ReportingService,LoggingService等)。这样您也可以将应用程序集群化在服务级别(业务服务以及核心服务),服务在不同节点分布。顺便说一句(我知道),这不是你问题的答案。您可以使用自定义XML请求/响应作为Web服务的重复。