我想知道我应该如何构建我的项目。
我们有一些项目(重新)用于其他项目。
我的意思是,我们的数据项目和模型项目用于一对多其他项目。
我真正要知道的是如何构建这种类型的项目,最好的方法是什么?
在标准的3层应用程序中,应该是这样的:
还有其他想法吗?
在我工作的每家公司中,他们都有不同的组织方式,是否有一个比另一个好? 你使用哪一个,你喜欢哪一个?为什么?
谢谢!
这就是我所做的,除了我有几个图书馆项目,我试图把我所有的可重复使用的代码。 然后我的模型和DAL位于这些库的顶部,只是添加项目细节
对于数据层,我通常使用:
Company.ProjectName.Data (即AdventureWorks.OrderManager.Data)
对于业务层,我更喜欢像“ObjectModel”这样的东西(我使用过“Business”或“BusinessLogic”,但这是数据在对象/类中汇集在一起的区域,所以为什么不这样命名呢?)。
Company.ProjectName.ObjectModel (即AdventureWorks.OrderManager.ObjectModel)
对于UI,我喜欢普通的“UI”或“演示”......
Company.ProjectName.Presentation (即AdventureWorks.OrderManager.Presentation)
大多数情况下,我使用Microsoft模式和实践.NET应用程序架构:设计应用程序和服务中推荐的分层体系结构。 Document描述了实现它的体系结构和.NET技术。
软件架构取决于要构建的软件类型。 如果您想进行内核编程,则与应用程序开发相比,其他原则也适用。 当您打算进行物理模拟,天气预报软件,软件IDE或编译器时,还有另一个原则适用。
我假设你想做应用程序开发。 那么,您很可能希望围绕您要反映的域设计您的软件。 但即使这样,也有很多选择。
在这个大的话题更深入的了解,我强烈建议阅读Domain Driven Design
从Eric Evans
和Applying Domain-Driven Design and Patterns
从Jimmmy Nilsson
。
我目前正在开发具有3层架构的前端Web应用程序:
它具有分层体系结构,Application层中的层是:
这只是一个示例项目结构,最终结果将取决于应用程序的类型。 关于包的划分和命名策略,您可以在我对这个问题的 答案中阅读更多内容。
您可以根据需要添加/交换/删除图层。 例如,在SOA中,您可以在应用层或服务层之上层叠Web服务层,以便ESB(企业服务总线)可以连接到您的应用程序或服务。 如果其中任何一项不可能或似乎非常困难,那么您就没有最佳的架构和设计。
在考虑项目结构并允许上述方案时,您需要的模块和组件的一些重要属性是:
您可以通过设计低耦合和高内聚来实现这一目标。 通过按功能/抽象级别对模块进行分组来选择分层体系结构是一个良好的开端。 在每个层内,通过功能进一步分组也有帮助。 让每个更具体的层仅依赖于更一般层的界面也减少了耦合。