C# ASP.NETWebApplication的插件

C# ASP.NETWebApplication的插件,c#,asp.net,asp.net-mvc,web,plugins,C#,Asp.net,Asp.net Mvc,Web,Plugins,我正在使用ASP.NET MVC框架开发一个用C#编写的Web应用程序 我希望允许我的客户为web应用程序编写自己的插件。每个客户端都有自己的数据库 我有一些想法如何做到这一点: 我将提供一个接口,允许用户上传他的汇编dll。这会将dll存储在客户端的特定插件文件夹中 我将为类和方法注释提供一些C#接口和属性 服务器的业务逻辑将检查每个插件,并搜索具有这些属性或接口实现的类和方法,以覆盖或更改其在某些点上的默认行为 为了提高性能,我将实现某种形式的缓存,这种缓存在每次上传新插件时都会失效 现在我

我正在使用ASP.NET MVC框架开发一个用C#编写的Web应用程序

我希望允许我的客户为web应用程序编写自己的插件。每个客户端都有自己的数据库

我有一些想法如何做到这一点:

  • 我将提供一个接口,允许用户上传他的汇编dll。这会将dll存储在客户端的特定插件文件夹中
  • 我将为类和方法注释提供一些C#接口和属性
  • 服务器的业务逻辑将检查每个插件,并搜索具有这些属性或接口实现的类和方法,以覆盖或更改其在某些点上的默认行为
  • 为了提高性能,我将实现某种形式的缓存,这种缓存在每次上传新插件时都会失效
  • 现在我的问题是: 如何允许用户编写插件?我的意思是如何为此提供某种SDK?用户主要需要C#接口和注释,但开发人员也希望在将插件上传到生产服务器之前对其进行测试。我是否可以将我的Web应用程序打包在某种DLL中,开发人员可以加载这些DLL进行测试,但不读取源代码?或者还有其他的方法吗


    谢谢你提供的任何信息

    您应该看看MEF(托管可扩展性框架),这是Microsoft创建的一个框架,用于支持插件应用程序

    简而言之:您创建了一个包含合同(接口)的库。您将该库提供给您的客户,并告诉他们基于这些接口编写插件

    然后告诉应用程序,当它需要
    IPlugin
    时,它需要在插件文件夹中搜索
    IPlugin
    的实现并使用它

    一些研究网址: