Service 服务外观(根据Adam Bien)-EJB 3

Service 服务外观(根据Adam Bien)-EJB 3,service,ejb-3.0,java-ee-6,facade,Service,Ejb 3.0,Java Ee 6,Facade,我读过亚当·边《反思商业层面》。它提到了创建服务外观,例如OrderService。但是,对于大型企业应用程序,可以有许多服务外观。我有客户模块、订单模块、运输模块,我可以为每个高级模块创建一个服务门面,而不是创建一个包含所有这些模块的大门面。因此,在我的JSF 2.0 web应用程序中,我可以进行如下调用: transportationServiceFacade.findDetails() orderServiceFacade.findDetails() 而不是这样做 genericServi

我读过亚当·边《反思商业层面》。它提到了创建服务外观,例如OrderService。但是,对于大型企业应用程序,可以有许多服务外观。我有客户模块、订单模块、运输模块,我可以为每个高级模块创建一个服务门面,而不是创建一个包含所有这些模块的大门面。因此,在我的JSF 2.0 web应用程序中,我可以进行如下调用: transportationServiceFacade.findDetails() orderServiceFacade.findDetails()

而不是这样做

genericServiceFacade.findDetails()


我宁愿在我的例子中使用许多正面。这会影响性能吗?

当然可以。我不知道这本书的具体内容,但我知道亚当·宾是一位简约优雅的实践者。我认为这很好,特别是与EJB2.x时代的企业Java解决方案相比。但他所采用的简单性有时也带有过分简单化。正如您可能意识到的那样,随着系统的发展,将通用外观拆分为其他更专业的外观会更有意义


这当然不会影响性能,因为这些EJB也将被轮询。如果有什么区别的话,您将消耗更多的内存,但我不担心这一点,因为通常最好先关注您的体系结构,然后再关注性能。即使如此,绩效也不应该是“我认为”,而是“我知道”(即:衡量,并向自己证明某些事情确实影响绩效)

你当然可以。我不知道这本书的具体内容,但我知道亚当·宾是一位简约优雅的实践者。我认为这很好,特别是与EJB2.x时代的企业Java解决方案相比。但他所采用的简单性有时也带有过分简单化。正如您可能意识到的那样,随着系统的发展,将通用外观拆分为其他更专业的外观会更有意义


这当然不会影响性能,因为这些EJB也将被轮询。如果有什么区别的话,您将消耗更多的内存,但我不担心这一点,因为通常最好先关注您的体系结构,然后再关注性能。即使如此,绩效也不应该是“我认为”,而是“我知道”(即:衡量,并向自己证明某些事情确实影响绩效)

ServiceFacase只是一种模式,您可以根据需要对其进行修改。然而,ServiceFacade模式的思想是将单个组件的边界方法分组到单个类-服务facade中。如果您需要更多独立的服务外观,那么您也可能需要更多解耦的组件。


另一个建议是,如果从前端的单个操作调用两个不同Facade的方法,则最好将该业务逻辑分组到其中一个Facade的单个方法中。服务facade应该始终启动事务,最好在一个操作中减少事务的数量,最好是减少到单个事务。Service facade的设计应满足客户端从外部而不是通过任何其他方式访问组件的需要。

ServiceFacase只是一种模式,您可以根据需要对其进行修改。然而,ServiceFacade模式的思想是将单个组件的边界方法分组到单个类-服务facade中。如果您需要更多独立的服务外观,那么您也可能需要更多解耦的组件。

另一个建议是,如果从前端的单个操作调用两个不同Facade的方法,则最好将该业务逻辑分组到其中一个Facade的单个方法中。服务facade应该始终启动事务,最好在一个操作中减少事务的数量,最好是减少到单个事务。服务外观的设计应满足客户从外部而不是通过任何其他方式访问组件的需要。

根据Adam的Bien“真实世界Java EE模式。重新思考最佳实践”(2012),当边界变得臃肿和内聚时,服务外观或控制是复杂服务层的可选分解

如今,我们可能会在web层(资源层、控制器层、RESTAPI前端层)遇到过度复杂的逻辑,这些逻辑可能由多个服务的结果组合而成。就控制(服务外观)模式而言,这些将是重构的良好候选,这将提高可维护性并遵循关注点分离。您还将获得免费测试的便利。

根据Adam的Bien“真实世界Java EE模式。重新思考最佳实践”(2012),当边界变得臃肿和内聚时,服务外观或控制是复杂服务层的可选分解


如今,我们可能会在web层(资源层、控制器层、RESTAPI前端层)遇到过度复杂的逻辑,这些逻辑可能由多个服务的结果组合而成。就控制(服务外观)模式而言,这些将是重构的良好候选,这将提高可维护性并遵循关注点分离。您还可以免费获得轻松的测试。

谢谢您的帮助。我会考虑多做一些事情,谢谢你的帮助。会考虑多做几个方面。