ABP之动态WebAPI
2015-08-01 18:25
330 查看
ABP之动态WebAPI
ABP的动态WebApi实现了直接对服务层的调用(其实病没有跨过ApiController,只是将ApiController公共化,对于这一点的处理类似于MVC,对服务端的 调用没有跨过HttpHandler一样),这样不仅减少了ApiController的开发,也更能体现驱动领域设计的层结构。对WebApi服务的替换与路由配置
AbpWebApiModule是Abp.Web.Api的模块类,该类中定义InitializeAspNetServices,InitializeRoutes两个方法,并且在模块的Initialize方法中执行,这两个方法分别是对WebApi的服务的替换与路由的配置,。这两处对WebApi的变更才使得直接调用服务层成为可能。View Code
对服务的分析与缓存
再对服务信息的存储上,作者提供了DynamicApiControllerInfo,DynamicApiActionInfo(源码中的DynamicApiMethodInfo.cs),其中DynamicApiControllerInfo包含了一DynamicApiActionInfo集合。View Code
在执行AbpHttpControllerSelector, AbpApiControllerActionSelector, AbpControllerActivator的时候,系统已经在初始化的时候对服务层进行了分析与缓存。
在作者给的Demo SimpleTaskSystem下有一模块类SimpleTaskSystemWebApiModule
在这里是使用到了DynamicApiControllerBuilder,这个类主要是对服务接口进行一个注册,再由IBatchApiControllerBuilder按照注册的服务接口对提供的程序集进行分析。
DynamicApiControllerBuilder提供的ForAll只是返回的一个IBatchApiControllerBuilder实现对象
这个方法为BatchApiControllerBuilder提供了服务接口与服务接口与需要分析的程序集,以及服务地址前缀。
BatchApiControllerBuilder从程序集中获取实现服务接口的非抽象类。BatchApiControllerBuilder再通过DynamicApiControllerBuilder将这些类与服务名信息传递给IApiControllerBuilder。
+ View Code
IApiControllerBuilder将通过服务类生成DynamicApiControllerInfo,再将IApiControllerBuilder存储于DynamicApiControllerManager中,同时分析服务类,将公开非静态方法作为action,存储到DynamicApiControllerManager.Actions
相关文章推荐
- ASP.net 路径问题 详解
- ASP.net 路径问题 详解
- DataStructure-4-队列
- flash as3用代码播放声音的常用方法和属性
- 错误:Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds
- Length of Last Word(返回最后一个字母的长度)
- HDU1299 素数分解
- HDOJ 1795 The least one(素数打表)
- IOS开发UI基础文本属性Attributes
- 使用innotop监测mysql
- HashMap解决hash冲突的方法
- vs2010 和 vs2012同时安装遇到的问题
- C语言关键字详解
- IOS开发UI基础UIControl事件
- Appium for Mac 环境准备篇
- (个人开源)ffpanel --ffmpeg的GUI,让ffmpeg离开黑黑的命令行
- POJ 2828 Buy Tickets 线段树
- IOS开发UI基础UIImagePickerController的属性
- 小点滴——Lingo的非线性规划、最优化求解
- HDU杭电4883 TIANKENG’s restaurant