2

我正在创建某种插件系统。目前我正在使用WinForms应用程序加载程序集,使用Assembly.LoadActivator.CreateInstance. WinForms GUI 应该只显示当前加载的程序集(插件)的名称。

库中有一个类PluginManager,它实例化并保存所有IPlugin实现者的列表。

但是,我现在希望能够从Silverlight应用程序访问插件列表(仅它们的名称)。

Silverlight 4在 Visual Studio 中创建了一个应用程序。

这增加了两个项目:

  • MyProject(SL 4 项目)
  • MyProject.Web(包含运行 .xap 文件的 .aspx 启动页面)

我需要的是PluginManager不仅在silverlight页面请求(通过aspx页面)期间加载及其实例化插件,而且始终加载,即使用户从未在浏览器中打开silverlight应用程序。我对 .Web 项目的入口点是什么感到困惑。(在控制台应用程序中,我会将代码放入 Main 方法中,在 WinForms 中的 Loaded 事件处理程序中,但我不知道在这个.Web项目中从哪里开始我的“服务”)。

这是如何运作的?我应该在哪里实例化我的PluginManager?该.Web项目仅在 HTTP 请求期间是短暂的,还是可以连续运行?

4

1 回答 1

0

将 Global.asax 添加到 MyProject.Web。并在 Application_Start() 方法中执行此操作。此方法仅在构建应用程序时调用一次。

如果您需要在构建应用程序之前运行 PluginManager,您应该创建一个从安装程序运行的 Windows 服务。该服务将实例化 PluginManager。

于 2011-08-22T12:59:11.233 回答