可组合和/或可插入的网站架构

时间:2012-09-06 16:28:43

标签: html asp.net-mvc architecture

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

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

我有一些想法,但我不确定它们是否是海盗。这就是我试图找到其他人所做的更多信息的原因。

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

第二个想法是设计上的单一标志。网站的每个部分都可以作为自己的域/站点/托管进行托管。但是auth将在一个标志点完成。关于如何做到这一点的一些想法可以看作here。主页,CSS和其他项可能必须在不同部分之间重复。

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

我还没有冲出这些想法或做过任何原型设计。我正处于这个过程的头脑风暴部分。唯一可靠的是它将用C#/ asp.net mvc编写,并且网站各部分之间必须只有一个标志。除此之外,一切都是公平的游戏。

2 个答案:

答案 0 :(得分:1)

我使用RazorGenerator。它可以通过NuGet安装(加上VS工具的安装),您只需在视图上设置自定义工具属性。

您的核心网站必须使用虚拟路径提供商的想法。您可以使用Chris van de Steeg's approach for this,因为他已经构建了您需要的所有代码。

使它全部工作的粘合剂是第三个也可以说是最重要的一点:如何让插件“暴露”它们的终点(控制器和动作)?您如何在您网站上的正确背景和行踪中做到这一点?

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

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

据我所知,正如我迄今所做的努力所证明的那样,没有预先存在的项目可以解决这个问题。希望这有助于你的方向。

答案 1 :(得分:1)

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

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