对于.NET和/或ASP.NET项目,是否有推荐的、建议的或常规的结构?

对于.NET和/或ASP.NET项目,是否有推荐的、建议的或常规的结构?,.net,asp.net,project-management,.net,Asp.net,Project Management,我正在考虑开始一个相当大规模的.NET或ASP.NET项目的工作(我还没有决定,但很可能最终,它将可以从用.NET编写的桌面应用程序以及ASP.NET web应用程序中访问)。然而,我不确定是否有一种传统的方式来组织这个项目 该项目本身是一个资源/知识管理工具,可以跟踪许多知识来源——人员、出版物(书籍、期刊、杂志)、网络资源、数字文档(包括PDF、Word文档、ODF文档、MP3等)以及我认为合适的其他资源。当然,因为它太大了,我希望能够一次实现和测试一个部分,但是将它们集成到单个系统中 一旦

我正在考虑开始一个相当大规模的.NET或ASP.NET项目的工作(我还没有决定,但很可能最终,它将可以从用.NET编写的桌面应用程序以及ASP.NET web应用程序中访问)。然而,我不确定是否有一种传统的方式来组织这个项目

该项目本身是一个资源/知识管理工具,可以跟踪许多知识来源——人员、出版物(书籍、期刊、杂志)、网络资源、数字文档(包括PDF、Word文档、ODF文档、MP3等)以及我认为合适的其他资源。当然,因为它太大了,我希望能够一次实现和测试一个部分,但是将它们集成到单个系统中

一旦我完成了一两个部分并进行了测试,我想将其作为一个开源工具发布。然而,如果其他人正在研究这个问题,我想给他们一个易于理解的结构。然而,我从未从事过ASP.NET项目,自从2.0框架问世以来,我就没有接触过.NET。我正在寻找.NET社区中存在的任何约定,以及任何关于如何构建这样一个大型项目的一般约定,以使设计、开发、测试、使用和维护对使用或从事此项目的任何人来说都尽可能简单和轻松


编辑1:我不仅在寻找模式(如Toran Billups所指出的),而且还在寻找目录结构、项目结构(如VisualStudio项目中),和文档结构。

如果您正在使用web表单技术,并且希望能够使用相同的代码库创建桌面应用程序,我建议使用模型视图演示器模式将UI从业务编码中分离出来。除了这种方法之外,我建议创建一个服务层来处理Presenter类之外的逻辑(包括数据访问/业务逻辑)

我发现创建一个类库来保存这个与UI无关的代码使得重用这个代码变得非常容易。如果您采用这种方式,这种体系结构也有助于实现简单的web服务转换,因为您的服务输入/输出在类库中应该与在web服务(WCF或ASMX)中相同


我会推荐伟大的JP Boodhoo从MSDN上写的优秀文章。我遵循同样的结构,最大的好处是我的UI不会驱动我的业务线应用程序。它们也更易于维护和重用。我可以让web表单应用程序使用我的WPF应用程序使用的类库。

对于代码树布局,我通常会执行以下操作:

projectname/
           /source/
           /source/projectname.sln
           /source/DataAccess/
           /source/DataAccess/DataAccess.csproj
           /database/schema/
           /database/schema/something.sql
           /database/testdata/
           /database/refdata/
           /tools/
           /COTS/
           /COTS/vendorname/
           /COTS/vendorname/somelib.dll
           /doc/
           /build/
           /installer/
           /projectname.build
因此顶层目录保存项目的构建文件。这可以是ant、make等。我们使用FinalBuilder。然后,您可以为每个源、数据库、工具、COTS、文档等创建子目录。您可能会想到其他子目录,但这些是显而易见的

我通常包括一个构建文件夹,用于暂存构建的输出。这将是安装程序查找其文件的地方

在源代码树的顶部是我的VisualStudio解决方案文件。每个子项目都有自己的subdir,其中保存了vs项目文件和其他所有内容。我喜欢把东西封装在相当小的项目中,所以一个解决方案中可能有10个项目,每个项目在源代码下都有自己的子目录

数据库脚本可以按您的喜好分开,但要尽量保持结构和数据分开

工具是为杂项的东西,你需要建立这个项目

COTS用于购买或下载依赖但无法自行构建的外部事物