首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >应该为分布式应用程序中的插件动态加载定制MEF的哪些部分。

应该为分布式应用程序中的插件动态加载定制MEF的哪些部分。
EN

Stack Overflow用户
提问于 2012-08-14 11:40:35
回答 1查看 485关注 0票数 2

我的仿真应用程序将使用插件提供仿真算法和数据结构,以存储仿真数据。应用程序由两部分组成。首先是主机应用程序,它提供UI (作为WPF UI或作为CAD应用程序的插件)。此应用程序处理与用户的所有交互,但不执行任何模拟计算,也不存储任何模拟数据。第二部分是进行仿真计算的数据应用。数据应用程序没有任何方式让用户直接与其交互,所有输入都是通过与主机的连接提供的(如果两者位于同一台计算机上,则通过命名管道提供,如果它们位于不同的计算机上,则通过TCP提供)。这种方法允许通过具有多个数据应用程序的单个主机进行分布式计算。

该数据应用通过一个或多个插件提供数据存储方法、仿真算法等,以便于添加新功能。为了使这一计划发挥作用,计划是:

  • 让主机应用程序执行插件搜索。主机应该存储描述插件及其元数据的数据,但是它永远不会实例化任何插件类。为了防止将程序集加载到主机应用程序中,必须以某种序列化格式存储插件的描述。
  • dataset应用程序将从主机请求插件信息,确定要加载的插件,请求传输正确的程序集(对于分布式计算来说是必要的),并加载插件。
  • 选择正确的插件应该基于类型(如在System.Type中)和其他信息,如优先级等。

为了让所有这些都奏效,我想我必须:

  • 为数据应用程序编写某种延迟加载目录(类似Silverlight中的DeploymentCatalog )。诀窍可能是,在应用程序确定需要实例化哪些类之后,只请求要传输和加载的程序集。
  • 为主机应用程序编写自己的程序集扫描机制,该应用程序将插件信息存储在某个序列化(string?)格式,以防止插件程序集加载到主机应用程序中。
  • 编写某种加载机制,可以选择正确的插件类,并确定如何加载它和提供哪些构造参数。
  • 找到允许插件指定设置值(包括默认值和所述值的本地化描述)和元数据的方法。

我想做尽可能少的工作,所以我查看了一些可用的.NET插件系统,从它的外观看,MEF似乎是最有希望的候选人。我已经阅读了MEF的架构和能力,但我仍然有点不知道我应该把精力集中在哪里。那么,我的问题是,MEF的哪些部分需要定制才能使MEF与我计划的方法一起工作呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-07 02:42:42

结果显示,MEF丢失了插件程序集延迟加载所需的某些位,但是,可以在应用程序的插件部分使用MEF的某些部分。

  • 组件的延迟加载是通过实现AppDomain.AssemblyResolve事件的处理程序来完成的。此解析器使用现有通信功能(主机应用程序和dataset应用程序之间通信所必需的)来传输所需的程序集。
  • 插件数据的扫描和序列化是按照answer对相关问题的解释实现的。此部分主要使用MEF对插件数据进行检测和序列化.
  • 在MEF中,在不实例化对象的情况下组合部件似乎是不可能的,因此应用程序的这一部分按照此answer提供的实现来实现。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11951501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档