当前位置: 首页 > news >正文

学院网站建设目的与意义婚庆公司招聘

学院网站建设目的与意义,婚庆公司招聘,西安网站代维护,黑龙江新闻广播在线收听开始 回顾上一篇文章#xff1a;dotnet core开发体验之开始MVC 里面体验了一把mvc,然后我们知道了aspnet mvc是靠Routing来驱动起来的#xff0c;所以感觉需要研究一下Routing是什么鬼。 Routing简单使用体验 首先我们用命令yo aspnet创建一个新的空web项目。#xff08;Yeo… 开始 回顾上一篇文章dotnet core开发体验之开始MVC 里面体验了一把mvc,然后我们知道了aspnet mvc是靠Routing来驱动起来的所以感觉需要研究一下Routing是什么鬼。 Routing简单使用体验 首先我们用命令yo aspnet创建一个新的空web项目。Yeoman的使用自己研究参考https://docs.asp.net/en/latest/client-side/yeoman.html?#building-projects-with-yeoman 创建完项目后在project.json里面添加Routing依赖。 dependencies: {    ...Microsoft.AspNetCore.Routing: 1.0.0-*}, 添加完依赖后修改Startup里面的Configure,和ConfigureServices里面添加Routing的使用依赖修改前 public void Configure(IApplicationBuilder app){app.Run(async (context) {            await context.Response.WriteAsync(Hello World!);}); } 修改后 public void ConfigureServices(IServiceCollection services){services.AddRouting(); }public void Configure(IApplicationBuilder app){        var endpoint new RouteHandler((c) c.Response.WriteAsync(Hello, I am Routing!));app.UseRouter(endpoint); } dotnet run 然后浏览器访问http://localhost:5000/ 显示为Hello, I am Routing! 接下来我们在http://localhost:5000/ 后面加入一些其他的东西来访问发现其实还是一样打印Hello, I am Routing! 这让我们感觉好像并没有什么卵用的样子。不着急我们先来看看Routing是怎么运行起来的。在开始这话题之前需要先了解到什么是中间件参考https://docs.asp.net/en/latest/fundamentals/middleware.html Routing的最基本运行原理 Routing的驱动入口就是基于middleware的。可以先看看 app.UseRouter(endpoint)的内部实现参考一个扩展方法类RoutingBuilderExtensions可以看到最后有一句代码return builder.UseMiddlewareRouterMiddleware(router) 。这里可以很明显看到入口在RouterMiddleware的Invoke方法。    public async Task Invoke(HttpContext httpContext)   {           var context new RouteContext(httpContext);context.RouteData.Routers.Add(_router);              await _router.RouteAsync(context);              if (context.Handler null){_logger.RequestDidNotMatchRoutes();                   await _next.Invoke(httpContext);}              else{httpContext.Features[typeof(IRoutingFeature)] new RoutingFeature(){RouteData context.RouteData,};            await context.Handler(context.HttpContext);}} 这个入口的实现是这样的: Invoke入口 实例化一个 RouteContext  把我们传进来的 IRouter 存到 RouteContext里面的 RouteData 再执行IRouter的RouteAsync方法把RouteContext对象传进去提供给具体实现使用。 如果context.Handler没有东西就执行下一个RequestDelegate如果有的话就把RouteData保存起来然后执行这个RequestDelegate。 看到了这里我们已经可以明白下面这个代码运行起来的原理。 public void Configure(IApplicationBuilder app){        var endpoint new RouteHandler((c) c.Response.WriteAsync(Hello, I am Routing!));app.UseRouter(endpoint); } 可能还会有人不明白RouteHandler是个什么鬼既然我们知道了代码的实现运行原理那么肯定可以猜到RouteHandler是有实现接口IRouter的。我们可以看RouteHandler代码    public Task RouteAsync(RouteContext context)    {context.Handler _requestDelegate;           return TaskCache.CompletedTask;} 这里可以看到把我们的(c) c.Response.WriteAsync(Hello, I am Routing!)赋值给context.Handler然后由RouterMiddleware来执行我们这个事件方法。于是我们就可以在浏览器上面看到输出 Hello, I am Routing!这么一句话了。 Routing的一些使用 文章到现在我们虽然知道了Routing运行起来的一个大概原理但是我们一直打印出相同内容确实也没有什么卵用呀。我们要改一下让打印内容能有点改变。这个时候可以使用到Routing提供的Route类来使用。代码修改如下    public void Configure(IApplicationBuilder app)    {            var endpoint new RouteHandler((c) c.Response.WriteAsync($Hello, I am Routing! your item is {c.GetRouteValue(item)}));         var resolver app.ApplicationServices.GetRequiredServiceIInlineConstraintResolver();              var runRoute new Route(endpoint,{item},resolver);app.UseRouter(runRoute);} 修改完代码后我们再次编译运行然后输入http://localhost:5000/ 我们发现一片空白然后再输入http://localhost:5000/abc 发现打印出来的是Hello, I am Routing! your item is abc。然后再输入其他的 http://localhost:5000/abc/cc 发现也是一片空白。这是因为我们给路由添加的匹配是主机地址/{item}那其他的路径都是匹配不到那么肯定就是不会显示任何东西啦。假设我们要给一个默认值那么可以改成这样 var runRoute new Route(endpoint,{itemhome},resolver); OK这个时候我们再输入http://localhost:5000/ 看到的就是Hello, I am Routing! your item is home。 匹配原理相对比较复杂点想要了解的话可以参考 RouteBase的源码然后看相关的类看看我们设置的模板是如何解析的然后如何和url进行匹配的。如果要要来解释完整个过程的话这个文章肯定是不够的所以各位可以自己了解一下。 假如要配置多个路由支持的话可以使用RouteCollection    public void Configure(IApplicationBuilder app)    {            var endpoint new RouteHandler((c) c.Response.WriteAsync($Hello, I am Routing! your item is {c.GetRouteValue(item)}));      var resolver app.ApplicationServices.GetRequiredServiceIInlineConstraintResolver();            var runRoute new Route(endpoint,{itemhome},resolver);        var otherRoute new Route(endpoint,other/{itemother_home},resolver);        var routeCollection new RouteCollection();routeCollection.Add(runRoute);routeCollection.Add(otherRoute);app.UseRouter(routeCollection);} 修改成上面的代码后就支持两个路由假如输入的url是 http://localhost:5000/other 那么就是使用runRoute如果输入的是http://localhost:5000/other/myother 那么使用的就是otherRoute。 这样书写暴露了很多细节东西我们可以用 Routing提供的RouteBuilder类来编写相同的东西。代码修改一下如下 public void Configure(IApplicationBuilder app)    {        var endpoint new RouteHandler((c) c.Response.WriteAsync($Hello, I am Routing! your item is {c.GetRouteValue(item)}));        var routeBuilder new RouteBuilder(app){DefaultHandler endpoint,};routeBuilder.MapRoute(default,{itemhome});routeBuilder.MapRoute(other,other/{itemother_home});app.UseRouter(routeBuilder.Build());} 如果有一些特殊的的路由配置我们也可以使用routeBuilder.Routes.Add(route);这代码来添加。至于能配置的模板都有些什么可以看 Routing 的 Template 的测试类https://github.com/aspnet/Routing/tree/dev/test/Microsoft.AspNetCore.Routing.Tests/Template 看完基本就知道都有些什么样的模板格式可以使用了。 实现自己的 RouteHandler 到现在我们已经知道了Routing大概是怎么运行起来知道了如何简单的使用。那么接下来可以来创建一个自己的RouteHandler来加深一下对Routing的使用体验。 创建一个类MyRouteHandler,实现接口IRoute: public class MyRouteHandler : IRouter {public VirtualPathData GetVirtualPath(VirtualPathContext context){        return null;}public Task RouteAsync(RouteContext context){context.Handler (c) {var printStr $controller:{c.GetRouteValue(controller)}, $action:{c.GetRouteValue(action)},id:{c.GetRouteValue(id)};            return c.Response.WriteAsync(printStr);};        return TaskCache.CompletedTask;} } 然后我们的路由配置改成这样    public void Configure(IApplicationBuilder app)    {        var endpoint new MyRouteHandler();        var routeBuilder new RouteBuilder(app){DefaultHandler endpoint,};routeBuilder.MapRoute(default,{controllerHome}/{actionIndex}/{id?});app.UseRouter(routeBuilder.Build());} 然后打开浏览器http://localhost:5000/ 打印出来的内容是 controller:Home,action:Index,id: 。这样是不是很像我们去调用mvc的控制器和控制器的行为呢Routing的体验文章到这来就结束了谢谢观看。 相关文章 ASP.NET Core 1.0 入门——了解一个空项目ASP.NET Core 1.0 部署 HTTPS .NET Framework 4.5.1.NET Core 1.0、ASP.NET Core 1.0和EF Core 1.0简介云服务器下ASP.NET Core 1.0环境搭建包含mono与coreclr使用VS Code开发ASP.NET Core 应用程序dotnet run是如何启动asp.net core站点的ASP.NET Core提供模块化Middleware组件“dotnet restore和dotnet run都做了些什么探秘 dotnet run 如何运行 .NET Core 应用程序.NET Portability Analyzer 已开源ASP.NET Core的配置1读取配置信息ASP.NET Core的配置2配置模型详解.NET Core 1.0 RC2 历险之旅使用VS Code开发 调试.NET Core 应用程序让我们Core在一起ASP.NET Core .NET Core.NET Core VS Code 环境配置官方博客明确了 .NET Core RC2/RTM 时间表.NET Core全新的配置管理[共9篇]利用记事本创建一个ASP.NET Core RC2 MVC应用微软.NET 正式劈腿成功横跨所有平台.NET Core 1.0 CentOS7 尝试解读发布.NET Core RC2 and .NET Core SDK Preview 1[.NET Core].NET Core R2安装及示例教程ASP.NET Core 开发-中间件(Middleware)结合Jexus Kestrel 部署 asp.net core 生产环境通过Jexus 部署 dotnetcore版本MusicStore 示例程序ASP.NET Core 中文文档 第一章 入门用 Visual Studio Code 在 macOS 上创建首个 ASP.NET Core 应用程序用 Visual Studio 和 ASP.NET Core MVC 创建首个 Web API用 Visual Studio 发布一个 Azure 云 Web 应用程序ASP.NET Core MVC 与 Visual Studio 入门第二章指南4.2添加 ControllerDotNet Core 介绍asp.net core 中间件详解及项目实战教你实践ASP.NET Core Authorization免看文档教程asp.net core 使用 Redis 和 Protobuf 进行 Session 缓存asp.net core 中间件详解及项目实战第二章 指南4.3添加 View 原文地址http://www.cnblogs.com/caipeiyu/p/5597775.html .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注
http://www.pierceye.com/news/568707/

相关文章:

  • 全球优秀企业网站做原型的素材网站
  • 单页面营销网站怎么用polylang做网站
  • 网站开发入那个科目中国网站建设哪家公司好
  • 网站流量提升方案软件公司名称大全查询
  • 怎么做淘客专属网站济南公司网站推广优化最大的
  • 苏州网站建设极简幕枫织梦模板网站源码
  • 青岛网站设计定制2023传奇手游排行榜
  • 商务酒店网站建设淮南网备案查询
  • 菏泽炫佑网站建设中国城乡建设部网站
  • 网站开发与移动互联自助建站的优点与缺点
  • 公司做网站的好处上海网站设计找哪家
  • 个人如果做网站赚钱吗WordPress 聊天小工具
  • 商城网站建设哪家便宜网络架构师和网络工程师区别
  • p2p网站建设 深圳广东手机网站建设品牌
  • 亚马逊网上商城是正品吗长沙seo计费管理
  • 东莞品牌网站建设多少钱网站设计有限公司怎么样
  • dedecms新网站 上传到万网的空间浦口区网站建站公司
  • 龙岗在线网站建设西安房产信息网
  • 如何建立公司企业网站大朗做网站的
  • 怎么做整蛊网站wordpress系统的特点
  • php网站开发视频教程浙江建设局网站
  • 温州seo顾问温州网站优化排名推广
  • qq空间怎么做网站wordpress 分类名
  • 外贸国际网站推广重庆律师网站
  • 唐山建设信息网站wordpress 首页显示产品
  • 建设网站的公司哪个济南兴田德润怎么联系重庆短视频培训
  • 营销型网站的建设方案企业网页设计作品分析
  • 网站建设的费用报价做网站销售这几天你有什么想法
  • 做箱包关注哪个网站类似建站之星网站
  • 口碑好网站建设报价wordpress 微博侧边栏