我正在创建某种插件系统。目前,我正在使用WinForms
应用加载程序集,使用Assembly.Load
和Activator.CreateInstance
。 WinForms GUI应该只显示当前加载的程序集(插件)的名称。
库PluginManager
中有一个类,它实例化并保存所有IPlugin
个实现者的列表。
但是,我现在希望能够从Silverlight
应用程序访问插件列表(仅限其名称)。
我在Visual Studio中创建了一个Silverlight 4
应用程序。
这增加了两个项目:
MyProject
(SL 4项目)MyProject.Web
(包含运行.xap文件的.aspx启动页面)我需要的是PluginManager
及其实例化的插件不仅要在silverlight页面请求期间(通过aspx页面)加载,而且要始终加载,即使用户从未打开过Silverlight应用程序浏览器。我对.Web项目的切入点感到困惑。 (在控制台应用程序中,我会将代码放入Main方法,在Loaded事件处理程序的WinForms中,但我不知道在这个.Web
项目中从哪里开始我的“服务”。
这是如何工作的?我应该在哪里实例化PluginManager
?这个.Web
项目仅在HTTP请求期间是短暂的,还是可以连续运行?
答案 0 :(得分:0)
将Global.asax添加到MyProject.Web。并在Application_Start()方法中执行此操作。 构建应用程序时,此方法仅调用一次。
如果您需要在构建应用程序之前运行PluginManager,则应创建一个从安装程序运行的Windows服务。该服务将实例化PluginManager。