首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Prism v4:Unity还是MEF?

Prism v4是一个用于构建模块化、可扩展和可重用的WPF和Silverlight应用程序的框架。在Prism v4中,你可以选择使用Unity或MEF作为依赖注入(Dependency Injection)容器。

Unity是一个由Microsoft提供的轻量级依赖注入容器,它是Prism v4的默认容器。Unity提供了一种将对象实例化和解析注入到应用程序中的机制,以实现松耦合和可测试性。

MEF(Managed Extensibility Framework)是一个由Microsoft提供的扩展性框架,用于构建可插拔的应用程序。MEF提供了一种在应用程序中发现、加载和组合模块的机制,以实现应用程序的可扩展性和灵活性。

在Prism v4中,你可以根据你的需求选择使用Unity或MEF作为依赖注入容器。如果你已经熟悉Unity或希望使用轻量级的依赖注入容器,那么选择Unity可能更合适。如果你需要更强大的模块化和可插拔功能,那么选择MEF可能更适合你的需求。

无论你选择使用Unity还是MEF,Prism v4都提供了相应的集成和支持,以帮助你构建模块化的应用程序。你可以根据你的项目需求和团队的熟悉程度选择适合的依赖注入容器。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【翻译】Prism4:初始化Prism应用程序(上)

类库搭建的应用程序需要使用依赖注入容器 Prism支持UnityMEF依赖注入容器 并且允许使用其他的依赖注入容器 引导程序的部分工作就是装配这个容器 并为容器注册类型 Prism类库包含UnityBootstrapper...和MefBootstrapper类 这两个类实现了使用UnityMEF所必须的功能 除了在前面的插图中展示的步骤 这两个类型还添加了针对各自容器的特殊步骤 创建框架 一般创建WPF应用程序, APP.XAML...这主要是因为框架画面依赖于服务 这些服务类似与区域主管 这些服务在框架画面显示之前被注册 关键决定 当你决定使用Prism类库 还需要做出一些额外的决定: 必须决定是使用MEFUnity还是其他的依赖注入容器...这决定你应该选择哪个bootstrapper类型 还是需要为你自己的依赖注入容器创建一个新的bootstrapper类型 你应该考虑你系统中的特殊服务单元, 这些需要注册到依赖注入容器内 判断是否系统内部集成的日志服务足够你使用了...还是MEF作为你的依赖注入容器 为你的应用程序创建一个简单的bootstrapper 都是非常容易的 你可以创建一个派生自MefBootstrapper或者UnityBootstrapper的类 然后重写

74320

【翻译】WPF应用程序模块化开发快速入门(使用Prism框架)【上】

这篇快速入门文章包括如何使用Prism进行编码、探索和创建模块的示例 创建模块: 模块是实现了IModule接口的类, 可以通过声明特性来给模块命名、控制其初始化、定义依赖等 注册模块: 模块可以通过以下方式注册...注册模块依赖: 模块可以依赖于其他模块, Prism支持管理依赖。 包括控制循环引用和重复模块检测等功能。...以展示下载的byte数量和下载进度百分比, 下载完成行为: 程序可以订阅一个加载“模块完成”事件, 以处理模块加载和初始化完成后的额外事件 使用不同的依赖注入容器 一般在“快速入门”的示例中都是使用Unity...这里有两个使用不同依赖注入容器的快速入门示例 MEF模块化: 此模块化快速入门示例使用MEF倚赖注入容器 Prism推荐使用MEF的声明式特性 使ModuleCatalog和MEF的ComposablePartsCatalog...成为一体 Unity模块化: 此模块化快速入门示例使用Unity倚赖注入容器 场景 这一小节描述两个快速入门示例的相同场景, 每个快速入门示例都由六个模块组成 ModuleA、ModuleB、ModuleC

93910

Prism之Bootstrapper

Prism中扮演这一角色的就是Bootstrapper。 Prism提供了一个抽象基类Bootstrapper,这个类里面包含了包含了许多空的虚方法,可以重写它们添加自己的逻辑。...和MefBootstrapper,分别使用UnityMef来实现依赖注入。...创建并配置依赖注入容器 Prism中使用依赖注入来管理各个组件,你可以使用任何你熟悉的容器,比如Castle, Unity等。...Prism中内置了对Unity以及Mef的支持,所以有两种预定义好的Bootstrapper: UnityBootstrapper和MefBootstrapper,其中分别采用UnityContainer...所以不管使用什么样的容器,都需要提供一个实现了IServiceLocator接口的适配器,如使用Unity要提供UnityServiceLocatorAdapter,使用Mef要提供MefServiceLocatorAdapter

53810

Prism 8.0 入门(上):Prism.Core

例如几年前的 Prism 6.3,其中 WPF 平台的项目有这么多个: Prism.Wpf Prism.Autofac Prism.DryIoc Prism.Mef Prism.Ninject Prism.StructureMap...Prism.Unity 所以臃肿是很多人对 Prism 的印象。...相比 Prism 6.3,刚刚发布的 8.0 已经好很多了(虽然还是有很多个项目),例如 WPF 平台的项目已经大幅删减,只保留了 Prism.Wpf、Prism.DryIoc 和 Prism.Unity...然后是 Prism.Wpf,它提供针对 Wpf 平台的功能,包括导航、弹框等。最后由 Prism.Unity 指定 Unity 作为 IOC 容器。 ?...即使已精简了这么多,Prism 还是有很多功能,两篇文章也不足以讲解全部内容,所以我只会介绍最常用到的入门知识。这篇文章首先介绍 Prism.Core 的主要功能。 3.

2K40

02Prism WPF 入门实战 - 建项

1.概要 Prism介绍 Github: https://github.com/PrismLibrary/Prism 开发文档:https://prismlibrary.com/docs/ Prism...Prism实现了多种设计模式,突出架构设计的松耦合、关注点分离等原则。使用设计模式和Prism提供的额能力,你可以通过独立开发的松耦合组件轻松的集成到整个应用程序中,从而开发一个应用程序。...Prism围绕架构原则的分散关注点和松耦合原则而设计的。这使得Prism提供能以下的好处: 重用。Prism通过允许组件和服务能够轻松的被开发、测试、集成到一个或多个程序来实现重用。...Prism库中的许多组件本身就可以被扩展或者是替换。 灵活。Prism通过允许像开发集成新能力一样更新功能。Prism还允许WPF程序使用通用服务和组件开发,允许程序以最适当地方式去部署和使用。...IoC的框架有很多种例如MEF、Autofac、Castle Windsor、Unity。 初学可简单理解为有两个部分组成一个业务容器,和若干个业务模块组成。都塞到容器中进行管理。

76410

MEF框架基础理解

1.概要 什么是MEF? Managed Extensibility Framework (MEF) 是用于创建可扩展的轻量级应用程序的库。 它让应用程序开发人员得以发现和使用扩展且无需配置。...MEF 让扩展不仅可在应用程序内重复使用,还可以跨程序重复使用。 如果聊到MEF不得不提到的是IoC(IoC-Invertion of Control),即控制反转。它是一种程序设计指导思想。...而MEFUnity、MAF(包括Prism框架部分)、Ninject、StructureMap、Autofac等,都是IoC思想的具体实现。...使用场景:为类或成员添加描述信息,然后在使用的时候拿到该信息 (7)MEF提供三种方式发现部件 AssemblyCatalog 在当前程序集发现部件。...2.详细内容 源码地址:https://github.com/JusterZhu/Further-learning-WPF/tree/main/P8MEF IoC(MEF)容器 using Chapter8

48310

【翻译】WPF应用程序模块化开发快速入门(使用Prism+MEF)【下】

索引 【翻译】WPF应用程序模块化开发快速入门(使用Prism框架)【上】 【翻译】WPF应用程序模块化开发快速入门(使用Prism+MEF)【中】 系统启动 系统使用Bootstrapper类型来启动程序...ModuleA), DependsOnModuleNames = new string[] { "ModuleD" })] public class ModuleA : IModule 当使用MEF...框架的时候 ModuleExport特性允许MEF发现适当的、 继承自IModule接口的类型。...时 AggregateCatalog支持发现模块和类型 基于此, QuickStartBootstrapper重写ConfigureAggregateCatalog 模版方法并使用MEF注册程序集 仍然使用..., the existing Prism ModuleCatalog is still the place to configure modules via configuration files.

71210

.NET 基金会项目介绍-Prism

Prism Prism 是一个开发框架,它为实现可维护的、可扩展的、可测试的 XAML 应用程序提供助力,可以应用于 WPF、 Xamarin、 Windows Store 应用和 Windows 10...Prism 起初由 Microsoft patterns & practices 团队开发,后来在 2015 年时交由现在正在维护该该项目的 Prism 开源团队。...Prism was first developed by Microsoft patterns & practices and then transferred to the current Prism...Json.NET - 【JSON处理库】 Kudu - 【自动化框架】 LLILC - 【语言底层项目】 MailKit - 【邮件处理工具库】 Managed Extensibility Framework MEF..., MEF2 - 【模块化工具库】 Microsoft Web Protection Library - 【Web防攻击工具库】 MimeKit - 【MIME处理工具库】 ML.NET - 【机器学习框架

1.3K00

WPF NET5 Prism8.0的升级指南

入门(上):Prism.Core和[Windows] Prism 8.0 入门(下):Prism.Wpf 和 Prism.Unity 1.ContainerLocator.Current.Resolve...独有) 4.IOC添加新注册功能:  其实IOC这部分功能我不打算细讲,因为其实不属于Prism的特性功能,因为Prism默认支持两个IOC扩展,也就是Unity和DryIoc的,而新添加的功能也是对应通过两个...IContainerRegistry.RegisterScoped(typeof(ITestService), TestDelegate)//注册为范围模式 5.添加了有关在void方法中异步等待Task的扩展方法:  你乍一看好像没什么卵用,但是里面还是有说法的...其实AOP并不是属于prism特有的功能,但是由于prism支持扩展IOC容器:Unity和DryIoc,只要其IOC容器本身支持,那就可以,由于默认Prism是以Unity为默认IOC容器,所以以Unity.../Prism/releases C#中AOP_使用Unity实现AOP

2.7K40

.NET 基金会项目介绍-Managed Extensibility Framework MEF, MEF2

Managed Extensibility Framework MEF, MEF2 是属于 .Net 基金会的一个项目,本文将简要介绍该项目相关的信息。...Managed Extensibility Framework (MEF, MEF2) Managed Extensibility Framework (MEF) 为大型应用程序提供了一个组合层,以改善应用程序的灵活性...有趣的是,为了项目的特殊性, MEF 在微软中其实有至少三个不同的版本:Differences between .NET MEF, NuGet MEF and VS MEF 英文介绍 Managed Extensibility...Framework (MEF, MEF2) The Managed Extensibility Framework (MEF) is a composition layer for .NET that...Authentication Middleware Katana Project - 【Web开发框架】 Peachpie Compiler Platform - 【.Net上运行PHP】 Polly - 【服务调用工具库】 Prism

83920

C# 一个基于.NET Core3.1的开源项目帮你彻底搞懂WPF框架Prism

--概述 这个项目演示了如何在WPF中使用各种Prism功能的示例。如果您刚刚开始使用Prism,建议您从第一个示例开始,按顺序从列表中开始。每个示例都基于前一个示例的概念。...框架搭建的用法: step1:在nuget上引用Prsim.Unity step2:修改App.xaml:设置引导程序 <Application x:Class="BootstrapperShell.App...bootstrapper = new Bootstrapper(); bootstrapper.Run(); } } step3:在引导程序中设置启动项目: using <em>Unity</em>...; using <em>Prism</em>.<em>Unity</em>; using BootstrapperShell.Views; using System.Windows; using <em>Prism</em>.Ioc; namespace...; using <em>Prism</em>.Events; using <em>Prism</em>.Mvvm; using UsingEventAggregator.Core; namespace ModuleA.ViewModels

1.5K20

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券