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

时间:2009-02-17 15:09:07

标签: architecture

我正准备为6名员工(包括我自己)的小型企业开发企业级应用程序 - 在您质疑为什么6人公司需要企业应用程序之前,我们有很多事情要做简化它需要很多流程和工具。一如既往,我正在努力遵循建立项目的最佳实践;我将使用.NET 3.5,数据库在Windows Server 2003 / SQL Server 2005上。

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

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

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

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

有关如何处理此类项目的任何建议?

7 个答案:

答案 0 :(得分:2)

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

您也可以尝试使用模式和指南中的指导套餐。实践小组:

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

答案 1 :(得分:2)

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

随着时间的推移,您可能会使用多种客户端技术(Windows,网络......),并在这些技术中将这些技术集合在一起,使其更加简单。

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

  

Northwind Starter Kit是一个示例   应用程序由Managed生成   设计(http://www.manageddesigns.it)   并打算用作蓝图   在设计和实现.NET时   分层应用架构。该   应用程序使用该标准   Northwind数据库,包括在内   Microsoft SQL Server和Microsoft   访问:没有修改   数据库架构是按顺序需要的   安装和运行入门工具包。

我同意@Chris Ballance的观点,包括数据库项目可能非常有用。但请注意,DB Project在同步项目和参考DB结构时看起来有点复杂。

+汤姆

答案 2 :(得分:1)

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

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

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

谢谢,祝你的项目好运。

答案 3 :(得分:0)

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

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

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

答案 4 :(得分:0)

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

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

然而,我真的会建议您使用一种解决方案,只有在需要时才会使事情变得更复杂。能够通过一次点击构建所有内容真是太好了。

答案 5 :(得分:0)

如果您需要拆分以后可以执行的操作,只要保持对象松散耦合,就没有理由将应用程序整合在一起。

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

答案 6 :(得分:0)

首先,数据库项目非常棒,我强烈建议您将它用于数据层。

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