2

我正在做一些研究/探索不同的网站设计和架构。一般来说,我想了解当今为网站所做的不同模式和实践。

具体来说,我正在寻找可组合和/或插件的网站设计。此设置的主要目的是允许每个插件或网站的一部分独立于其他部分进行开发。希望对其他部分的工作知识很少。我知道在身份验证和授权方面会有一些知识传播。主要目标是限制站点各部分之间的耦合,并限制代码更改对站点其他部分的影响。

我有一些想法,但我不确定它们是否是盗版的。这就是为什么我试图找到更多关于其他人做了什么的信息。

一些想法。
想法 1 是创建一个允许部署插件的 MVC 站点。有几种方法可以做到这一点。看到这里这里这里。插件可以独立于主站点开发和运行。完成后可以放入并使用主核心进行测试。一组母版页、CSS 和其他任何东西。这类似于大多数 CMS 系统的插件模型(例如:wordpress)

第二个想法是设计上的单一标志。站点的每个部分都可以作为自己的域/站点/等托管。但身份验证将在一个标志点完成。关于如何做到这一点的一些想法可以在这里看到。母版页、CSS 和其他项目可能必须在不同部分之间重复。

第三个想法是两者的混合。“核心”站点将处理样式和布局。内容将是对站点不同部分的 ajax 调用,这些部分可以托管在同一域上,也可以不托管在同一域上。

我还没有把这些想法冲洗掉,也没有做过任何原型设计。我正在这个过程的头脑风暴部分。唯一一成不变的是它将使用 C#/asp.net mvc 编写,并且站点的各个部分之间必须只有一个登录。除此之外,一切都是公平的游戏。

4

2 回答 2

1

我使用RazorGenerator。它可以通过 NuGet 安装(加上一个 VS 工具的安装),您所要做的就是在您的视图上设置自定义工具属性。

然后,您的核心站点将不得不使用虚拟路径提供程序的想法。您可以使用Chris van de Steeg 的方法,因为他已经构建了您需要的所有代码。

第三点,可以说是最重要的一点:如何让插件“暴露”它们的端点(控制器和动作)?您如何在正确的上下文和站点上的位置执行此操作?

为此,我使用了一个框架 DLL,它为不同的场景公开了大量的接口。主站点为不同类型的端点创建管理器,我有几个布局和助手类,它们调用管理器将端点呈现在正确的位置。在应用程序启动时,我遍历预定义目录中的所有插件 DLL,并使用反射检查它们的接口,然后将它们添加到适当的管理器中。

我还在站点中创建了一个“管理”区域来禁用端点,以便管理员可以覆盖插件的默认行为。

据我所知,并且正如我迄今为止所做的努力所证明的那样,没有预先存在的项目来处理这个问题。希望这对您的方向有所帮助。

于 2012-09-06T16:37:55.420 回答
1

我选择了上面的想法1。这是一些为 ASP.NET MVC 创建插件站点的示例代码,不需要任何第三方引用。它还包括要嵌入到插件 dll 中的所有站点内容。享受!

https://github.com/Oobert/ASP.NET-MVC-Plugins

于 2013-08-06T13:13:47.213 回答