【问题标题】:Best practices for setting up an "enterprise" project in Visual Studio? [closed]在 Visual Studio 中设置“企业”项目的最佳实践? [关闭]
【发布时间】:2009-02-17 15:09:07
【问题描述】:

我正在为一家只有 6 名员工(包括我自己)的小型企业(包括我自己)开发企业风格的应用程序,在您质疑为什么 6 人的公司需要企业应用程序之前,我们有很多事情要做需要很多流程和工具来简化它)。与往常一样,我在设置项目时尝试遵循最佳实践;我将使用 .NET 3.5,数据库位于 Windows Server 2003/SQL Server 2005 上。

在我开发和测试解决方案时,我是否应该在我的主项目中包含所有内容?我的意思是... Visual Studio 2008 Professional 让您拥有“数据库项目”以及所有其他类型的项目。对于这个应用程序,我需要:

  • 包含新数据模式的创建和测试脚本的数据库项目
  • 包含实际代码/应用程序的 C# 项目:
    1. 使用 ASP.NET MVC 的面向客户的网站
    2. 后端订单处理系统,可能基于 Web,但也可能是“智能客户端”
  • SSIS 项目包含用于对我们的供应商提供的“实时”应用程序数据进行 ETL 并从旧数据库迁移现有客户和订单数据的包。
  • SQL Server Reporting Services 的报告项目

基本上,我想知道将所有这些作为一个庞大的 Visual Studio 解决方案的一部分(我们称之为“EnterpriseSolution”)是否是一个好主意,或者我是否应该将它们分开并单独处理。我看过的大多数书籍和网站都将它们都包含在一起,但它们也假设有一个由开发人员、DBA、架构师等组成的团队——在这种情况下,我将他们全部整合在一起。在编写应用程序的其余部分之前,需要完成数据库项目和至少一些 ETL 流程并将其加载到生产环境中,因为我们需要在实际环境中加载新供应商的产品(以开始销售它们)。

对于应该如何开始构建它,我有点不知所措,但我想在开始布局和开始编码之前制定一个总体计划。

关于如何处理这样的项目有什么建议吗?

【问题讨论】:

    标签: architecture


    【解决方案1】:

    使用一个包含多个项目的解决方案绝对是个好主意。如果要使用 ASP.NET MVC,请为每一层定义一个 C# 项目:MVC Web、服务层、数据访问层和单独的测试项目。 您可以从 Rob Conery 的 Storefront 示例应用程序或 Oxite 学习。

    您也可以尝试使用来自模式和实践组的指导包:

    http://msdn.microsoft.com/en-us/practices/default.aspx

    【讨论】:

      【解决方案2】:

      我发现在单独的解决方案中维护客户端和服务器端代码最方便。这假定服务器提供了一个稳定的接口,例如 Web 服务或 WCF 接口。

      随着时间的推移,您可能会使用一种以上的客户端技术(Windows、Web...),并且在各自的解决方案中保持这些技术集群分开可以让事情变得更简单。

      如果您正在寻找一个好的架构示例,请参阅 CodePlex 的 Northwind Starter Kit。我在阅读 Dino Esposito 和 Andrea Saltarello 的“Microsoft .Net: Architecting Applications for the Enterprise”时发现​​了这一点。

      Northwind 入门套件是一个示例 由 Managed 制作的应用程序 设计 (http://www.manageddesigns.it) 并打算用作蓝图 在设计和实现 .NET 时 分层应用架构。这 应用程序使用标准 Northwind 数据库,包括在 微软 SQL Server 和微软 访问:没有修改 数据库模式是必需的 安装和运行入门工具包。

      我同意@Chris Ballance 的观点,即包含一个数据库项目会很有帮助。但请注意,DB 项目可能看起来有点复杂,因为它会同步项目和引用 DB 结构。

      +汤姆

      【讨论】:

        【解决方案3】:

        我建议创建一个“空白解决方案”来启动它是一个 *.sln 文件(比如 EnterpriseSolution.sln),该文件将位于名为 EneterpriseSolution 的文件夹中。可以从“其他类型”创建空白解决方案。然后,我将添加您描述为单独项目的其他部分,每个部分都在“EnterpriseSolution”文件夹下的自己的文件夹中。

        例如,您的每个面向客户的网站都有自己的项目文件夹。看起来您将拥有多个网站,因此如果您使用一个解决方案包装器,则需要确保为每个网站设置不同的“端口”以在其下运行。但是,您也可以创建不同的解决方案“包装器”(作为启动的空白解决方案,然后项目引用您想要的项目)以将每个网站单独包含在您的文件夹结构中,以便您可以专注于企业解决方案的一部分。但实际上你会知道所有东西在哪里以及它是如何组织的。

        这样,当您通过 Windows 资源管理器查看企业解决方案文件夹时,您将看到的唯一内容是您的解决方案文件和项目文件夹。

        感谢您的项目,祝您好运。

        【讨论】:

          【解决方案4】:

          我所做的是为项目的每个独立部分创建单独的解决方案,然后开始将它们集成到更复杂的解决方案中。这样您就可以只加载应用程序的一部分以进行单元测试或调试。

          例如,在一个多层应用程序中,我会为数据层和一个单元测试项目创建一个独立的解决方案。另一种解决方案将包括数据层和业务对象层与单元测试一起工作。完整的解决方案将包括上述项目以及 UI 项目

          这样我可以分别加载和测试我的应用程序的每个部分。

          【讨论】:

            【解决方案5】:

            我喜欢从单一解决方案开始,直到它变得如此之大以至于构建时间明显变慢。

            您如何做到这一点实际上取决于系统的不同部分如何相互连接。最简单的方法是采用面向服务的架构。然后每个服务可以有不同的解决方案和前端自己的解决方案。

            但是,我真的建议您采用一种解决方案,并且仅在必要时使事情变得更加复杂。很高兴能够一键构建所有内容。

            【讨论】:

              【解决方案6】:

              应用程序没有理由不能成为一体,如果您需要分解元素,您可以稍后再做,只要您保持对象松散耦合即可。

              拥有独立项目的一个好处是,您可以成功编译一个部分,而其他部分不完整,只需卸载它们即可。

              【讨论】:

                【解决方案7】:

                首先,数据库项目是很棒的东西,我强烈建议您将它用于您的数据层。

                我会按项目分开,因为它是有意义的,但将它们全部放在同一个解决方案中。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2010-11-11
                  • 1970-01-01
                  • 2014-07-28
                  • 1970-01-01
                  • 2020-02-05
                  • 2021-06-26
                  相关资源
                  最近更新 更多