代码之家  ›  专栏  ›  技术社区  ›  Robert Massa

你能在ASP.NET中有一个插件架构吗?

  •  0
  • Robert Massa  · 技术社区  · 15 年前

    是否可以在ASP.NET网站中加载外部“Web部件”?我想使包含用户控件或页面的独立dll包含在主站点中。就像网站的插件架构。

    我能找到的唯一的例子是将用户控件绑定到主项目,您需要有一个对该控件的“硬”引用。

    我想定义一个插件可以实现的共享接口,并且网站可以加载和显示。

    3 回复  |  直到 15 年前
        1
  •  3
  •   Community CDub    8 年前

    这里有一个关于编译的讨论 UserControl 进入DLL

    ASP.NET UserControl class library

    对于你所描述的,我强烈推荐 creating custom server controls .您可以为所有插件提供一个抽象的基类。

    public abstract class PluginBase : WebControl {
    
    }
    

    然后,可以在目录中搜索程序集,并在每个程序集中搜索从该类型派生的任何内容。

        DirectoryInfo di = new DirectoryInfo(path);
        FileInfo[] assemblies = di.GetFiles("*.dll");
        foreach (var assembly in assemblies) {
            Assembly a = Assembly.LoadFrom(assembly.FullName);
            foreach (Type type in a.GetTypes()) {
                if (type.BaseType == typeof(PluginBase)) {                     
                    //load plugin
                }
            } 
        }
    

    您也可以在web.config中注册插件,方法是提供类似示例的config部分 here

        2
  •  1
  •   this. __curious_geek    15 年前

    插件可以实现您的接口。接口可以定义一个方法。这个方法需要对插件上下文进行必要的常规输入。插件的职责是返回HTML标记,该标记可以放置在最终输出页面上。通过这种方式,您可以扩大这个范围,但会危及页面生命周期和回发功能,因为页面不知道插件返回了什么。

        3
  •  1
  •   Navid    15 年前

    我认为您希望有一个能够加载分离模块的基础设施(InversionofControl,或IOC)。

    了解更多有关wcsf的信息 Web客户端软件工厂 网址:www.codeplex.com/websf

    如果您想要使用模块化方法设计Web应用程序的好的示例代码,请下载 Cuyahoga

    Cuyahoga是一个开源的.NET Web 网站框架。它提供内容 管理能力和 模块化方法

    毕竟,阅读ASP.NET 3.5社交网络 非常好的一本书。

    使用 ASP.NET 3.5 以实际动手的方式学习关键的新ASP.NET主题:Linq、Ajax、 C 3.0、N层架构和MVC 构建朋友列表、消息系统、用户配置文件、博客、消息 板、组等 丰富的示例代码、清晰的解释、有趣的示例, 以及实用的建议 面向ASP.NET开发人员的实际操作手册

    www.packtpub.com/expert guide for social networking with asp-.net-3.5/book

    作者向我们展示了如何将设计模式应用于真实的Web应用程序。 所有以粗体突出显示的模块都使用IOC模式开发,使用 结构图

    这本书还有非常好的示例代码,您可以从packt发布网站下载。