ABP中的本地化处理(上)】的更多相关文章

今天这篇文章主要来总结一下ABP中的多语言是怎么实现的,在后面我们将结合ABP中的源码和相关的实例来一步步进行说明,在介绍这个之前我们先来看看ABP的官方文档,通过这个文档我们就知道怎样在我们的系统中使用ABP自带的本地化处理方式了,当前文章将分为三个部分,1  怎样在应用层和领域层添加本地化支持.2  ABP本地化中的源码分析.3  怎么实现Dto中本地化.下面就每一个部分来进行深入的分析. 一  怎样在应用层和领域层添加本地化支持 按照ABP官方文档中介绍,存储本地化资源推荐使用XML Fi…
在上篇文章中我们的重点是讲述怎样通过在Domain层通过PreInitialize()配置ILocalizationConfiguration中的Sources(IList<ILocalizationSource>)集合,并且在调用L方法中配置LocalizationSourceName从而找到之前配置的ILocalizationSource对象,这一节主要来讲述ILocalizationSource中的GetString(string name)方法,通过这个方法来体会ABP中的设计思想.…
这个部分我打算用上下两个部分来将整个结构来讲完,在我们读ABP中的代码之后我们一直有一个疑问?在ABP中为什么要定义Interceptor和Filter,甚至这两者之间我们都能找到一些对应关系,比如:AuthorizationInterceptor和AbpAuthorizationFilter,AuditingInterceptor和AbpAuditActionFilter,甚至这些代码的实现也是调用相同的接口和实现?那么ABP为什么要采用这种方式呢?在前面的章节中我已经充分介绍过了ABP中的各…
从今天这一节起就要深入到ABP中的每一个重要的知识点来一步步进行分析,在进行介绍ABP中的拦截器之前我们先要有个概念,到底什么是拦截器,在介绍这些之前,我们必须要了解AOP编程思想,这个一般翻译是面向切面编程,这个是和OOP相对的一个概念,在此之前应该先读一读其概念的介绍.这篇文章的重点是介绍ABP框架中的各种拦截器,并介绍其具体在代码中是如何起作用的. 整个ABP框架中的拦截器开始于AbpBootstrapper的构造函数中,在这里我们创建了一个AbpBootstrapperOptions,在…
返回总目录 本篇目录 应用语言 本地化资源 获取本地化文本 扩展本地化资源 最佳实践 应用语言 一个应用至少有一种UI语言,许多应用不止有一种语言.ABP为应用提供了一个灵活的本地化系统. 第一件事情就是声明支持哪些语言.这个是在模块的PreInitialize方法中完成的,如下所示: Configuration.Localization.Languages.Add(new LanguageInfo("en", "English", "famfamfam-…
在上一篇介绍在StartUp类中的ConfigureService()中的AddAbp方法后我们再来重点说一说在Configure()方法中的UserAbp()方法,还是和前面的一样我们来通过代码来进行一步步分析. public static class AbpApplicationBuilderExtensions { public static void UseAbp(this IApplicationBuilder app) { app.UseAbp(null); } public sta…
动态WebAPI应该算是ABP中最Magic的功能之一了吧.开发人员无须定义继承自ApiController的类,只须重用Application Service中的类就可以对外提供WebAPI的功能,这应该算是对DRY的最佳诠释了. 如下图所示,一行代码就为所有实现了IApplicationService的类型,自动创建对应的动态WebAPI. 这么Magic的功能是如何实现的呢? 本文为你揭开其Magic的外表.你会发现,实现如此Magic的功能,最关键的代码只有四行. 先思考一个问题:如果不…
PHP中的框架众多,我自己就接触了好几个.大学那会啥也不懂啥也不会,拿了一个ThinkPHP学了.也许有好多人吐槽TP,但是个人感觉不能说哪个框架好,哪个框架不好,再不好的框架你能把源码读上一遍,框架的设计思想理解了也能学到好多东西.况且有好多东西自己还不理解,所以认真学习一个框架这还是可以学不少东西的. 还是先说说Laravel吧,现在已经到5.2了.就我自己来说之前没有接触过laravel,但是学习过laravel之后感觉这个框架确实不错,并且老外用的不亦乐乎.他的开发社区还可以,文档比较齐…
Unit Of Work(UoW)模式在企业应用架构中被广泛使用,它能够将Domain Model中对象状态的变化收集起来,并在适当的时候在同一数据库连接和事务处理上下文中一次性将对象的变更提交到数据中. 从字面上我们可以我们可以把UnitOfWork叫做工作单元,从概念上它是协助代码块的事务.为什么我们需要用UnitOfWork?有人说EF不是的DbContext的SaveChanges不就有提交变更数据的功能吗?为什么还要多一层封装?是的,如果我们项目只是用EF的话,项目又会经常变更,不用考…
上一篇讲解了如何在ABP中使用Redis Cache,虽然能够正常的访问Redis,但是Redis里的信息无法同步更新.本文将讲解如何实现Redis Cache与实体同步更新.要实现数据的同步更新,我们能够想到的最基本.最简单.也是复杂的方法:在每一个增.删.改的方法里添加同步缓存的代码,说它最简单,是因为技术实现非常简单,就是在每一个方法里多加一句代码:说它复杂,是因为这样的写的话,会出现很多重复的代码,并且容易出现遗漏,维护起来很不方便.那么有没有一种更简单的方式呢,在数据出现变化后,触发一…