Architecture 建立“客户关系”的最佳实践;“企业”;Visual Studio中的项目?

Architecture 建立“客户关系”的最佳实践;“企业”;Visual Studio中的项目?,architecture,Architecture,我正在准备为一家只有6名员工的小型企业开发一个企业风格的应用程序(包括我自己——在你问为什么一家6人公司需要一个企业应用程序之前,我们正在进行大量的过程和工具来简化它)。像往常一样,我试图在建立项目时遵循最佳实践;我将使用.NET3.5,数据库位于WindowsServer2003/SQLServer2005上 当我开发和测试解决方案时,我应该在我的主项目中拥有所有的东西吗?我的意思是。。。VisualStudio2008Professional允许您拥有“数据库项目”以及所有其他类型的项目。对

我正在准备为一家只有6名员工的小型企业开发一个企业风格的应用程序(包括我自己——在你问为什么一家6人公司需要一个企业应用程序之前,我们正在进行大量的过程和工具来简化它)。像往常一样,我试图在建立项目时遵循最佳实践;我将使用.NET3.5,数据库位于WindowsServer2003/SQLServer2005上

当我开发和测试解决方案时,我应该在我的主项目中拥有所有的东西吗?我的意思是。。。VisualStudio2008Professional允许您拥有“数据库项目”以及所有其他类型的项目。对于此应用程序,我需要:

  • 包含新数据架构的创建和测试脚本的数据库项目
  • C#包含实际代码/应用程序的项目:
  • 使用ASP.NET MVC面向客户的网站
  • 后端订单处理系统,可能基于web,但可能是“智能客户端”
  • SSIS项目,包含对供应商提供的“实时”应用程序数据进行ETL,并从遗留数据库迁移现有客户和订单数据的包
  • SQL Server Reporting Services的报表项目
基本上,我想知道将所有这些作为一个大规模VisualStudio解决方案的一部分(让我们称之为“企业解决方案”)是否是一个好主意,或者我是否应该将它们分开处理。我看过的大多数书籍和网站都将它们放在一起,但它们也假设有一个由开发人员、DBA、架构师等组成的团队——在本例中,我将所有这些人合并为一个团队。在编写应用程序的其余部分之前,需要完成数据库项目和至少一些ETL过程,并将其加载到生产中,因为我们需要在实时环境中加载新供应商的产品(以开始销售)

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


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

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

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


通过这种方式,我可以分别加载和测试应用程序的每个部分。

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

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


然而,我真的想提醒你,你只有一个解决方案,只有在必要的时候才把事情弄得更复杂。只需一次单击就可以构建所有内容,这很好。

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


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

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

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

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


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

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


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

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

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


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

随着时间的推移,您可能会使用多种客户端技术(Windows、web…),而将这些技术集群单独保存在它们自己的解决方案中可以使事情变得更简单

如果您正在寻找一个好的架构sa