深入探讨:基于ABP框架与AdminLTE的Bootstrap Table权限管理实践(第四节)

更新:11-14 神话故事 我要投稿 纠错 投诉

本篇文章给大家谈谈深入探讨:基于ABP框架与AdminLTE的Bootstrap Table权限管理实践(第四节),以及对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

在ABP框架中,仓储和服务被认为是最重要的领域之一。 ABP框架提供了创建和组装模块的基础。一个模块可以依赖于另一个模块,一个程序集可以被视为一个模块。

一个模块可以通过类来定义这个模块,而定义的类必须继承自已经转换好的AbpModule..net,才能通过反射获取这些程序集中的类或方法。

模块的调用往往涉及顺序。如果模块A依赖于模块B,那么模块B必须在模块A之前初始化。初始化相当于注册。例如,使用IocManager来注册一个注册类。

上面的方法中,我们将MyModule1注入到MyModule2中,在调用MyModule2的时候就可以初始化MyModule1了。

什么是依赖注入?百科全书说这个:“依赖注入是一种软件设计模式,其中一个或多个依赖项(或服务)通过引用依赖项对象来注入或传递,并成为客户端状态的一部分。这种模式将客户端依赖项的创建与其自己的行为,允许程序设计为松散耦合,遵循依赖倒置和单一责任的原则,与服务定位器模式相反,它允许客户端知道他们正在使用什么系统寻找依赖关系。”

如果不使用依赖注入技术,就很难管理依赖关系并发布结构良好的应用程序。

假设我们有一个应用程序服务,它使用存储库类将实体插入数据库。在这种情况下,应用程序服务类依赖于存储库类,如下

UserService 使用UserRepository 将Person 插入数据库。但这段代码存在一些问题。 服务层UserService通过接口IUserRepository调用CreatePerson添加User对象。看似调用了IUserRepository接口,但实际上还是依赖于rush层的UserRepository。 UserService通过IUserRepository创建对象时,实际上实现了一个新的UserRepository区域,这和直接调用UserRepository没有什么区别。 IUserRepository 失去了意义。如果以后我们需要修改UserRepository类,但是UserService又依赖于它,这时候,我们就需要修改所有依赖于UserRepository的类。有了这种依赖关系,就很难对UserService 进行单元测试。违背了“高内聚、低耦合”的原则,在这里你可以看到服务层对仓储层有依赖。

为了解决这些问题,创建了以下版本。

这就是工厂模式。其实我之前在abp之前就经常使用这个方法。搭建框架非常麻烦,而且老是出错。 UserRepositoryFactory 是一个静态类。要创建并返回IUserRepositoryUserService 服务,无需直接创建UserRepository。

虽然这种方法是可行的,但仍然存在一些问题。

UserService 仍然依赖于UserRepositoryFactory。每个repository都要写一个工厂,非常繁琐。可测性还是不好。

有多种解决方案,包括属性注入、构造函数注入、依赖注入框架等。

以上就是abp中构造函数注入和属性输入的完美使用。现在,UserService 不知道哪些类实现了userRepository 以及如何创建它。谁需要使用UserService,首先创建一个IUserServiceUserService,并将其传递给构造函数。

有人可能会说,userRepository的下属类可能存在依赖关系。依赖注入框架通过自动管理依赖关系解决了这些问题。构造函数注入模式是提供类依赖关系的完美方式。这样,您就无法在不提供依赖项的情况下创建类的实例。它也是明确说明需要哪些类才能正常工作的有效方法。

然而,在某些情况下,该类依赖于另一个类,但没有它也可以生存。这通常适用于横切关注点(例如日志记录)。一个类可以没有工作日志,但如果您提供日志对象,它可以写入日志。在这种情况下,您可以将依赖项定义为公共属性,而不是将它们放在构造函数中。上面的例子中NullLogger.Instance是一个单例对象,它实现了ILogger接口但实际上什么都不做(不写Log。它实现了ILogger实例,方法体为空)。我们需要写日志的地方,只需要UserService.Logger=new Log4NetLogger();这样我们就可以写日志了。如果我们不写,我们就不会调用,因此是一个可选的依赖项。

几乎所有依赖注入框架都支持属性注入模式

ABP的依赖注入是基于Castle Windsor框架的。 Castle Windsor 是最成熟的DI 框架之一。依赖注入框架有很多,比如Unity、Ninject、StructureMap、Autofac等,之前用过Unity,但没有研究过其他的。依赖框架可以自动解决依赖关系。他们可以创建所有依赖项(递归地创建依赖项和依赖项)。所以你只需要根据注入模式编写类和类构造函数属性,剩下的让DI框架处理!在好的应用程序中,类甚至独立于DI 框架。整个应用程序只有几行代码或类与DI 框架显式交互。

有人说上面的例子看不到依赖注入。其实这里的UserService继承于IUserService,而IUserService又继承于IApplicationService。 abp在IApplicationService中封装了很多东西,ABP会自动注册它,因为它实现了IApplicationService接口(它只是一个空接口)。它将被注册为瞬态(每次使用时都会创建一个实例)。当您将IUserService 接口注入(使用构造函数注入)到类中时,会自动创建UserService 对象并将其传递给构造函数。

命名约定在这里非常重要。例如,您可以将名称PersonAppService 更改为MyPersonAppService 或包含“PersonAppService”后缀的其他名称,因为IPersonAppService 包含此后缀。但是您可以不遵循PeopleService 来命名您的服务类。如果这样做,它不会自动注册到IPersonAppService(它需要自行注册到DI 框架,而不是接口),因此如果需要,您应该手动注册。

仓储

上一章我们已经定义了实体类和DTO,可以直接在仓储中调用。仓储是领域层和数据映射层之间的中介,使用类似集合的接口来访问领域对象。

接口:

实现:

示例中,IRepository继承自abp封装的IRepository。 IRepository 中已经为我们封装了很多方法,这样我们就不用为每个存储库创建不同的方法了。这非常重要。如下图所示。

用户评论

权诈

看起来这个教程介绍了ABP+AdminLTE+Bootstrap Table实现权限管理系统的具体步骤。

    有15位网友表示赞同!

千城暮雪

这应该是针对技术人员,学习如何在这些框架下搭建权限管理系统。

    有17位网友表示赞同!

眷恋

很想知道第四节会涵盖哪些内容,是不是一些复杂的权限分配规则?

    有14位网友表示赞同!

为爱放弃

ABP、AdminLTE和Bootstrap Table都是比较热门的技术,学习起来应该收获蛮大。

    有5位网友表示赞同!

抚涟i

教程做的好,能让我一步步理解搭建系统步骤,省时省力!

    有20位网友表示赞同!

炙年

如果能提供源码或者案例演示,那就更棒了。

    有6位网友表示赞同!

陌上花

权限系统在实际项目中非常重要,学习这个教程可以提升我的开发能力。

    有18位网友表示赞同!

煮酒

不知道第四节的例子能不能直接应用到实践中去?

    有12位网友表示赞同!

▼遗忘那段似水年华

这样系统设计能够有效控制用户访问权限吗?

    有11位网友表示赞同!

你tm的滚

希望教程能详细讲解每个步骤的操作方法。

    有7位网友表示赞同!

我就是这样一个人

我已经开始在使用ABP框架开发项目了,这个教程对我很实用。

    有13位网友表示赞同!

玻璃渣子

学习起来比较费时费力吗?需要掌握哪些基本技能?

    有14位网友表示赞同!

别悲哀

AdminLTE界面美观,结合Bootstrap Table数据展示一定很方便!

    有16位网友表示赞同!

咆哮

这四个技术搭配是否在开发中已经比较主流?

    有8位网友表示赞同!

娇眉恨

我觉得权限管理系统是一个很有挑战性的领域。

    有14位网友表示赞同!

夏至离别

如果教程中有视频讲解,学习起来更直观也更快。

    有19位网友表示赞同!

゛指尖的阳光丶

能提供一些相关书籍或者资料供我参考吗?

    有5位网友表示赞同!

惦着脚尖摘太阳

这个系统的安全性如何保障?

    有7位网友表示赞同!

疲倦了

看这四个技术的结合,应该是能构建一个功能强大的权限管理系统吧。

    有8位网友表示赞同!

今非昔比'

期待看到完整的教程内容,学习搭建自己的权限管理系统!

    有13位网友表示赞同!

【深入探讨:基于ABP框架与AdminLTE的Bootstrap Table权限管理实践(第四节)】相关文章:

1.蛤蟆讨媳妇【哈尼族民间故事】

2.米颠拜石

3.王羲之临池学书

4.清代敢于创新的“浓墨宰相”——刘墉

5.“巧取豪夺”的由来--米芾逸事

6.荒唐洁癖 惜砚如身(米芾逸事)

7.拜石为兄--米芾逸事

8.郑板桥轶事十则

9.王献之被公主抢亲后的悲惨人生

10.史上真实张三丰:在棺材中竟神奇复活

上一篇:栀子花与白兰花的美丽对决:夏季花卉养护指南 下一篇:插画课程第四天:学习空心英文设计技巧