我正在考虑为我们的产品开发考虑一个Web应用程序开发框架。我想构建一个ASP.NET应用程序,其中包含许多子模块。我的要求如下:
该应用程序将是一套不同的模块,如CRM,Bugtracker,库存管理,财务管理等。
每个模块都应该有自己的DLL。
一个项目应该是应用程序的外部容器(如框架),并且该项目应该将解决方案中的所有其他模块(类型为Web应用程序)引入外部容器。 (有些事我们在HTML中有框架)。因此,我们将仅在一天结束时发布外部容器Web应用程序,并通过该方式访问所有其他Web应用程序项目。
我想为每个模块分别使用DLL,因此在部署控制整个套件的单个DLL时,我不必担心应用程序崩溃。
我不确定我的想法是否正确。我正在寻找的最终结果是维护良好,有条理和模块化的Web应用程序套件。
它是ASP.NET Web表单,而不是MVC。我将使用VS2010进行开发。
这样做的最佳方法是什么?
修改:
术语外部容器意味着它就像一个母版页,它有各种模块的链接,各种模块并不总是在同一个项目中。它们可以是同一解决方案下的独立项目。而且我的印象是,到那天结束时,我将只发布该项目,它将带来各种模块。
答案 0 :(得分:3)
我实际上认为最好的方法是不过度架构的方法。我担心你似乎没有充分的理由生成整体架构。
这些都是新模块吗?然后开始写第一个。使用适用于单个模块的最佳实践。
然后写下第二个。你会发现你想要使用你在第一个模块中写过的东西。大。这就是重构的目的。将这些内容重构为一个或多个“库”项目,重新运行所有单元测试,然后继续第二个模块。
重复直到所有模块完成。
在此过程结束时,如果您需要您所概述的那种架构,那么您将拥有它。如果你需要更少,那么你就会少花钱,而且你不会花时间创建一个与实际需求无关的架构。
答案 1 :(得分:2)
我不会说这是一种“最佳方法”,但我建议查看Dot Net Nuke(DNN)以获得一些想法。这开始于Microsoft分发用于展示ASP.NET项目的旧“I Buy Spy”入门Web项目,并从那里起飞。
编辑:
1.该应用程序将是一套不同的模块,如CRM,Bugtracker,库存管理,财务管理等。
您可以使用DNN执行此操作。它们在DNN和Drupal中也被称为“模块”。
2.每个模块应该有自己的DLL。
是的,这是一个好主意。你会在DNN和Drupal等几个内容管理系统中看到这种东西。这样,并非同一网站的所有实现都需要安装所有模块。
我们有一个重要的网站,用于托管我们收取的“服务作为解决方案”应用程序(如果您不是精算师或会计师,您将听不到它)。过去几年的主要开发人员使用早期版本的DotNetNuke作为模型,用于重构他允许更改的应用程序部分。
答案 2 :(得分:1)
像其他人一样建议DNN可能适用于你想要做的事情。如果你想完全自己滚动,我会转向某种容器“Framework”和一堆用户控件(.ascx)的组合。容器可以像带有菜单的母版页一样简单。根据您对设计的灵活程度,您可以预制许多不同的页面,每个页面都有不同的控件(根据需要单独使用dll)。如果您希望它更具动态性,您可以拥有一个内容页面,该页面将在运行时动态加载所需的用户控件。同样,这只是一种通用方法,可能是对FSN如何实施的30000英尺视图。
答案 3 :(得分:1)
将公司/产品命名为主项目,并保持简洁明了。您可能需要一个或两个库项目来支持它 - 这些项目将包含error reporting,Web实用程序方法等等的日常通用逻辑。
接下来,选择一个您想要的sub-projects(我不喜欢这个特定上下文中的术语模块)并将其添加到您的解决方案中。无论您是重用现有项目,还是最好从头开始,您最终都会将此项目中的任何通用逻辑移到您的库中。
冲洗并重复。也许看看类似于Sueetie项目的类似项目,其中包括CMS,博客,日历,论坛等几个子项目。
以下文章在MSDN上标记为“过时”,但我仍然认为你应该看看它:
Structuring Solutions and Projects
此外,类似于模式和实践组:
Structuring Projects and Solutions in Team Foundation Source Control