〖青岛港物流〗信息网:(阅读了这)三篇文章,“你”也就基本理解了ASP.NET Core MVC“框”架的工作原理

admin 5个月前 (04-18) 科技 44 1

sunbet

www.0577meeting.com 提供官方[APP“下载”,<游戏火>爆, 口碑极好[,“服务一”流,“一直是”sunbet〖会〗员‘的’首选。

,

《200<行>代码,7‘个’对{象}——{让}你{了}解ASP.NET Core({框架})‘的’本质》【让很多读】者对ASP.NET Core(管道有深刻‘的’)理解,「知道{了}」ASP.NET Core‘{框架}针对每个请求‘的’处’『理』流程。{在过去很长一段时间}中, 有很多人私信[给我:能否按照相同‘的’方式分〖析一下〗MVC{框架}。<真实‘的’>MVC{框架}其实很复杂,「〖所以〗我们依然按」照类似《‘的’方式大刀阔斧》地“〖砍〗掉”「{了}很多」“细枝末节”,《利用一个》Mini「版」本‘的’模拟{框架}将真实ASP.NET Core MVC〖最〗核心‘的’部分展示出来。{和}Mini「版」本‘的’ASP.NET Core{框架}一样,〖这个〗Mini‘版‘的’’ASP.NET Core MVC{框架}同样采用真实{框架}‘一致‘的’’设计,【并且是同样‘可’以】直接运(行)‘的’。(为{了}更好‘的’维护),我将这两个模拟{框架}放「到{了}」github 上[[。

ASP.NET Core Mini: https://github.com/jiangjinnan/AspNetCoreMini

ASP.NET Core MVC Mini:https://github.com/jiangjinnan/AspNetCoreMvcMini

[ 上[[篇]<路由>整{合}

整个[MVC{框架}建立在路由中间件(《ASP.NET Core 3{框架}揭秘》 下册具[有对路由中间件‘‘的’专门介绍’,(本书正在参加)京东满100-50「活」动,<错过之>前5折优惠‘的’同学‘可’以 上[[车{了}) 上[[。【不论是面向】Controller‘的’Model-View-Controller 编程模型[,还是面向页面‘的’Razor Pages 编程模型[,每个请求指向‘的’都一个<某>个Action,〖所以〗MVC{框架}只需要将每个Action‘封装成一个路由终结’点(RouteEndpoint),并通过自定义‘的’EndpointDataSource注册到路由中间件 上[[即‘可’。 本篇着重关注[MVC{框架}与路由中间件‘的’整{合},〖所以〗我们将Action方法‘的’定义作{了}最大‘的’《简化》:Action“方法都是无参方法”,{这样我们就不需}要考虑「参数绑定」‘的’ 问题[;Action方法‘的’返回值都是Task{({或}者)}Void,所有‘的’请求处理任务都(实)现在方法中。 阅读全[文…

public class FoobarController: Controller
{
    public void Foo();
    public Task BarAsync();
    public ValueTask BazAsync();
}

[(中篇)]‘请求响应’

《我》们在《[ 上[[篇]:<路由>整{合}》‘将定义’在Controller类型中‘的’Action方法《简化》成只返回Task{({或}者)}Void‘的’方法,【并让】方法自身去完成包括对请求予以相应‘的’所【有请求处理任务】,但<真实‘的’>MVC{框架}对Action【方法对返】回类型没有任何‘的’限〖制〗。‘一般来’说,《我们倾向于将》Action方法‘的’返回类型定义成IActionResult、Task<IActionResult>{({或}者)}ValueTask<IActionResult>。<如果>Action方法返回其他类型‘的’对{象},该对{象}最终还是会被转【换成】IActionResult对{象}。在 整个[MVC{框架}针对请求‘的’处『理』流<程中>,IActionResult对{象}主要负责针对请求‘的’响应工作。本篇我们将对 上[[面建立‘的’模拟{框架}作进一步完<善>,(接触针对)Action方法返回类型‘的’限〖制〗。 阅读全[文…

public class FoobarController: Controller
{
    public IActionResult Foo();
    public Task<IActionResult> BarAsync();   
    public ValueTask<IActionResult> BazAsync();
    public Foobar Qux();
    public Task<Foobar> QuuxAsync();
    public ValueTask<Foobar> CorgeAsync();
}

[『下篇』]「参数绑定」

模拟{框架}到目前为止都假定Action方法是没有参数‘的’,【我们知道】MVC{框架}对Action方法‘的’参数并没有作限〖制〗,它‘可’以包含任意数量{和}类型‘的’参数。【一旦将】“{零}参数”‘的’假设去除,Action方法‘的’执行就变得没那么简单{了},〖因为在执行目标〗方法之前需要绑定所有‘的’参数。MVC{框架}采用一种叫做“{模型绑定}(Model Binding)”‘的’机〖制〗来绑定目标Action方法‘的’输出参数,这‘可’以算是MVC{框架}针对请求执行流<程中>最为复杂‘的’一个环节。本篇文章对现有{框架}做“进步完全”,通过实现{模型绑定}接触 上[[面针对Action方法参数‘的’限〖制〗。 阅读全[文…

public class FoobarController: Controller
{
    public IActionResult Foo(Foo foo, Bar baz);
    public Task<IActionResult> BarAsync(Foo foo, Bar baz);   
    public ValueTask<IActionResult> BazAsync(Foo foo, Bar baz);
    public Foobar Qux(Foo foo, Bar baz);
    public Task<Foobar> QuuxAsync(Foo foo, Bar baz);
    public ValueTask<Foobar> CorgeAsync(Foo foo, Bar baz);
}

网友评论

  • (*)

最新评论

  • 足球精准推荐网 2020-04-18 00:11:13 回复

    Sunbet 申博Sunbet, 申博致力与代理真诚合作的官方网站www.jrd18.com!Sunbet,致力于用户诚信服务的官方网站!你是小天使吗

    1

文章归档

站点信息

  • 文章总数:677
  • 页面总数:0
  • 分类总数:8
  • 标签总数:1204
  • 评论总数:275
  • 浏览总数:17588