在Visual Studio中设置“企业”项目的最佳实践?

问题描述:

我正准备为6名员工(包括我自己)的小型企业开发企业级应用程序 - 在您问及为什么6人公司需要企业应用程序之前,我们有很多正在进行的很多过程和工具需要简化它)。一如既往,我试图按照建立项目的最佳做法;我打算使用.NET 3.5,数据库在Windows Server 2003/SQL Server 2005上。在Visual Studio中设置“企业”项目的最佳实践?

在开发和测试解决方案时,我应该在我的主项目中拥有一切吗?我的意思是... Visual Studio 2008 Professional允许您拥有“数据库项目”以及所有其他类型的项目。对于这个应用程序,我将需要:包含创建和测试脚本为新的数据模式

  • 包含实际的代码/应用C#项目

    • 数据库项目:
      1. 面向客户的网站使用ASP.NET MVC网站()
      2. 后端的订单处理系统,可能是基于网络的,但可能是“智能客户端”
    • SSIS项目containin g软件包到ETL由我们的供应商提供的“实时”应用程序数据,并从现有客户和订单数据迁移到旧数据库。对于SQL Server报表服务

    基本上

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

    我对我该如何开始构建这个有点不知所措,但是我想在开始编写代码并开始编码之前想出一个总体计划。

    关于如何解决这样的项目的任何建议?

  • 使用一个解决方案与其中的几个项目绝对是一个好主意。如果你想使用ASP.NET MVC为每一层定义一个C#项目:MVC Web,服务层,数据访问层和单独的测试项目。 您可以从Rob Conery的Storefront示例应用程序或Oxite中了解到。

    您可以尝试使用也指导包从模式&实践团队:

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

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

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

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

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

    你如何做到这一点取决于系统的不同部分如何相互连接。最简单的方法是采用面向服务的体系结构。然后每个服务都可以有不同的解决方案,而前端则是自己的解决方案。

    但是,我真的会推荐你用一种解决方案开展工作,只有在需要时才会使事情变得更加复杂。它很高兴能够通过点击来构建一切。

    如果您需要分解稍后可以做的元素,只要保持对象松散耦合,就没有理由让应用程序不能全部集成在一个中。

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

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

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

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

    谢谢,祝你的项目顺利。

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

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

    我发现它最方便的维护单独的解决方案,客户端和服务器端的代码。这假设服务器提供了一个稳定的接口,如Web服务或WCF接口。随着时间的推移,随着时间的推移,你可能会使用多种客户端技术(Windows,web ...),并将这些技术集群分开存放在自己的解决方案中,这样可以让事情更简单。

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

    罗斯文入门套件是由管理 设计(http://www.manageddesigns.it) 和意欲生产的样品 应用设计和实现.NET 分层应用体系结构时要使用作为蓝图 。该 应用程序使用标准 Northwind数据库,如包含在 微软SQL Server和Microsoft 访问:为了 安装和运行入门工具包都需要在 数据库架构进行任何修改。

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

    + tom