ASP。网络核心中动态WebApi的实现方法

  介绍

这篇文章主要介绍ASP。网络核心中动态WebApi的实现方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

<强>一。前言

接触到动态WebApi(动态Web API)这个词的已有几年,是从ABP框架里面接触到的,当时便对ABP的这个技术很好奇,后面分析了一波,也尝试过从ABP剥离一个出来作为独立组件来使用,可是后来因与ABP依赖太多而放弃。十几天前朋友熊猫将这部分代码(我和他在搞事情)成功的从ABP中剥离出来并做了一个简单演示扔给我,经过这么久(实在是太懒_)终于经过一些修改,添加功能,封装,现在已经能作为一个独立组件使用,项目开源在Github (https://github.com/dotnetauth/Panda.DynamicWebApi),希望觉得有用的朋友能给一个明星支持一下。

本文只讲使用,不讲原理,原理放到后面的文章中详细介绍。

<强>二。介绍

不管是传统的三层架构,DDD经典四层架构(DDD Lite),亦或是其他具有应用逻辑层(业务逻辑层)的架构,在网络应用程序开发当中,我们的业务逻辑最终都需要经过Web Api来进行调用,这里我们可能会有一个重复的操作:编写业务逻辑→编写Api调用业务逻辑,这种重复性的操作有没有解决办法呢,我们编写完业务逻辑以后便给我们自动生成之前,答案当然是有的。

这里介绍一下本文的主角:<代码> Panda.DynamicWebApi>

<强>三。使用

这里以DDD经典四层架构中的应用逻辑层来讲解。

<强> 1。准备

(1)建立两个项目一个是应用逻辑层类库项目,一个是作为生成WebApi主机,ASP。网络核心WebApi项目

 ASP。网络核心中动态WebApi的实现方法

<强>(2)编写应用逻辑

定义一个应用逻辑接口,所有应用逻辑都应实现它:

public  interface  IApplicationService   {   }

定义一个学生管理逻辑接口,继承应用逻辑接口

public  interface  IStudentAppService : IApplicationService   {   ,///& lt; summary>   ,///根据ID获取学生   ,///& lt;/summary>   ,///& lt; param  name=癷d"祝辞& lt;/param>   ,///& lt; returns> & lt;/returns>   ,StudentOutput  (int  id);      ,///& lt; summary>   ,///获取所有学生   ,///& lt;/summary>   ,///& lt; returns> & lt;/returns>   ,List ();      ,///& lt; summary>   ,///更新学生信息   ,///& lt;/summary>   ,///& lt; param  name=癷nput"祝辞& lt;/param>   ,void 更新(UpdateStudentInput 输入);      ,///& lt; summary>   ,///更新学生年龄   ,///& lt;/summary>   ,///& lt; param  name=癮ge"祝辞& lt;/param>   ,void  UpdateAge (int 年龄);      ,///& lt; summary>   ,///根据ID删除学生   ,///& lt;/summary>   ,///& lt; param  name=癷d"祝辞& lt;/param>   ,void 删除(int  id);      ,///& lt; summary>   ,///添加学生   ,///& lt;/summary>   ,///& lt; param  name=癷nput"祝辞& lt;/param>   ,void 创建(CreateStudentInput 输入);   }

实现学生逻辑管理接口:

public  class  StudentAppService: IStudentAppService   {   ,///& lt; summary>   ,///根据ID获取学生   ,///& lt;/summary>   ,///& lt; param  name=癷d"祝辞& lt;/param>   ,///& lt; returns> & lt;/returns>   ,[HttpGet (“{id: int}“))   ,public  StudentOutput  Get (int  id)   ,{   ,return  new  StudentOutput (), {Id =, 1,, Age =, 18日,Name =,“张三“};   ,}      ,///& lt; summary>   ,///获取所有学生   ,///& lt;/summary>   ,///& lt; returns> & lt;/returns>   ,public  List< StudentOutput>, ()   ,{   ,return  new  List ()   ,{   new 才能;StudentOutput () {Id =, 1, Age =, 18日Name =,“张三“},   new 才能;StudentOutput () {Age  Id =, 2,=, 19日Name =,“李四“}   ,};   ,}      ,///& lt; summary>   ,///更新学生信息   ,///& lt;/summary>   ,///& lt; param  name=癷nput"祝辞& lt;/param>   ,public  void 更新(UpdateStudentInput 输入)   ,{   ,throw  new  System.NotImplementedException ();   ,}      ,///& lt; summary>   ,///更新学生年龄   ,///& lt;/summary>   ,///& lt; param  name=癮ge"祝辞& lt;/param>   ,[HttpPatch (“{id: int}/age"))   ,public  void  UpdateAge (int 年龄)   ,{   ,throw  new  System.NotImplementedException ();   ,}      ,///& lt; summary>   ,///根据ID删除学生   ,///& lt;/summary>   ,///& lt; param  name=癷d"祝辞& lt;/param>   ,[HttpDelete (“{id: int}“))   ,public  void 删除(int  id)   ,{   ,throw  new  System.NotImplementedException ();   ,}      ,///& lt; summary>   ,///添加学生   ,///& lt;/summary>   ,///& lt; param  name=癷nput"祝辞& lt;/param>   ,public  void 创建(CreateStudentInput 输入)   ,{   ,throw  new  System.NotImplementedException ();   ,}   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

ASP。网络核心中动态WebApi的实现方法