公司网站门户建设包括哪些,广州seo优化,青岛网站建设方案优化,长沙开发网站的公司哪家好前言作为一个Windows系统下的开发者#xff0c;我对于Core的使用机会几乎为0#xff0c;但是考虑到微软的战略规划#xff0c;我觉得#xff0c;Core还是有先了解起来的必要。因为#xff0c;目前微软已经搞出了两个框架了#xff0c;一个是Net标准(.NetFramework)#… 前言作为一个Windows系统下的开发者我对于Core的使用机会几乎为0但是考虑到微软的战略规划我觉得Core还是有先了解起来的必要。因为目前微软已经搞出了两个框架了一个是Net标准(.NetFramework)一个是Net Core。而新特性的更新几乎都是在Net Core这个框架中。所以考虑到未来一旦Core完善了那微软肯定会放弃现在的.NetFrameWork。因此.Net程序员集体改用Net Core想来一定是大趋势。所以让我们怀着探索的精神来看看Asp.Net Core Web应用程序吧。创建Asp.Net Core项目首先我们先来创建一个Asp.Net Core Web应用程序项目然后一起探索。打开Visual Studio创建项目选择Asp.Net Core Web应用程序如下图然后选择Asp.Net Core Web应用程如下图然后我们得到了这样一个布局的项目如下图可以看到项目中有四个文件和两个文件夹Page、wwwroot。其中wwwroot文件夹很特别图标和其他的文件夹不一样不过依然可以修改他的名称修改名称后文件夹图标会变回普通的图标不过既然是特殊图标想来一定有特殊意义我们稍后再研究先接着向下浏览Page文件夹。Page文件夹展开后发现里面有很多页面因此很明显它就是存储页面的地方了页面内容我们稍后再看现在我们先看看项目最外面的四个文件。Program.cs看到这个文件我也很奇怪Web是依赖IIS部署AspNet中是没有Program的那么Core中为什么多出了个Program文件呢我们调查一下。原来AspNetCore有一个自带的服务器叫做Kestrel 。什么是自带服务器呢就好比我们创建了一个WCF服务但又不想挂IIS上就自己建一个ServiceHost来挂服务。但Kestrel 明显更高级它还支持与反向代理服务器如 Internet Information Services (IIS)、Nginx 或 Apache结合使用。什么是【反向代理服务器】呢就是由与IIS类似的服务器先接收来自网络的 HTTP 请求然后再将这些请求转发到 Kestrel最后由Kestrel来实现调用调用流程如下图所示。调查到这里我做大致可以猜出了Program.cs是干什么的了——它应该是用来启动Kestrel 这个服务器的。现在我打开Program.cs发现如下代码。public static IWebHost BuildWebHost(string[] args) WebHost.CreateDefaultBuilder(args) .UseStartupStartup() .Build();个人认为这段代码很坑这是一个函数的简写但又没起到简写的作用还容易扰乱初学者所以我们做一下修改如下public static void Main(string[] args){ BuildWebHost(args).Run();}public static IWebHost BuildWebHost(string[] args){ return WebHost.CreateDefaultBuilder(args) .UseStartupStartup() .Build();}看修改后代码我们就很明确了Main函数启动调用BuildWebHost函数故名思意这是一个创建网站服务器的函数返回值是IWebHost。然后我们看到了在Main函数使用BuildWebHost函数返回的IWebHost的实例执行其下的Run方法。到此已经很明确了Program就是启动服务器用的。Startup.cs这个文件我们相对比较熟悉它是项目启动时便会调用的文件功能有很多下面看下系统为我们生成的代码。public class Startup{ public Startup(IConfiguration configuration) { Configuration configuration; } public IConfiguration Configuration { get; } public void ConfigureServices(IServiceCollection services) { services.AddMvc(); } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseBrowserLink(); app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler(/Error); } app.UseStaticFiles(); app.UseMvc(); }}我们看到了三个函数现在我们简单的为三个函数打一下断点启动一下网站。很简单的得出三个函数的运行顺序是Startup——ConfigureServices——Configure。构造函数是简单的赋值我们跳过它来看ConfigureServices。可以看到ConfigureServices里只调用了services.AddMvc()查看官方介绍原来这个方法是将Mvc服务添加到指定的服务集合中。通过调试发现ConfigureServices函数的services.AddMvc()与Configure函数app.UseMvc()是成对的即当我们把MVC服务添加到服务集合中才能在后续的Configure方法里使用Mvc服务。那么我们建立的是Web应用为什么要添加Mvc服务呢我们吧Mvc服务删除一下看看效果吧。删除了Mvc服务后我们会发现网站启动起来了但是并没有正常访问我们的主页。重新添加回Mvc服务我们再启动网站查看下网站链接路径如下http://localhost:1234/Indexhttp://localhost:1234/About可以发现这些路径是Mvc模式的路径也就是说Asp.Net Core Web应用程序也是用Mvc路由访问网址所以Mvc的服务是必须添加的。Configure中我们看到还使用了其他IApplicationBuilder的方法不过这些方法我们即便注释掉也不影响网站启动所以我们暂时忽略他们等用到在学习吧。bundleconfig.json故名思意捆配置文件感觉和mvc的BundleConfig.cs文件很像打开看一下可以确定了就是mvc的捆配置文件。那也就是说这个是没什么用的文件因为大多数情况我们不会进行捆配置。appsettings.json依然故名思意应该是应用设置文件这个名字很像webconfig里的AppSetting节点所以推断它应该是个配置项目固定值的文件。百度一下appsettings.json发现有很多都是如何读取该文件内容的文章那么现在可以确定了它就是个变量配置文件。----------------------------------------------------------------------------------------------------文件讲解完了下面我们来看文件夹里的内容。wwwroot上门介绍过了wwwroot是一个有特殊标记的文件夹。打开wwwroot我们会发现里面存储的是样式和图片。运行网站在网站里查看下这些图片会发现图片地址都很奇怪。图片路径是/wwwroot/images/banner1.svg但访问起来却是http://localhost:1234/images/banner1.svg。也就是说wwwroot路径会被省略换一种说话wwwroot会被放到网站根目录下。我们在做个实验新建个文件夹存储一些图片运行网站访问我们会发现根本无法访问这些图片。那么我们可以得出结论了wwwroot是Asp.Net Core Web应用程序唯一可以访问的资源文件夹。Pages打开Page文件夹我们可以看到4个可以展开的cshtml和4个不能展开的cshtml文件。打开我们最眼熟的_ViewStart.cshtml双击进入发现代码如下可以看到ViewStart代码和MVC的ViewStart一样那也就是说这是个配置布局的文件了。那么相对应的_Layout.cshtml我们也可以确定了它就是个布局文件那么剩下两个cshtml文件我们也可以推断出了他们也是配置文件或者布局文件。下面我们来看那4个可以展开的cshtml文件。首先我们展开Index.cshtml文件如下图接着我们双击Index.cshtml文件发现里面就是普通的htmlrazor标记。然后我们再双击Index.cshtml.cs文件查看内容得到代码如下public class IndexModel : PageModel{ public void OnGet() { }}通过项目结构我们可以判断Index.cshtml.cs是Index.cshtml的一个后台文件。但查看代码却发现里面的类是个继承PageModel类的IndexModel那它到底和Index.cshtml文件有什么关系呢我们先通过命名推测IndexModel中包含Model关键字所以他应该是与Index.cshtml文件有关的Model。与Index.cshtml文件有关的Model那不就是ViewModel了吗现在我们再回头仔细的看下Index.cshtml文件寻找线索。我发现该文件的前两行内容如下这是Mvc传递页面实体的写法即IndexModel确实是Index.cshtml的实体。那么我们上面的推测就被证实了Index.cshtml.cs文件就是Index.cshtml文件的ViewModel。但Onget是什么呢我们依然通过命名推测我推测它就是以前AspNet的PageLoad页面导入时触发的函数下面我们测试一下修改代码如下public string title; brpublic void OnGet(){ title this.Request.Query[title]; if (!string.IsNullOrWhiteSpace(title)) { ViewData[Title] title; }}然后断点Onget方法。接着我们访问http://localhost:1234/index?titlekiba网址。结果我们的断点被命中了标题也顺利设置成功。因此我们的推测又成功了OnGet就是我们之前的PageLoad方法。结语综上所述我们对Asp.Net Core Web应用程序已经有了一定的了解然后我得出了这样一个结论[Asp.Net Core Web应用程序]在设计上采用的了MVVM的设计理念cshtml.cs文件就是我们[服务端]页面的ViewModel了请求网址使用了Mvc的路径访问技术整体上是一个更优秀的AspNet框架。PS喜欢MVVM的朋友有福音了。----------------------------------------------------------------------------------------------------到此Asp.Net Core Web应用程序探索就结束了。代码已经传到Github上了欢迎大家下载。Github地址https://github.com/kiba518/KibaAspNetCore原文地址https://www.cnblogs.com/kiba/p/10722574.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com