我的开发工作中的一个重复主题是使用或创建内部插件架构.我已经看到它涉及多种方式 - 配置文件(XML,.conf等),继承框架,数据库信息,库等.在我的经验中:
当我试图从我曾经使用过的各种架构中学习时,我也在寻求社区的建议.您是如何实现SOLID插件架构的?你最糟糕的失败是什么(或者你看到的最严重的失败)?如果要实现新的插件架构,您会怎么做?您使用过的SDK或开源项目是否具有良好架构的最佳示例?
我自己找到的几个例子:
这些例子似乎发挥了各种语言优势.一个好的插件架构是否必然与语言相关?最好使用工具来创建插件架构,还是在自己的以下模型上进行?
我正在努力学习开发一个Web应用程序(最好是NodeJS/MongoDB,虽然之前我使用过PHP和Python),它是高度可扩展的,并且可以通过插件进行自定义以启用禁用功能.
一种可能的选择是使用带有插件和插件的钩子的Wordpress来挂钩,但是它缺乏适当的视图和逻辑代码分离.这仍然是学习的一种选择.还有其他选择吗?
你有任何代码片段或我可以学习的示例应用程序吗?语言或框架并不是那么重要,我可能会粗略地弄清楚背后的概念
基于这个问题,在这里和使用代码发现在这里,我试图加载嵌入资源在一个单独的DLL项目的意见,原来的问题的作者说,他已成功这样做-但我不能把它作为工作似乎MVC视图引擎正在拦截请求,仍然在查看视图的文件系统.例外:
Server Error in '/' Application.
The view 'Index' or its master could not be found. The following locations were searched:
~/Views/admin/Index.aspx
~/Views/admin/Index.ascx
~/Views/Shared/Index.aspx
~/Views/Shared/Index.ascx
~/App/Views/admin/Index.aspx
~/App/Views/admin/Index.ascx
~/App/Views/Shared/Index.aspx
~/App/Views/Shared/Index.ascx 
我使用的是CustomViewEngine像Rob Connery的/ App结构,如下所示:
public class CustomViewEngine : WebFormViewEngine
    {
         public CustomViewEngine()
         {
             MasterLocationFormats = new[] { 
                "~/App/Views/{1}/{0}.master", 
                "~/App/Views/Shared/{0}.master" 
                };
             ViewLocationFormats = new[] { 
                "~/App/Views/{1}/{0}.aspx", 
                "~/App/Views/{1}/{0}.ascx", 
                "~/App/Views/Shared/{0}.aspx", 
                "~/App/Views/Shared/{0}.ascx" 
                };
             PartialViewLocationFormats = ViewLocationFormats;
         }
    }
这是我的路线:
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.MapRoute("Home", "", new {controller = "Page", action = "Index", id …简介: 现在我知道这个问题可能非常广泛,如果没有我提出具体问题,就很难回答.所以我问的只是一个方向,或对设计的简短高级解释,或者可能已经有一些框架可以帮助我开始...我不确定..我从来没有设计过一个插件以前的架构,所以也许有一些资源/示例你可以指点我在网上,这将有助于我学习,以便我可以拿出自己的解决方案.
我的问题的详细信息: 我的意图是我想为我在ASP.NET MVC中构建的新宠物项目创建一个插件架构.
我想设计它,以便它对应用程序的所有组件或至少大多数组件具有某种插件功能.
我想这样做的原因是,我可能能够以几乎零停机时间进行部署.我的想法是,当我想部署最新版本时,我会将新的DLL放入一个特定的文件夹中,然后应用程序会加载新的插件,就是这样.
举例来说,我可以说我在我的网络应用程序中添加了一个新的"联系人"功能,用户可以在其中搜索,添加和删除联系人.我希望能够通过插件来部署它.
Web应用程序甚至可以这样吗?还是我只是在做梦?
我有一个解决方案与以下两个项目 - MyNamespace.Services和MyNamespace.Web.
Web包含MVC Web应用程序.
在Service项目中,我有一个EmailService类,负责向用户发送电子邮件.
我想对电子邮件模板使用部分或视图(ascx或aspx).我找到了几个关于如何呈现局部视图并将结果作为字符串获取的解决方案,如果模板位于Web项目中(因为它是调用电子邮件服务的Web项目中的控制器),该工作正常.
(我尝试使用的两种方法是http://developersisland.blogspot.com/2009/01/renderpartial-to-string-in-aspnet-mvc.html(位于博客底部)或http:/ /www.brightmix.com/blog/how-to-renderpartial-to-string-in-asp-net-mvc/)
但我的电子邮件模板位于服务项目中.
我如何从Web项目内部修改我的服务项目中的模板(部分/视图)的路径,它与LoadControl或RenderPartial一起使用,它们都将虚拟路径作为参数?
似乎无论我做什么,根目录都设置为Web项目目录.
可能吗 ?
很高兴能够以某种方式独立于Web项目工作.
我对MVC3相当不错,喜欢用它创建我的网站,但是,我还没有想到并实现一个"插件"系统的体面方法.
基本上,我的目标是拥有一个通用的"博客类型"CMS,我可以在我的网站上分发,但可以选择将某些内容作为插件.
例如:
通用构建:
插件:(可能需要一个或两个站点,但不是全部)
目前我只是通过一个配置文件完成所有功能并禁用它,但是如果我可以将一个文件夹放入我的FTP并拥有一个自动拾取它的MVC页面,这将是很好的!
我假设我必须从扫描目录"/ plugins"开始,然后选择一个包含基本细节的"plugin.config"(或类似的)文件.
但是,我如何让我的主系统选择这些东西并实际使用它们?!
asp.net-mvc ×4
architecture ×3
asp.net ×2
plugins ×2
c# ×1
frameworks ×1
partial ×1
path ×1
razor ×1
render ×1
view ×1