新一代开发框架.NET Core配置入门

17582589-c947bf0b8057a59a.jpg

  .NET Core是一个激动人心的框架,它让.NET APP跨平台成为了可能,同时也为微服务提供了基础,更是为架构分布式系统提供了技术可能。现在市面上介绍.NET Core的书寥寥可数,有的只是泛陈可善,晦涩难懂,估计有的作者只是照抄MSDN。这篇文章结合我的使用经验,争取用最通俗的话介绍它的配置,希望能够让自己,也让各位入门。

1.简介

  .NET Core和ASP.NET有很多不一样的地方,首先是前面提到的,前者是跨平台,用于构建分布式微服务系统,而后者只是运行于WINDOWS系统,用于构建单体式APP.其次是架构上,这两者在不少地方不一样,例如在截获HTTP请求的Pipeline,两者的处理就不同。前者通过称之为“Middleware”的中间件来拦截处理,而后者则是通过HttpModule注入到Application的各个事件中来处理。最后是在两者的开发上不一样,前者只依赖所需要的NuGet包,应用程序只需要获取需要的组件即可,而后者则基于大包式安装做法。

2.DEMO

下面我们来看一个DEMO,通过手动配置,一步一步搭建一个.NET CORE MVC 应用程序。

   第一步:安装VS2017,新建一个WEB 应用程序,选择空项目。


17582589-8fb4c59a2708bad8.jpg


17582589-4e990bf97a681720.jpg

第二步:查看项目的结构:


17582589-e21f2e03f150546d.jpg

和传统的ASP.NET项目结构不一样,这里的launchSettings.json取代了Web.config配置文件,依赖项就是项目依赖的NuGet包,而Program.cs是项目的启动项,里面有一个main()方法,是应用程序运行的入口,类似于控制台程序的main方法。Startup.cs则是一个很重要的类,通俗理解为应用程序配置的类,用于配置应用程序所需的服务,以及定义如何相应处理HTTP Pipeline请求,下面我们再来看下着两个类的代码。

  第三步:查看Startup和Program

  首先我们看下Program,这是运行的入口,很好理解,和传统.NET不一样:


17582589-84d51712a7f2ee8f.jpg

  其中,CreateWebHostBuilder方法用于创建一个WebHost服务器用于侦听请求(先这么简单理解即可)。

   接着看下Startup:


17582589-a12f0b63e44673ec.jpg

这里有两个方法,

1)ConfigureServices用于添加应用程序所需的服务,参数IServiceCollection看得出这是一个服务的集合,用来添加所需的服务。例如,你要用MVC,好吧,那这里就把MVC的服务加进来: services.AddMvc(),这样就把MVC的服务加入进来了。有如,你要用EF,可以,也用类似的AddDbContext<ApplicationDbContext>方法加即可。你就简单理解为这个方法是为应用程序添加所需服务的即可。

2)Configure用来相应HTTP PIPELINE请求,上文说到,传统的ASP.NET是通过注入APPLICATION类的各个事件,而.NET CORE不一样,它是通过在这里调用IApplicationBuilder的名为UseXXX的方法加入Middleware中间件来依次处理HTTP请求,如下图所示:


17582589-619efda357bb56d6.jpg

这里你就简单理解为传统ASP.NET的Module.

  第四步:开始手动配置MVC应用程序:

  1)结合第三步所说的,我们先配置Startup:


17582589-076ef1b9c5c02f0d.jpg

 ConfigureServices里添加 services.AddMvc(),用于增加MVC服务。Configure里增加相应MVC路由请求, app.UseMvc(route=>route.MapRoute(name:"Default",template:"{controller=Home}/{action=Index}"))。

  2)我们以此在项目中增加Controller和View:


17582589-f5935670e0113d0d.jpg


17582589-69bd1232aa0b0087.jpg
17582589-db713f3ae0fef340.jpg

  最后F5运行,成功输出:Hello Wang!

  通过以上的分析,我们应该能大致对.NET CORE的有一个基本了解了,希望能够帮助到你,谢谢!


17582589-79445b1a719a005c.jpg

转载于:https://www.jianshu.com/p/e315132e643e

猜你喜欢

转载自blog.csdn.net/weixin_33905756/article/details/91171110