代码之家  ›  专栏  ›  技术社区  ›  Shyju

用模块化设计组织良好的ASP.NET应用程序的最佳方法

  •  7
  • Shyju  · 技术社区  · 14 年前

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

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

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

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

    我希望每个模块都有单独的dll,这样在部署控制整个套件的单个dll时,就不必担心应用程序崩溃。

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

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

    最好的方法是什么?

    编辑:

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

    4 回复  |  直到 6 年前
        1
  •  3
  •   John Saunders    14 年前

    实际上,我认为最好的方法应该是一种不会过度设计的方法。我担心你似乎没有充分的理由来制作一个完整的体系结构。

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

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

    重复,直到所有模块完成。

    在这个过程的最后,如果您需要您所概述的那种架构,那么您将拥有它。如果您需要的更少,那么您将拥有的更少,并且您将不会花时间创建与现实需求无关的体系结构。

        2
  •  2
  •   Tangurena    14 年前

    我不想说这是“最好的方法”,但我建议你看看 Dot Net Nuke (dnn)去获得一些想法。这始于微软为展示ASP.NET项目而发布的旧的“我买间谍”启动程序Web项目,并从那里开始。

    编辑:

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

    你可以用dnn做这个。它们在dnn和drupal中也被称为“模块”。

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

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

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

        3
  •  1
  •   e36M3    14 年前

    就像其他人建议的那样,dnn可能会为你想做的工作而工作。如果您想完全自然地滚动自己的控件,我将使用容器“框架”和一组用户控件(.ascx)的某种组合。容器可以像带有菜单的母版页一样简单。根据您想要的设计的灵活性,您可以预制许多不同的页面,每个页面承载不同的控件(根据您的需要单独设置DLL)。如果您希望它更具动态性,您可以拥有一个内容页,在运行时将所需的用户控件动态加载到其中。同样,这只是一个一般性的方法,大概可以从30000英尺的角度了解DNN是如何实现的。

        4
  •  1
  •   IrishChieftain    14 年前

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

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

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

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

    Structuring Solutions and Projects

    此外,模式和实践组中的类似内容:

    Structuring Projects and Solutions in Team Foundation Source Control