Microsoft Developer Network > Página Inicial dos Fóruns > Managed Extensibility Framework > Picking the extensibility framework for my needs
Fazer uma PerguntaFazer uma Pergunta
 

PerguntaPicking the extensibility framework for my needs

  • segunda-feira, 6 de abril de 2009 23:41ELS Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Hi guys/gals,

    I've spent the last week immersing myself in WCF, MAF, MEF, and Unity, and frankly, the more I read, the more my head spins.

    Here's our situation: We're writing a new system which is composed of a client application and a server application. Both applications need to support plug-ins which add additional functionality to the system; typically, there will be a corresponding client side plug-in (with WPF UI) for each server-side plugin. Communication between client-side and server-side is WCF. We would like to be able to upgrade software on the client independent of the server, and upgrade any plug-in independent of other part of the system. Add-ins will be both by our team and possibly other in-house teams.

    I like the thought of using MAF because of the isolation (especially useful on our server app) and versioning support. I like the thought of using MEF because of it's simplicity, and it seems to be MS's preferred direction. I like the thought of using Unity because it easily allows us to use Composite App Guidance.

    I don't like MAF because of the complexity, and even though it solves the host/add-in versioning issues, I'll still have to solve the issue for messaging across WCF. I don't like MEF because of the total lack of versioning.

    I don't think I need the DI or IoC capabilities of MEF or Unity, but it would provide a way for add-ins to easily use other add-ins' capabilities. However, since the add-ins are already going to be providing WCF services, they could find each other and communicate that way. I also understand that "MEF is about extensibility" but don't know how to evaluate how that statement applies here.

    I've read several places talking about how MEF and MAF are complementary and could be used together, but I'm not sure I see how. Kent Boogaart's posting  http://kentb.blogspot.com/2009/02/maf-and-mef.html uses MEF inside an add-in. I think what I need is the opposite - MAF wrapped around the interface exported by MEF. (I think I'd also like a MAF-like capability for WCF interfaces, but haven't fleshed out that part yet.)

    Is there a decision tree, or other resource to help evaluate the options here? Any suggestions on which approach (or approaches) to pursue?