Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
你能在ASP.NET中有一个插件架构吗?_Asp.net_Architecture_Plugins - Fatal编程技术网

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

你能在ASP.NET中有一个插件架构吗?,asp.net,architecture,plugins,Asp.net,Architecture,Plugins,是否可以在ASP.NET网站中加载外部“web部件”?我想使独立的dll包含一个用户控件或网页,以包括在一个主站点。类似于网站的插件架构 我能找到的唯一的例子是将用户控件绑定到主项目,您需要对控件进行“硬”引用 我想定义一个共享接口,插件可以实现,网站可以加载和显示。这里讨论了如何将UserControls编译成DLL 对于你所描述的东西,我强烈推荐。您可以为所有插件提供一个抽象基类 public abstract class PluginBase : WebControl { } 然后可

是否可以在ASP.NET网站中加载外部“web部件”?我想使独立的dll包含一个用户控件或网页,以包括在一个主站点。类似于网站的插件架构

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


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

这里讨论了如何将
UserControl
s编译成DLL

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

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中注册插件,方法是提供一个类似示例的配置部分

这里讨论了如何将
UserControl
s编译成DLL

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

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中注册插件,方法是提供一个配置部分,如示例

插件可以实现您的接口。接口可以定义一种方法。此方法将必要的常规输入带到插件的上下文中。插件的责任是返回html标记,该标记可以放在最终的输出页面上。通过这种方式,您可以扩展此功能,但会影响页面生命周期和回发功能,因为页面不知道插件返回的是什么。

插件可以实现您的界面。接口可以定义一种方法。此方法将必要的常规输入带到插件的上下文中。插件的责任是返回html标记,该标记可以放在最终的输出页面上。通过这种方式,您可以扩展此功能,但会影响页面生命周期和回发功能,因为页面不知道插件返回的是什么。

我认为您希望有一个能够加载解耦模块的基础设施。(控制反转,或IoC)

了解更多关于WCSF的信息 Web客户端软件工厂 www.codeplex.com/websf

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

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

毕竟阅读了ASP.NET3.5社交网络 非常好的书

使用以下工具创建功能齐全的企业级社交网络 ASP.NET3.5 以实践的方式学习ASP.NET的关键新主题:LINQ、AJAX、, C#3.0、n层体系结构和MVC 建立好友列表、消息系统、用户配置文件、博客、消息 董事会、集团和更多机构 丰富的示例代码,清晰的解释,有趣的示例, 和实用的建议——一个真正的 ASP.NET开发人员的实践手册

www.packtpub.com/asp-.net-3.5/book社交网络专家指南

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


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

我认为您希望有一个能够加载解耦模块的基础设施。(控制反转,或IoC)

了解更多关于WCSF的信息 Web客户端软件工厂 www.codeplex.com/websf

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

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

毕竟阅读了ASP.NET3.5社交网络 非常好的书

使用以下工具创建功能齐全的企业级社交网络 ASP.NET3.5 以实践的方式学习ASP.NET的关键新主题:LINQ、AJAX、, C#3.0、n层体系结构和MVC 建立好友列表、消息系统、用户配置文件、博客、消息 董事会、集团和更多机构 丰富的示例代码,清晰的解释,有趣的示例, 和实用的建议——一个真正的 ASP.NET开发人员的实践手册

www.packtpub.com/asp-.net-3.5/book社交网络专家指南

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


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

您肯定可以拥有一个包含大量用户控件的DLL。当然,您的用户控件可以实现您选择的界面。然而,你似乎想要的不止这些——但我不确定到底是什么。用户控件似乎不能像插件一样“按需”加载。您需要在宿主网站中包含一个参考资料。我想能够加载任何实现我的界面的.dll,而不改变宿主网站。你肯定可以有一个包含一堆用户控件的dll。当然,您的用户控件可以实现您选择的界面。然而,你似乎想要的不止这些——但我不确定到底是什么。用户控件似乎不能像插件一样“按需”加载。您需要在宿主网站中包含一个参考资料。我希望能够加载实现我的接口的任何.dll,而不改变宿主网站。这似乎是一个很好的解决方案。你需要建立W吗