7

我正在尝试为我们的产品开发考虑一个 Web 应用程序开发框架。我想构建一个包含许多子模块的 ASP.NET 应用程序。我的要求是这样的:

  1. 该应用程序将是一套不同的模块,如 CRM、Bugtracker、库存管理、财务管理等。

  2. 每个模块都应该有自己的 DLL。

  3. 一个项目应该用于应用程序的外部容器(如框架),并且该项目应该将解决方案中的所有其他模块(Web 应用程序类型)带到外部容器。(比如我们在 HTML 中有框架)。因此,我们将仅在一天结束时发布外部容器 Web 应用程序,所有其他 Web 应用程序项目都将通过它访问。

我希望每个模块都有单独的 DLL,因此当我部署控制整个套件的单个 DLL 时,我不必担心应用程序会中断。

我不确定我的想法是否朝着正确的方向发展。我正在寻找的最终结果是一个维护良好、组织有序且模块化的 Web 应用程序套件。

它是 ASP.NET Web 表单,而不是 MVC。我将使用 VS2010 进行开发。

执行此操作的最佳方法是什么?

编辑:

术语外部容器意味着它就像一个母版页,具有指向各种模块的链接,并且各种模块并不总是在同一个项目中。它们可以是同一解决方案下的单独项目。而且我的印象是,到一天结束时,我将只发布该项目,它将为它带来各种模块。

4

4 回答 4

3

实际上,我认为最好的方法是不过度架构的方法。我担心您似乎在没有充分理由的情况下制作整体架构。

这些都是新模块吗?然后开始写第一个。使用适用于单个模块的最佳实践。

然后写第二个。你会发现你想使用你在第一个模块中已经写过的东西。伟大的。这就是重构的目的。将这些东西重构到一个或多个“库”项目中,重新运行所有单元测试,然后继续第二个模块。

重复直到完成所有模块。

在此过程结束时,如果您需要您概述的那种架构,那么您将拥有它。如果您需要更少,那么您将拥有更少,并且您将不会花时间创建与现实世界需求无关的架构。

于 2010-11-19T17:18:49.470 回答
2

我不会说这是“最佳方法”,但我建议您查看Dot Net Nuke (DNN) 以获得一些想法。这始于 Microsoft 分发的用于展示 ASP.NET 项目的旧“我购买间谍”启动 Web 项目,并从那里起飞。

编辑:

1.该应用程序将是一套不同的模块,如 CRM、Bugtracker、库存管理、财务管理等。

你可以用 DNN 做到这一点。它们在 DNN 和 Drupal 中也被称为“模块”。

2.每个模块都应该有自己的DLL。

是的,这是个好主意。您会在 DNN 和 Drupal 等多个内容管理系统中看到这种情况。这样,并非同一网站的所有实现都需要安装所有模块。

我们有一个重要的网站,用于托管我们收费的“服务即解决方案”应用程序(如果您不是精算师或会计师,您不会听说过它)。过去几年的首席开发人员使用早期版本的 DotNetNuke 作为模型来重构允许他更改的应用程序部分。

于 2010-11-19T16:42:01.050 回答
1

以您的公司/产品命名主要项目,并保持简短。您可能需要一两个库项目来支持它——这些项目将包含日常常见的逻辑,例如错误报告、Web 实用程序方法等。

接下来,选择一个您想要的子项目(我不喜欢在这个特定上下文中使用术语模块)并将其添加到您的解决方案中。无论您是重用现有项目,还是最好从头开始,您最终都会将该项目中的任何通用逻辑移出到您的库中。

冲洗并重复。也许看看类似Sueetie项目的东西,它包括几个子项目,如 CMS、博客、日历、论坛等。

以下文章在 MSDN 上被标记为“过时”,但我仍然认为您应该看看它:

构建解决方案和项目

此外,来自 Patterns and Practices Group 的类似内容:

在 Team Foundation Source Control 中构建项目和解决方案

于 2010-11-20T16:58:31.420 回答
1

就像其他人建议的那样,DNN 可能适用于您正在尝试做的事情。如果您想完全自然地滚动自己,我会求助于容器“框架”和一堆用户控件(.ascx)的某种组合。容器可以像带有菜单的母版页一样简单。根据您希望设计的灵活性,您可以预制许多不同的页面,每个页面托管不同的控件(根据需要单独的 dll)。如果您希望它更具动态性,您可以拥有一个内容页面,该页面将在运行时将所需的用户控件动态加载到其中。同样,这只是一种通用方法,可能是对 DNN 是如何实现的 30000 英尺的看法。

于 2010-11-20T13:58:19.003 回答