【问题标题】:What's the best way to structure a project? [closed]构建项目的最佳方式是什么? [关闭]
【发布时间】:2010-10-09 01:28:53
【问题描述】:

我想知道我应该如何构建我的项目。

我们有一些项目在其他项目中(重新)使用。

我的意思是,我们的数据项目和模型项目在一对多的其他项目中使用。

我真正知道的是如何构建这种类型的项目,最好的命名方式是什么?

在标准的 3 层应用程序中,应该类似于:

  1. DAL、DataAccessLayer、数据...
  2. 模型、BusinessObject、BOL ...
  3. 用户界面、视图...

还有其他想法吗?

在我工作的每家公司,他们都有不同的组织方式,有没有比另一个更好的?您使用哪一种,您更喜欢哪一种,为什么?

谢谢!

【问题讨论】:

    标签: architecture projects n-tier-architecture layered


    【解决方案1】:

    这几乎就是我所做的,除了我有几个库项目我尝试放置我所有的可重用代码。然后我的模型和 DAL 位于这些库之上,只需向它们添加项目细节。

    【讨论】:

      【解决方案2】:

      对于数据层,我通常使用:

      Company.ProjectName.Data(即 AdventureWorks.OrderManager.Data)

      对于业务层,我更喜欢“ObjectModel”之类的东西(我使用过“Business”或“BusinessLogic”,但这是数据在对象/类中聚集在一起的区域,所以为什么不这样命名呢?)。

      Company.ProjectName.ObjectModel(即 AdventureWorks.OrderManager.ObjectModel)

      对于 UI,我喜欢简单的旧“UI”或“Presentation”...

      Company.ProjectName.Presentation(即 AdventureWorks.OrderManager.Presentation)

      【讨论】:

        【解决方案3】:

        我主要使用 Microsoft Patterns & Practices Application Architecture for .NET: Designing Applications and Services 中推荐的分层架构。文档描述了架构和实现它的 .NET 技术。

        【讨论】:

          【解决方案4】:

          软件架构取决于要构建的软件类型。如果您想进行内核编程,则与进行应用程序开发相比,其他原则适用。当您要进行物理模拟、天气预报软件、软件 IDE 或编译器时,还有另一个原则适用。

          我假设您想做应用程序开发。那么,您很可能希望围绕您要反映的领域来设计您的软件。但即便如此,也有很多选择。

          为了更深入地了解这个大主题,我强烈建议阅读Eric Evans 中的Domain Driven DesignJimmmy Nilsson 中的Applying Domain-Driven Design and Patterns

          【讨论】:

            【解决方案5】:

            我目前正在开发具有 3 层架构的前端 Web 应用程序:

            • 客户端层(浏览器)
            • 应用层(Java EE 应用服务器,应用所在的位置)
            • 后端层(大型机和旧版应用程序、各种数据库)

            它具有分层架构,应用层中的层有:

            • 表示层:生成将在客户端层中使用的 UI
            • 应用层:相当于用例,包含应用逻辑
            • 服务层:将后端层的域逻辑和数据映射到 Java 模型上
            • 集成层:与后端层通信并包含用于 JMS、电子邮件、...以及 DAO 和其他东西的网关

            这只是一个示例项目结构,最终结果将取决于应用程序的类型。您可以在my answerthis question 中阅读更多关于包的划分和命名策略的信息。

            您可以根据需要添加/交换/删除图层。例如,在 SOA 中,您可以在应用程序层或服务层之上放置一个 Web 服务层,以便 ESB(企业服务总线)可以连接到您的应用程序或服务。如果其中任何一项不可能或看起来非常困难,那么您就没有最佳的架构和设计。

            在考虑您的项目结构并允许上述场景时,您想要的模块和组件的一些重要属性是:

            • 可测试性
            • 可重用性
            • 可维护性

            您可以通过设计低耦合和高内聚来实现这一点。通过按功能/抽象级别对模块进行分组来选择分层架构是一个好的开始。在每一层内按功能进一步分组也有帮助。让每个更具体的层只依赖于更通用层的接口也减少了耦合。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2011-06-11
              • 2023-01-20
              • 1970-01-01
              • 2022-01-19
              • 1970-01-01
              • 2010-09-20
              • 1970-01-01
              相关资源
              最近更新 更多