fireasy 面世都有六个年头了,至今依旧是默默无闻,知道它的人可能仅限于本人朋友圈内的人士。本人也在写一本关于如何使用该框架的书籍,但苦于事务繁忙,至今也才写了一半,可以说最为实用最为核心的部分,仍然还没有写出来。思来想去,还是通过博文这种方式,通过一个实例的讲解,让朋友们对 fireasy 有个了解吧。
首先,得先说说这个fireasy是用来干嘛的。
fireasy 是一个灵活度比较高的开发框架,它秉承灵活、开放的态度,包容万事万物。它包括 Common、Data、Entity 三个核心类库,集成了 mvc、easyui、redis、mongodb、rabbitmq、nlog、log4net 等框架,使之能够轻松搭建基于 .net framework 或 .net core 的项目。
从面世至今,本人个人及公司的所有项目,均使用 fireasy 进行搭建,可以说无时无刻不在完善和优化。同时呢,fireasy 也发布到了 nuget,对于安装和更新来说绝对是再方便不过了。
在 nuget 里搜索 fireasy 关键词,所有最新的组件都以最新的时间更新于此。
fireasy 是开源的,git 仓库位于 https://github.com/faib920/fireasy2,随它开源的还有一个实例项目zero,https://github.com/faib920/zero,感兴趣的朋友可以前去了解,记得给星哦,希望你随时给本人提出好的建议,如果你和我趣味相投,也欢迎一起维护和完善它。
fireasy 有很多的组件,下面先让大家对它们有个大概的认识。
一、Fireasy.Common
Fireasy.Common 是通用的组件库,通过它可以实现配置、日志、缓存、消息订阅、AOP、IOC、动态/静态编译、json/xml/binary 序列化、加密解密等。Common 中还提供了大量的扩展方法。
这些组件抽象出来的接口,可由外部的第三方进行适配,比如日志组件,可由 NLog、log4net 等来适配,缓存组件,可由 redis、memcached 等来适配。消息订阅组件可由 redis、rabbitMQ 等来适配,只需实现标准的接口抽象,然后通过配置就可以使用了。
AOP 和动态编译贯穿整个 fireasy,为实体框架层提供了很好的解决方案(后面会介绍),IOC 可以与 .net core 相融合。
二、Fireasy.Data
Fireasy.Data 是数据层组件库,IDatabase 为抽象出来的数据库操作接口,通过它可以实现数据库的增、删、改、查等操作,它是通过 IProvider 进行扩展的,目前支持的数据库类型有 sqlite、sqlserver、mysql、oracle、firebird、postgresql 等,有能力的朋友可以自己去扩展 。同时,还提供了语法、架构、批量插入、自增量、记录包装等插件服务。
三、Fireasy.Data.Entity
顾名思义,即实体框架组件库,与 Entity Framework 比较相似,其 linq 语法支持基本上完全一致,对于用过 Entity Framework 的朋友来说,要上手完全不需要什么学习成本。
使用 Fireasy Entity 较之 Entity Framework 有一些明显的好处,比如接近于原生sql的 Insert、Update、Delete语法,实体的按需更新,Select 里复杂的构造,json序列化时对于延迟加载的处理等等,这些都会在以后的实例中一一讲解。
Entity 组件也是基于灵活的接口配置,比如你要引入 mongodb ,只需要配置 MongoDbProvider 即可,业务层没有任何的改变。
四、Fireasy.Web.Mvc
Fireasy.Web.Mvc 为 asp.net mvc 提供了一些底层的支持,比如 json 模型的绑定和序列化、异常处理等等。
五、Fireasy.Web.EasyUI
Fireasy.Web.EasyUI 是 easyui 的扩展库,为 IHtmlHelper 添加扩展方法,同时将实体验证的特性附加到 easyui 中。
六、其他
Fireasy.Redis 为redis 的支持类库,引用该类库后,只要完成 redis 的参数配置,就可以在 fireasy 里使用 redis 作为缓存和消息队列了。
Fireasy.NLog 和 fireasy.log4net 分别为 nlog 和 log4net 提供了适配。
Fireasy.RabbitMQ 为 rabbitmq 提供适配,使 fireasy 能够使用 rabbitmq 来处理消息队列。
Fireasy.MongoDB 使 fireasy 能够使用 mongodb,而不需要改动实体模型及业务层。
Fireasy.WebSockets 作为 websocket 通信的组件,借鉴了 singnalR 的思想,使用 handler 来提供方法进行消息交换。
以上就是 fireasy 大家庭中的所有组件,接下来的各篇文章里都会有所提及,对此感兴趣的朋友请随时关注博客的更新。