Architecture 用于简单应用程序的复杂体系结构
作为一名顾问,我负责为外部公司设计应用程序的体系结构。这个应用程序的要求非常简单,整个问题可以通过一个基本的web应用程序、一两个传入的web服务和几个传出的文档通道轻松解决 由于两个非功能性需求,事情变得更加复杂:Architecture 用于简单应用程序的复杂体系结构,architecture,soa,portal,Architecture,Soa,Portal,作为一名顾问,我负责为外部公司设计应用程序的体系结构。这个应用程序的要求非常简单,整个问题可以通过一个基本的web应用程序、一两个传入的web服务和几个传出的文档通道轻松解决 由于两个非功能性需求,事情变得更加复杂: 该公司要求通过企业门户提供所有内部应用程序(用于用户界面、安全性和技术统一性) 该公司要求使用SOA原则构建所有应用程序,以便最终在ESB上发布并重用服务 体系结构可以很容易地适应门户需求。演示文稿将使用portlet构建并集成到门户主题中,门户安全性将被重用。没什么大不了的 SO
谢谢大家。我很高兴看到您在构建企业体系结构方面有一些实际经验,并且了解不同体系结构的后果。我见过很多顾问,他们刚刚读了一本关于一些新的时尚技术的书 选择1当然是最务实和最实惠的。您应该构建一个现在就需要的应用程序,而不必投资于将来可能使用或不使用的服务。但据我从您的描述中了解,这可能很难销售给客户 如果您必须使用分布式体系结构(选项2或3),我仍然会尝试在门户服务器上放置尽可能多的内容。为此,必须以非常狭窄的方式定义术语业务逻辑。所有与演示文稿远程相关的内容(用户设置、用于演示目的的数据结构、已生成的报告等)都被声明为演示文稿逻辑,因此可以在门户服务器上实现。因此,即使您无法避免远程处理带来的重复和复杂性,您也可以将其限制在更少的领域。(根据手头的问题,您可能最终在门户服务器上创建一个数据库,在业务逻辑服务器上创建一个数据库,这两个数据库最好合并为一个,因为它们之间有太多的数据引用。希望这里不是这样。) 根据我的经验,只考虑一个应用程序就编写一个可重用的服务是一项浪费的投资。对于这个单一的应用程序,servcie接口将变得更加复杂,接口的一部分将永远不会被使用,也很难进行测试(因为它是为一些想象中的未来应用程序而构建的),当第二个应用程序最终到达时,人们会意识到它的需求与预期的不同。因此,需要重新设计服务,并修改现有的应用程序。因此,除非您至少有两个(更好的三个)应用程序已经存在或正在实现,否则不要开始构建服务。它在金钱和服务接口的质量方面得到了回报
这个建议不是很具体,但您对应用程序业务需求的描述也是如此。由于签署了保密协议,您可能无法提供更多信息。但我经常发现业务需求有助于支持或反对一个选项。例如,需求、相关数据、数据所有权和涉及的过程可能比技术因素更好地界定系统 我会选择选项一,仔细标记创建业务层接口的服务,禁止从表示层调用此接口后面的任何内容。这使您能够在以后以合理的低成本和可预测的成本切换到远程处理选项(无论您选择第二个还是第三个) 如果不可能做到这一点,方案二将保证更有效地利用资源 划分表示层时一个有趣的部分是尚未提及业务逻辑-这是指您必须根据仅存在于表示层中的数据(例如用户及其权限)过滤来自业务逻辑的数据。:)