1、MVC---->MVP---->MVVM:这三者是进化关系,一般到特殊。MVC是比较笼统的,平台无关的。而MVVM则是针对WPF的,仅适用于WPF。
2、AddIn---->MEF:AddIn(PlugIn和AddIn同义)是比较正统的、经典的插件开发模式,相对完整,但比较复杂。而MEF一般在WPF下使用,相对来说,抽象和封装程序更高,更容易使用。
3、架构模式和设计模式:两者没有严格的区别,只是在关注点和抽象层次上有一定的差别。一般而言,架构模式是关注关键性需求,强调抽象结构,而不是实现;设计模式可能关注关键性需求,也可能关注通性问题的解决,强调的问题解决的具体过程抽象。两者都强调开放性和扩展性。很多情况下,架构模式是会综合应用各种设计模式,并且以某种设计模式为架构模式的核心。
4、插件技术(MEF/AddIn/PlugIn)的核心是:反射和契约(接口)。过程如下:
(1)定义Host端和AddIns共用的接口(IContract);
(2)定义AddIns,要遵守IContract接口,可以通过特性(Attributes/Metadata)对AddIn进行自我描述
(3)定义Host端:加载AddIns、组装AddIns、呈现AddIns(可以以菜单形式)、调用AddIns;
插件技术具有很强的开放性和扩展性,可以动态地,甚至在运行时添加插件。但是也有一定的缺点:
(1)AddIn之间的通信困难。解决办法是添加Shell层,进行消息转发;
(2)AddIn和主程序(Host)的通信能力有限,对接口(IContract)设计要求高。(可以适配器模式对IContract接口进行包装转化)
5、AddIn模型通信过程:
(1)AddInHost通过AddIn的InnerOperation()操作AddIn的内部;
(2)AddInHost通过ManipulateAddIn()和AddInList协调AddIn之间的通信;
(3)AddIn通过OuterOperation()或/和AppContext操作AddInHost
如此,即实现了全面的的通信协调