jersey和grails
我在以前的文章中讨论了REST,以及如何在Grails平台上利用RESTful Web服务。 我们将在SOA和REST上进一步讨论Grails,并尝试对架构进行详细可视化。
REST和SOA是不同的体系结构模式,具有许多共同点,以使应用程序具有高度的互操作性。
按照Thomas Erl的说法,SOA是“ SOA这个术语,代表了一个模型,在该模型中,自动化逻辑被分解为较小的,不同的逻辑单元。 这些单元共同构成了更大的业务自动化逻辑。 这些单元可以单独分发。”
SOA和REST体系结构的考虑都与技术无关,它们代表了数据之间的通信方式以及在分布式系统之间进行数据传输期间需要遵循的准则,以使其更加可互操作。
结合SOAP的RESTful Web服务可以带来REST的简单性,灵活性和低开销,而不会影响面向服务的解决方案和体系结构的功能或可管理性。
在不讨论RESTful和SOAP的情况下,我想进一步讨论一下我们如何使用Grails应用程序框架实现两者
下图描述了使用grails实现SOA和REST:
组件:组件是基于Object – Orients软件原理构建的系统的封装,独立部分。 服务层将通过定义明确的接口访问它。 服务组件可以是基于POJO的Grails Domain或Grails的插件,也可以是普通的Groovy或Java组件。
复合服务 :一种服务使用单独开发的组件并将它们连接起来,以带来可重用,灵活和可扩展的高业务服务,这些服务可被分布式系统公开和使用。 这比“组件”层高一层,可以是Groovy,JAVA或Grails定义的服务。 Spring的Dependency Injection模式将被用来访问组件。
服务资源 :此层包含资源服务以GET,POST,PUT和DELETE形式使用的所有业务服务。 服务资源资源服务是轻量级,无状态且独立的服务,可通过HTTP(s)协议以各种数据格式(例如XML,JSON,MIME,Byte等)与消费者通信。服务资源访问业务流程或组合服务,并在外部暴露给外部HTTP协议。
业务流程 :流程被认为是业务对齐的IT功能的抽象规范,并被资源服务或分布式系统使用。 业务流程编排/编排业务组合服务以执行定义良好的业务功能。 这些过程取决于服务层,以提供必要功能的构件。 Grails为Groovy和Java和Grail Services提供了自动依赖注入驱动的spring core DI。
集成(ESB):此层提供了一种公开服务的机制。 资源服务使用RESTful Web服务和业务流程公开,服务使用基于SOAP的Web服务公开。 它还可以提供消息转换,路由决策和协议转换功能。
服务质量 :此层提供的服务可为解决方案启用基础结构服务,并简化运行时环境的管理和监视。
结论: SOA和REST都是体系结构样式,可以一起使用,以在企业环境中提供可伸缩的,可互操作的解决方案。
参考文献:
- http://www.soapatterns.org/
- 面向服务的体系结构(SOA):概念,技术和设计,作者:Thomas Erl
- http://www.ibm.com/developerworks/webservices/library/ws-soa-ref-arch/
翻译自: https://www.javacodegeeks.com/2013/08/soa-and-rest-with-grails.html
jersey和grails