学而时习之,不亦说乎,温顾温知新,可以为师矣.
看懂远不如动手去做,动手做才能发现很多自己不懂的问题,不断的反思和总结,“乐于分享是一种境界的突破”。" 分享是很有意思,也是可以锻炼人的。分享意味着自我的不断净化提升,不给自己后退的余地。为什么这么说呢?
- 一,分享的就是你所知道的,你所知道的是你投资时间和精力学来的,分享意味着你做到无私地把它分享出更高的价值,这是很伟大的。
- 二,分享意味着你要不断去追寻新知,这很重要。只有用心生活,用心体会,才能不断有新的东西分享。这就是善于借用外力来完善自己的表现。。
- 三,我们在分享的过程中,学会进一步判断,进一步深入思考,从而进一步提升思绪。这很重要,自己要了解自己,这是一个不断学习的过程。"
这也是算是一种学习的方法和态度吧,经常去学习和总结,在博客园看了很多大神的文章,写下一点对于ABP(ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称)框架的理解和运用.能力有限,第一次写技术性的博客写得不好.算是抛砖引玉,希望有问题的地方给予指出.
"ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应用程序的新起点,它旨在成为一个通用的WEB应用程序框架和项目模板。"
"ASP.NET Boilerplate 基于DDD的经典分层架构思想,实现了众多DDD的概念(但没有实现所有DDD的概念)。"
ABP在中国火了有一段时间了,我算是添柴加火吧.
效果图
下面是这期文章的目录:
1、 ABP+AdminLTE+Bootstrap Table权限管理系统第一节--使用ASP.NET Boilerplate模板创建解决方案
2、ABP+AdminLTE+Bootstrap Table权限管理系统第二节--数据库脚本
3、ABP+AdminLTE+Bootstrap Table权限管理系统第三节--abp分层体系及实体相关
4、ABP+AdminLTE+Bootstrap Table权限管理系统第四节--仓储,服务,服务接口及依赖注入
5、ABP+AdminLTE+Bootstrap Table权限管理系统第五节--WBEAPI及SwaggerUI
6、ABP+AdminLTE+Bootstrap Table权限管理系统第六节--abp控制器扩展及json封装
7、ABP+AdminLTE+Bootstrap Table权限管理系统第七节--登录逻辑及abp封装的Javascript函数库
8、ABP+AdminLTE+Bootstrap Table权限管理系统第八节--ABP错误机制及AbpSession相关
9、ABP+AdminLTE+Bootstrap Table权限管理系统第九节--AdminLTE模板页搭建
10、ABP+AdminLTE+Bootstrap Table权限管理系统第十节--AdminLTE模板菜单处理
11、ABP+AdminLTE+Bootstrap Table权限管理系统第十一节--bootstrap table之用户管理列表
12、ABP module-zero +AdminLTE+Bootstrap Table+jQuery权限管理系统第十二节--小结,Bootstrap Table之角色管理
13、ABP module-zero +AdminLTE+Bootstrap Table+jQuery权限管理系统第十三节--RBAC模式及ABP权限管理(附送福利)
13、ABP module-zero +AdminLTE+Bootstrap Table+jQuery权限管理系统第十三节--RBAC模式及ABP权限管理(附送福利)
14、ABP module-zero +AdminLTE+Bootstrap Table+jQuery权限管理系统第十四节--后台工作者HangFire与ABP框架Abp.Hangfire及扩展
15、ABP module-zero +AdminLTE+Bootstrap Table+jQuery权限管理系统第十五节--缓存小结与ABP框架项目中 Redis Cache的实现
未完待续...
运用到的服务端技术:
- ABP(ASP.NET BolierPlate ProJect)
- Module-Zero
- ASP.NET MVC
- ASP.NET Web API
- ASP.NET Identity Framework (and social login extensions)
- ASP.NET Web Optimization Framework
- ASP.NET Web Pages
- SignalR
- EntityFramework
- EntityFramework.DynamicFilters
- Castle Windsor
- AutoMapper
- HangFire
- Log4Net
- xUnit
- Swashbuckle
- StackExchange.Redis
- SharpZipLib
- System.Linq.Dynamic
客户端:(前端是用的AdminLTE,Bootstrap table.是开源的,不涉及版权)
- Twitter Bootstrap
- Bootstrap Hover Dropdown
- Bootstrap Date Range Picker
- Bootstrap Switch
- Bootstrap Select
- Bootstrap table
- jQuery
- jQuery UI
- jQuery BlockUI
- jQuery Validation
- jQuery Ajax Forms
- Js Cookie
- Modernizr
- Moment.js
- Moment.js Timezone
- Underscore.js
- JsTree
- Respondjs
- Font-Awesome
- SpinJs
- SweetAlert
- Toastr
- AdminLTE
项目GitHub地址:https://github.com/Jimi-Jiang/JCMS
这也算是学习笔记或者学习总结吧,其实目前1~11节蛮适合公司开发模式的.之前我的公司就用这种模式开发.可能像之前架构师说的,abp并不适合大型企业高并发项目吧,所以才吧abp改成11节之前的模式,之后的模式就在这上面扩展.
但是最近我在开发的过程中在想,既然 ABP module-zero已经为我们封装好了 abpsession 封装好了权限,授权等管理,为什么我们还要自己去写呢,直接在原来的基础上扩展就可以了嘛.所以在12节及以后的项目中,我会试着去ABP module-zero项目上去扩展延伸.主要参考的资料还是博客大神的一系列文章"基于DDD的现代ASP.NET开发框架--ABP系列文章总目录".
为什么使用ABP?
" 我们近几年陆续开发了一些Web应用和桌面应用,需求或简单或复杂,实现或优雅或丑陋。一个基本的事实是:我们只是积累了一些经验或提高了对,NET的熟悉程度。 随着软件开发经验的不断增加,我们发现其实很多工作都是重复机械的,而且随着软件复杂度的不断提升,以往依靠经验来完成一些简单的增删改查的做法已经行不通了。特别是用户的要求越来越高,希望添加的功能越来多,目前这种开发模式,已经捉襟见肘。我很难想象如何在现有的模式下进行多系统的持续集成并添加一些新的特性。
开发一个系统时,我们不可避免的会使用各种框架。数据持久层实现、日志、ASP.NET MVC、IOC以及自动映射等。一个高质量的软件系统往往还有全局容错,消息队列等组件。
把上述这些组件组合到一起的时候,其复杂度会急剧上升。一般个人和小团队的技术水平,很难设计出一个均衡协调的框架。对于传统的所谓三层架构,我也是很持怀疑态度的。(月薪15k的程序员搞的三层架构,我也仔细读过,也是问题多多,并不能解释为什么要使用三层)。
其实,我们无非是希望在编程的时候,把大部分的注意力全部集中到业务实现上。不要过多的考虑基础的软件结构上的种种问题。应该有一个框框或者一种范式来提供基本的服务,如日志、容错和AOP,DI等。稍微正规一点的公司经过多年沉淀都形成了自己的内部软件框架,他们在开发软件的时候并不是从一片空白开始的。而是从一个非常牢固的基础平台上开始构建的。这样大大提高了开发速度,而且一种架构往往也决定了分工协作的模式。我们目前之所以无法分工协作,根本原因也是缺少一套成熟稳定的基础开发架构和工作流程。
目前.NET上有不少开源框架。比如Apworks和ABP。其中Apworks是中国人写的一套开源框架。它是一个全功能的,不仅可以写分布式应用,也可以写桌面应用。
ABP的全称是Asp.net boilerplate project(asp.net样板工程)。是github上非常活跃的一个开源项目。它并没有使用任何新的技术,只是由两名架构师将asp.net开发中常用的一些工具整合到了一起,并且部分实现了DDD的概念。是一个开箱即用的框架,可以作为asp.net分布式应用的一个良好起点。
使用框架当然有代价,你必须受到框架强API的侵入,抑或要使用他的方言。而且这个框架想要吃透,也要付出很大的学习成本。但是好处也是显而易见的。业界顶尖的架构师已经为你搭建好了一套基础架构,很好的回应了关于一个软件系统应该如何设计,如何规划的问题,并且提供了一套最佳实践和范例。 学习虽然要付出成本,但是经过漫长的跋涉,我们从一无所知已经站到了工业级开发的门槛上。基于这个框架,我们可以很好的来划分任务,进行单元测试等。大大降低了软件出现BUG的几率。"
风物长宜放眼量,至此,一方面是改变自己懒惰的习惯,催促自己前行,一方面鞭策自己,不断学习.