日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

dotnet core开发体验之开始MVC

發(fā)布時間:2023/12/4 c/c++ 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dotnet core开发体验之开始MVC 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

開始

在上一篇文章:dotnet core多平臺開發(fā)體驗?,體驗了一把dotnet core 之后,現(xiàn)在想對之前做的例子進行改造,想看看加上mvc框架是一種什么樣的體驗,于是我就要開始誕生今天的這篇文章來分享我的感受了。

一、項目改造加入mvc框架

首先我們先修改project.json文件,加入mvc框架的依賴、添加發(fā)布時候的發(fā)布的包含內(nèi)容、還有就是編譯選項,修改前后的對比如下圖。

第二我們對Startup.cs進行修改,以讓能加載mvc框架進行工作。如下圖,把我們原來輸出到頁面的內(nèi)容給刪除掉,修改成使用mvc并配置mvc的路由信息。同時還需要把mvc給加入到services里面。

第三我們要添加下 視圖和控制器,創(chuàng)建Controllers和Views兩個目錄。并且添加HomeController控制器和它對應(yīng)的視圖。

HomeController.cs的內(nèi)容

using Microsoft.AspNetCore.Mvc;
namespace LearnDotnetCore.Controllers{
? ?public class HomeController : Controller{ ? ?
? ? ? ?public IActionResult Index() ? ? ?
? ? ? ?
{ ? ? ? ? ?
? ? ? ? ?return View();}} }

Home/Index.cshtml的內(nèi)容

Hello from ASP.NET Core MVC! ?

到這里改造加入的內(nèi)容已經(jīng)完成了,然后輸入命令來下載依賴包和編譯運行

dotnet restore

dotnet run

Project LearnDotnetCore (.NETCoreApp,Version=v1.0) will be compiled because inputs were modified Compiling LearnDotnetCore for .NETCoreApp,Version=v1.0Compilation succeeded. ? ?0 Warning(s) ? ?0 Error(s)Time elapsed 00:00:04.0228759Hosting environment: Production Content root path: /Users/caipeiyu/Documents/code/c#/LearnDotnetCore Now listening on: http://localhost:5000Application started. Press Ctrl+C to shut down.

輸入上面兩個命令后,顯示編譯成功,并運行起來。 然后打開瀏覽器輸入地址http://localhost:5000/ 瀏覽器顯示內(nèi)容?Hello from ASP.NET Core MVC!。到這里我們已經(jīng)成功的給添加上mvc框架,并且很好的運行起來,但是界面好像挺單調(diào),可以添加點其他的內(nèi)容讓顯示充實的。添加mvc框架進來如此的簡單,內(nèi)容如此的少,文章到這里結(jié)束肯定不是我的風格了,篇幅不夠放首頁等下不小心就被移除了,這肯定是不能忍受的啦。下面可以來研究下這個mvc的簡單運行原理然后分享一下,怎么說也得湊點字數(shù)。

二、ASP.NET Core MVC運行原理初探

首先我們先了解一下什么是mvc模式,什么是mvc框架。其實像我們經(jīng)常說的mvc很多講的都是這么一個mvc框架,而不是講的什么mvc模式。
需要明白的一點是?MVC模式(Model–view–controller)是軟件工程中的一種軟件架構(gòu)模式,而aps.net mvc是一種對mvc模式實現(xiàn)的一個框架。

參考資料:https://zh.wikipedia.org/wiki/MVC

自己實現(xiàn)簡單的mvc

在一開始,假設(shè)我們沒有?asp.net mvc 框架?那么我們自己想要實現(xiàn)一個mvc模式的話,那么我們能如何去實現(xiàn)呢?

首先我們來新建一個web項目,如果像前面那樣用dotnet new建立一個項目然后再改造,感覺還是比較麻煩。這里有另一種建議,使用Yeoman 來新建立項目,參考:https://docs.asp.net/en/latest/client-side/yeoman.html?#building-projects-with-yeoman
安裝細節(jié)這里不做翻譯介紹,請自行研究。安裝完這個東西后,我們可以新建立一個Empty Web Application項目。建立完成項目后,我們可以來建立一個mvc實現(xiàn)代碼。

首先我們可以建立一個 Model

public class MyModel{ ? ?
? ? public string Name{get;set;} }

然后建立一個 View

using Microsoft.AspNetCore.Http;
public class MyView{ ?
?private MyModel _model; ?
?
??public MyView(MyModel model){_model = model;} ? ?
??
??public async System.Threading.Tasks.Task Show(HttpContext context) ? ?{ ? ? ? ?await context.Response.WriteAsync($"Hello {_model.Name}");} }

最后建立一個Controller

public class MyController{ ?

?public MyView Index(){MyModel model = new MyModel(){Name="I am Home!"}; ? ? ? ?return new MyView(model);} ?
?
? ?public MyView About(){MyModel model = new MyModel(){Name="I am About"}; ? ? ? ?return new MyView(model);}}

建立完成后,我們就可以在入口處調(diào)用我們Controller,入口為Startup類的方法Configure里面的app.Run修改代碼如下

? ?public void Configure(IApplicationBuilder app) ? ?{MyController controller = new MyController();app.Run(async (context) =>{ ? ? ? ? ? ?switch (context.Request.Path.Value){ ? ? ? ? ? ? ? ?case "/about": ? ? ? ? ? ? ?
? ? ? ? ?await controller.About().Show(context); ? ? ? ?
? ? ? ? ? ? ? ? ? ? ?break; ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ??default: ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ??? ? ? ?await controller.Index().Show(context); ? ? ? ? ? ? ? ? ? ?break;}});}

再運行 dotnet run,啟動成功后,在瀏覽器里面輸入http://localhost:5000/ 就顯示 Hello I am Home! 輸入http://localhost:5000/about?就顯示 Hello I am About,如上,就是我們實現(xiàn)了最簡單的一個mvc。看到這里,可能還是很多人一頭霧水那asp.net mvc里面是怎么一回事呀。

aspnet mvc運行初步解析

想知道aspnet mvc的模型是如何工作起來的,最簡單有效的辦法就是去看它的源碼,參考源碼:https://github.com/aspnet/Mvc

程序的一個順序如下:

  • 先添加所有mvc運行需要依賴的東西到servicecollection里面去。包括Controller、Views等。MvcServiceCollectionExtensions.cs

  • 添加路由支持,然后根據(jù)路由實現(xiàn)的中間件來驅(qū)動控制器的動作。MvcApplicationBuilderExtensions.cs

  • 在添加路由支持的源碼里面我們可以看到有一句代碼

    var routes = new RouteBuilder(app) {DefaultHandler = app.ApplicationServices.GetRequiredService<MvcRouteHandler>(), };

    從這個代碼我們不難看到路由的驅(qū)動入口就是?MvcRouteHandler,在這個類里面調(diào)用方法public Task RouteAsync(RouteContext context),這個方法主要是根據(jù)路由提供的數(shù)據(jù)來選擇是要執(zhí)行哪個控制器和控制器里面的方法。具體的實現(xiàn)可以參考ControllerActionInvoker.cs

    整個mvc運行起來的大概原理也就是這樣,感覺好像也沒有特別的復(fù)雜。至于這個mvc框架里面的依賴是如何注入,如何在調(diào)用到時取出來就不屬于本文的范圍。然后對路由內(nèi)部的實現(xiàn)有興趣的可以參考源碼:https://github.com/aspnet/Routing

    由于每一個人對知識的掌握范圍的不同,可能單純閱讀代碼是無法明白是什么意思,那么可以把源碼下載下來,然后在我說到的這幾個方法里面加斷點看看每一個變量是怎么樣的,可能會更好的輔助理解。更仔細的內(nèi)容我將會在今后的文章里面進行介紹。本文結(jié)束。

    相關(guān)文章:

    • 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簡介

    • 云服務(wù)器下ASP.NET Core 1.0環(huán)境搭建(包含mono與coreclr)

    • 使用VS Code開發(fā)ASP.NET Core 應(yīng)用程序

    • dotnet run是如何啟動asp.net core站點的

    • ASP.NET Core提供模塊化Middleware組件

    • “dotnet restore"和"dotnet run"都做了些什么?

    • 探秘 dotnet run 如何運行 .NET Core 應(yīng)用程序

    • .NET Portability Analyzer 已開源

    • ASP.NET Core的配置(1):讀取配置信息

    • ASP.NET Core的配置(2):配置模型詳解

    • .NET Core 1.0 RC2 歷險之旅

    • 使用VS Code開發(fā) 調(diào)試.NET Core 應(yīng)用程序

    • 讓我們Core在一起:ASP.NET Core & .NET Core

    • .NET Core VS Code 環(huán)境配置

    • 官方博客明確了 .NET Core RC2/RTM 時間表

    • .NET Core全新的配置管理[共9篇]

    • 利用記事本創(chuàng)建一個ASP.NET Core RC2 MVC應(yīng)用

    • 微軟.NET 正式劈腿成功,橫跨所有平臺

    • .NET Core 1.0 CentOS7 嘗試

    • 解讀發(fā)布:.NET Core RC2 and .NET Core SDK Preview 1

    • [.NET Core].NET Core R2安裝及示例教程

    • ASP.NET Core 開發(fā)-中間件(Middleware)

    • 結(jié)合Jexus + Kestrel 部署 asp.net core 生產(chǎn)環(huán)境

    • 通過Jexus 部署 dotnetcore版本MusicStore 示例程序

    • ASP.NET Core 中文文檔 第一章 入門

    • 用 Visual Studio Code 在 macOS 上創(chuàng)建首個 ASP.NET Core 應(yīng)用程序

    • 用 Visual Studio 和 ASP.NET Core MVC 創(chuàng)建首個 Web API

    • 用 Visual Studio 發(fā)布一個 Azure 云 Web 應(yīng)用程序

    • ASP.NET Core MVC 與 Visual Studio 入門

    • 第二章指南(4.2)添加 Controller

    • DotNet Core 介紹

    • asp.net core 中間件詳解及項目實戰(zhàn)

    • 教你實踐ASP.NET Core Authorization(免看文檔教程)

    • asp.net core 使用 Redis 和 Protobuf 進行 Session 緩存

    • asp.net core 中間件詳解及項目實戰(zhàn)

    • 第二章 指南(4.3)添加 View


    原文地址:http://www.cnblogs.com/caipeiyu/p/5575158.html


    .NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關(guān)注

    總結(jié)

    以上是生活随笔為你收集整理的dotnet core开发体验之开始MVC的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。