我读了这个question
但是,我仍然不清楚在没有使用SOAP / WSDL等技术的情况下实现SOA体系结构的另一种方法。 我正在处理部署到websphere和weblogic应用服务器的应用程序。如果您能提供与此类环境相关的示例,将会更有帮助。
答案 0 :(得分:2)
您可以使用RESTful服务而不是SOAP / WSDL ...
答案 1 :(得分:1)
首先要明确 SOA 。许多人认为,您使用的是 SOA ,那么您必须拥有Web服务。我认为这是错误的。 SOA 由许多称为服务的单个原子模块组成。现在,您必须公开端点以访问这些服务(在应用程序内部)和out(在您的应用程序外)。
您可以通过多种方式公开SOA服务的终点:
我们使用(在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服务的重复。