基于 fireasy 构建的 asp.net core 示例
2018-01-25 10:46
429 查看
最近花时间弄了一个关于fireasy使用的demo,已放到 github 上供大家研究,https://github.com/faib920/zero
该 demo 演示了如何使用 fireasy 创建一个后台的管理系统。解决方案包含 asp.net mvc5 和 asp.net core 两个示例,使用 SQLite 数据库,基于 easyui 1.4.3 构建。
用户名: admin 密码: admin
特点
数据库操作与 entity framework 的用法较相似,也是使用 linq ,降低了学习成本,然而与后者所不同的是,提供了 Insert、Update、Delete、Batch 等方法更快捷地进行操作,更贴近于 sql 原生语言。
基于 easyui 构建的后台管理系统,view 层采用 ajax 进行数据交互,因此在 action 接收参数时,直接通过 json 反序列化的方式进行 model bind,这样的好处是,对于复杂的提交的数据结构,比如多个 list,嵌套的对象等,都很容易在 action 里接收。
action 接收的实体对象能够主动区分哪些属性被修改,这得益于 LightEntityJsonConverter 转换器,这样,新增或修改时,不必考虑原有数据被覆盖的可能。
没有创建 ViewModel,而直接使用 DataModel,这样节省了很多开发时间,然而这样带来的一个问题,可能也是使用 entity framework 一样面临的问题,那就是 <b>延迟加载</b> 属性会被一概序列化。因此 json 序列化也被优化过,采用 fireasy json serializer 能够主动识别延迟加载对象。
没有 ViewModel,但是可以扩展更多的属性给前端使用,在实体类_Ex 中,可以定义非 virtual 的属性,然后用 ExtendAs 扩展方法,这样避免了 new { } 这样繁琐的赋值操作。
services 是基于 AOP 的实例,提供了事务处理、缓存处理等拦截器,只需要标识特性就可以实现这些功能。这也必须使用 fireasy 的 IOC 容器。
项目结构
Fireasy.Zero.Models 实体模型
Fireasy.Zero.Infrastructure 基础设施
Fireasy.Zero.Helpers 相关辅助
Fireasy.Zero.Services 数据服务
Fireasy.Zero.AspNet Mvc5示例
Fireasy.Zero.AspNetCore Core示例
Mvc5 配置
有关 fireasy 的配置请参考 web.config 里的 fireasy 小节,其中:
dataInstances 为数据库实例配置,当前使用 sqlite 数据库
containers 为IOC容器配置
mvc/bundles 配置bundle资源文件
注意 global 里对 fireasy 的配置,这些都是必要的
core 配置
以上面示例相似,core 的配置在 appsettings.json 里,也是对数据库实例,IOC容器进行配置。
Startup 类文件里的配置
该 demo 演示了如何使用 fireasy 创建一个后台的管理系统。解决方案包含 asp.net mvc5 和 asp.net core 两个示例,使用 SQLite 数据库,基于 easyui 1.4.3 构建。
用户名: admin 密码: admin
特点
数据库操作与 entity framework 的用法较相似,也是使用 linq ,降低了学习成本,然而与后者所不同的是,提供了 Insert、Update、Delete、Batch 等方法更快捷地进行操作,更贴近于 sql 原生语言。
基于 easyui 构建的后台管理系统,view 层采用 ajax 进行数据交互,因此在 action 接收参数时,直接通过 json 反序列化的方式进行 model bind,这样的好处是,对于复杂的提交的数据结构,比如多个 list,嵌套的对象等,都很容易在 action 里接收。
action 接收的实体对象能够主动区分哪些属性被修改,这得益于 LightEntityJsonConverter 转换器,这样,新增或修改时,不必考虑原有数据被覆盖的可能。
没有创建 ViewModel,而直接使用 DataModel,这样节省了很多开发时间,然而这样带来的一个问题,可能也是使用 entity framework 一样面临的问题,那就是 <b>延迟加载</b> 属性会被一概序列化。因此 json 序列化也被优化过,采用 fireasy json serializer 能够主动识别延迟加载对象。
没有 ViewModel,但是可以扩展更多的属性给前端使用,在实体类_Ex 中,可以定义非 virtual 的属性,然后用 ExtendAs 扩展方法,这样避免了 new { } 这样繁琐的赋值操作。
services 是基于 AOP 的实例,提供了事务处理、缓存处理等拦截器,只需要标识特性就可以实现这些功能。这也必须使用 fireasy 的 IOC 容器。
项目结构
Fireasy.Zero.Models 实体模型
Fireasy.Zero.Infrastructure 基础设施
Fireasy.Zero.Helpers 相关辅助
Fireasy.Zero.Services 数据服务
Fireasy.Zero.AspNet Mvc5示例
Fireasy.Zero.AspNetCore Core示例
Mvc5 配置
有关 fireasy 的配置请参考 web.config 里的 fireasy 小节,其中:
dataInstances 为数据库实例配置,当前使用 sqlite 数据库
containers 为IOC容器配置
mvc/bundles 配置bundle资源文件
注意 global 里对 fireasy 的配置,这些都是必要的
BundleManager.Config(); //MVC控制器工厂添加IOC容器 var container = ContainerUnity.GetContainer(); ControllerBuilder.Current.SetControllerFactory(new ControllerFactory(container)); //easyui验证绑定 SettingsBindManager.RegisterBinder("validatebox", new ValidateBoxSettingBinder()); SettingsBindManager.RegisterBinder("numberbox", new NumberBoxSettingBinder()); //使用 LightEntity 反序列化转换器 GlobalSetting.Converters.Add(new LightEntityJsonConverter()); //从 Container 里反转类型反序列化 GlobalSetting.Converters.Add(new ContainerJsonConverter(container));
core 配置
以上面示例相似,core 的配置在 appsettings.json 里,也是对数据库实例,IOC容器进行配置。
Startup 类文件里的配置
public void ConfigureServices(IServiceCollection services) { services.AddFireasy(Configuration) .AddIoc(ContainerUnity.GetContainer()); //添加IOC容器 services.AddMvc() .ConfigureFireasyMvc(options => { options.Converters.Add(new LightEntityJsonConverter()); //action接收的实体对象,是经过 fireasy 底层处理过的 }) .ConfigureEasyUI(); }
相关文章推荐
- 基于ASP.NET Core数据保护生成验证token示例
- ASP.NET WEB API构建基于REST风格
- 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【十】——使用CacheCow和ETag缓存资源
- 5.1基于JWT的认证和授权「深入浅出ASP.NET Core系列」
- 使用ASP.Net WebAPI构建REST服务(一)——简单的示例
- 通过重建Hosting系统理解HTTP请求在ASP.NET Core管道中的处理流程[下]:管道是如何构建起来的?
- 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【二】——使用Repository模式构建数据库访问层
- JavaScript组件之JQuery(A~Z)教程(基于Asp.net运行环境)[示例代码下载]
- 使用ASP.Net WebAPI构建REST服务(一)——简单的示例
- JavaScript组件之JQuery(A~Z)教程(基于Asp.net运行环境)[示例代码下载]
- 使用Asp.net MVC, Jquery, Jquery UI构建基于Ajax的RIA应用.
- 基于Microsoft Azure、ASP.NET Core和Docker的博客系统
- 基于功能更丰富的基础类构建您自己的 ASP.NET 页面
- 在ASP.NET Core MVC中构建简单 Web Api
- JavaScript组件之JQuery(A~Z)教程(基于Asp.net运行环境)[示例代码下载]
- 基于存储过程的ASP.NET用户登录示例
- 基于 ASP.NET Core 2.1 的 Razor Class Library 实现自定义错误页面的公用类库
- JavaScript组件之JQuery(A~Z)教程(基于Asp.net运行环境)[示例代码下载]
- 在ASP.NET Core MVC中构建简单 Web Api
- 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【外传】——Attribute Routing