繁体   English   中英

企业应用程序中的表示层体系结构

[英]Presentation layer architecture in an enterprise application

在我们公司,我们正在开发一个包含几个模块的应用程序。 该体系结构已经定义好,但是我对表示层有几秒钟的想法,我真的很想听听您的意见。 架构如下:

我们在Foreach模块中创建了几个名称空间,这些名称空间将在其自己的类库中进行编译。 因此,对于我们的CRM模块,我们创建以下内容:

  • ProductName.CRM.ServiceLayer(保存CRM模块的servicecontracts接口)
  • ProductName.CRM.ServiceLayer.Implementation(实现CRM模块的servicelayer接口)
  • ProductName.CRM.BusinessLayer(保存CRM模块的业务组件)
  • ProductName.CRM.BusinessLayer.BusinessObjects(保存CRM模块的businessObjects)
  • ProductName.CRM.DataLayer(保存CRM模块的DAO接口)
  • ProductName.CRM.DataLayer.SqlServer(实现CRM模块的数据层接口)

我们为财务,HRM,供应等模块创建相同的类库结构:

  • 产品名称。财务...
  • 产品名称.HRM ....
  • 等等。我想您现在会明白的:)

我们还考虑了“交叉问题”,为此,我们创建了以下名称空间和类库

  • ProductName.Framework.ExceptionHandling
  • 产品名称。框架。记录
  • 产品名称。框架。安全
  • 等等...

到目前为止,这就是我们的体系结构,现在,我正在尝试寻找一种设置PresentationLayer的正确方法。 例如,我应该为每个模块创建一个PresentationLayer库(ProductName.CRM.PresentationLayer,ProductName.Finance.PresentationLayer等)。 并创建一个整体ProductName.PresentationLayer-library,该引用具有对所有其他Module.PresentationLayer-libraries的引用。 然后,此整体ProductName.PresentationLayer将具有Login / MainForm功能,并具有启动在PresentationLayer模块之一中实现的表单的功能。 就像应用程序进入其他模块的入口一样。

要么...

我应该只制作一个ProductName.Presentation-library,其中包含所有模块的所有表单。 这样,我可以轻松导航到其他表单,而不必担心模块之间要使用其他表单时的引用(有时它们会这样做)。

第一个解决方案对我来说听起来不错。 但是,当来自不同模块的表单想要相互导航时,将很难实现这种功能,因为这两个功能中只有一个可以引用另一个功能。

我真的很想听听您对我正在处理的问题的意见,也许有人可以给我适当的解决方案或想法,让我可以使用。

在此先感谢,干杯!

如果表单需要交换数据,则始终可以创建表单实现的接口。 实际上,拥有很多相互了解的表格可能不是一个好主意,因为从长远来看,这会造成维护和增强问题。

通过使用接口和可能的某种Locator服务,您可以避免在表单之间进行严格的依赖关系-然后您可以自由使用任何一种架构模型(1个大型程序集与许多较小的程序集)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM