【问题标题】:Dynamic pipeline architecture in .Net.Net 中的动态管道架构
【发布时间】:2014-11-05 21:06:23
【问题描述】:

我正在为多租户 ASP.NET 解决方案制作一个原型,它将为所有租户处理(逐步)相同类型的消息。但是,对于某些租户,某些步骤需要处理的稍有不同。

所以,我们假设一种消息类型,有十个步骤,我们有 100 个租户。平均而言,一个租户有两个自定义步骤。这提供了 10 个标准步骤实现和 20 个自定义。

我想要实现的是能够使用更新的步骤实现(新 DLL)来更新解决方案,而无需重新启动整个解决方案。所以问题是 - 最好的架构是什么?

我一直在考虑让每个步骤实现在单独的 AppDomain 中运行,但随着消息类型、租户和步骤数量的增加,我们会得到很多 AppDomain,我猜这会占用大量内存并且可能没有给出最佳性能。

这是最好/唯一的方法,还是我应该研究另一种方法?

【问题讨论】:

    标签: c# .net architecture appdomain pipeline


    【解决方案1】:

    如果您使用的是 MVC(甚至可能是 Web 表单),您可以在内联 Razor 代码中编写您的“步骤”。然后,当其中一个需要更新时,只需上传一个新文件。 IIS 将自动获取更改,您无需执行任何操作。

    【讨论】:

    • 我会考虑这一点,但大多数步骤通常不会在 Razor 代码中执行 - 它们可能包括对数据库或复杂逻辑的查询。因此,即使可能,这也不是我心目中的最佳解决方案。
    • Razor 在 Web 服务器上运行,具有对数据库或您可能需要的任何其他服务器端资源的完全访问权限,并在与控制器代码相同的管道中执行。 MVC(视图和控制器的分离)只是一种约定。更改应用程序该区域的约定对您来说并不过分。世界不会分崩离析。 :) 在这种情况下,您可以将 MVC 视为一种插件架构(例如 MEF)——这正是您所需要的。
    • 我同意这是一种可行的方法——它只是不太适合我;)不过,我会看看这种方法。也许它比我想象的要好:)
    • 我明白了。我希望您找到一个既实用又令人愉悦的解决方案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 2019-03-03
    • 2021-02-27
    • 1970-01-01
    • 2020-04-26
    • 2017-12-18
    • 2016-08-02
    相关资源
    最近更新 更多