1. 程式人生 > >為什麼 web 開發人員需要遷移到. NET Core, 並使用 ASP.NET Core MVC 構建 web 和 webservice/API

為什麼 web 開發人員需要遷移到. NET Core, 並使用 ASP.NET Core MVC 構建 web 和 webservice/API

2018 .NET開發者調查報告: .NET Core 是怎麼樣的狀態,這裡我們看到了還有非常多的.net開發人員還在觀望,本文給大家一個建議。這僅代表我的個人意見, 我有充分的理由推薦.net 程式設計師使用. net core而不是. net Framework。有些人可能不同意我的觀點, 但是分享想法和討論它是好的。.net 程式設計師或他們所在的團隊總有各種理由說他們的系統還在使用舊系統, 這顯然是企業開發人員的事情。所以, 我將列出一些關於誰應該遷移到使用. net core而不是. net 框架。以下是我的想法:

  1. 如果您是舊式Windows 服務、web 應用程式或 web 服務的維護者, 則您需要繼續使用. NET 框架。
  2. 如果您的應用程式將部署在舊的 Windows 伺服器上,比如windows 2003/xp, 您需要繼續使用. NET 框架。
  3. 如果您確信您的系統近期不會部署到雲中, 那麼您現在就可以繼續使用. NET 框架。
  4. 如果您對使用. net 框架沒有任何選擇,比如來自公司的要求, 您需要繼續使用. net 框架,這種情況對你的發展是不利的,我勸你學習.net core, 換家更有追求的公司。
初學者, 只學習. NET Core!

如果你是一個初學者開始學習 ASP.NET 或 ASP.NET MVC, 你可能並不知道什麼是. net Framework和. net ore。不用擔心!我建議您看下官方文件

https://docs.microsoft.com/zh-cn/aspnet/index , 您可以輕鬆地看到比較和差異。下面是我可以分享的一些. net framework和. net core的部分, 您可以點選每個連結以獲取開發的工具。

.NET Framework .NET Core
Technology First Release 2002 (Mature) First Release 2016 (Mature)
SDK Windows Only (Version 7, 8, 10) Windows (Version 7, 8, 10),
Linux
(redhat, Ubuntu >14.04, Fedora, Debian, CentOS 7, openSUSE 24, Oracle Linux 7, SLES 12),
Mac
Web Framework Web Form, ASP, MVC (Web and Web API)
Entity Framework (ORM) Entity Framework 6.2 (latest)
(Microsoft SQL Server, Oracle, MySQL (Official), PostgreSL, SQLite, IBM Data Server (DB2))
Entity Framework Core 2.0.1 (latest)
(InMemory (for Testing), Microsoft SQL Server, SQLite, PostgreSQL (Npgsql), IBM Data Server (DB2), MySQL (Official), MySQL (Pomelo), Microsoft SQL Server Compact Edition, Devart (MySQL, Oracle, PostgreSQL, SQLite, DB2, and more),
Oracle (not yet available), MyCat, Firebird-Community)
Frontend Plain MVC, Angular (mostly using MVC) Plain MVC, Angular, React, and Redux
只需要5分鐘入門使用. NET Core

如果您在移動筆記本上看這篇文章, 請下載並安裝當前作業系統 (Windows、Linux、Mac) 的. NET Core SDK 。您不需要安裝 Visual Studio 2017 就可以使用命令列開發. NET Core應用。你完成安裝 SDK 後, 開啟Shell PowerShell (在 Windows 中)、終端(在 Linux 或 Mac 中), 輸入以下命令:

dotnet new console -o myApp
cd myApp
dotnet run

恭喜您, 你已經使用. NET Core 建立了第一個控制檯應用程式。現在, 您可以通過將此應用程式釋出到所需的任何平臺來部署。在 Mac 機上,

dotnet publish --runtime osx-x64

或者安卓,

dotnet publish --runtime Android

dotnet new console -o myApp

當我們執行這個命令時, 它實際上是在資料夾中建立一個控制檯應用程式專案myApp 。如果您檢視資料夾myApp , 則應該看到以下檔案

myApp.csproj
Program.cs

檔案本身只是一個簡單的Hello world。Program.cs

using System;
 
namespace myApp
{
     class Program
     {
         static void Main(string[] args)
         {
             Console.WriteLine("Hello World!");
         }
     }
}

如果執行此命令,

dotnet new --list

它將從框中列出可用模板。這是你可能會看到的,

如果用mvc替換console時, 它將建立一個使用ASP.NET core MVC的 web 應用程式專案。

遷移到 ASP.NET Core 意味著遷移到現代 Web 應用程式

我可以轉移到 ASP.NET Core嗎?簡單的回答當然是否,  您不能僅僅是使用 Visual Studio 2017 開啟舊的 ASP.NET Web Form或 mvc 5就可以完成轉換到 ASP.NET Core mvc。你可以參考以下老程式碼遷移策略:

  1. 如果你的的 web 應用程式使用web form, 則不能直接將其轉換或遷移到 ASP.NET Core。 因為 Web form和 MVC 有著完全不同的體系結構模型。MVC 使用模型、檢視和控制器的分離。也沒有 webform 控制元件元件 (如 web 窗體)。ASP.NETCore MVC 使用純 HTML5 元素。當然您可以使用TagHelpers來建立自定義 HTML 屬性, 這些特性將轉換為普通 HTML5。
  2. 如果你的 web 應用程式使用的是 ASP.NET MVC 5, 則你可以首先建立一個新的 ASP.NET Core MVC 專案,複製貼上某些程式碼到 ASP.NET Core。這將需要一些調整, 特別是在RazorPage。
  3. 如果你的 web 應用程式只是一個 web api , 則你可以首先建立一個新的 ASP.NET Core Web API專案,不是簡單複製一些程式碼。這裡需要做些調整, 因為 ASP.NET Core web api 使用的是 web api 2。
  4. 使用 HTML5! HTML5 僅用於現代 web 應用程式標準。使用來自W3C (全球資訊網聯合體) 標準的 HTML5 。而不僅僅是來自Microsoft EdgeChromeFirefox等的標準。因為每個瀏覽器都有自己的功能, 稱為平臺標準, 而某些瀏覽器平臺功能不成為 W3C 標準。如果只使用 chrome 功能標準, 則 web 可能只會被 chrome 繫結, 並且無法在其他瀏覽器上開啟。並非所有瀏覽器都支援其他瀏覽器功能。
  5. 響應式佈局,響應式佈局,響應式佈局! 重要的事情要說三遍。我們時常聽到開發者說, "不, 我們不需要響應式佈局, 這只是桌面瀏覽器, 我們只是讓它靜態佈局"。如果你的網站to c的, 你必須做響應式佈局, 因為現在移動時代,更多的使用者將使用他們的ios/android上面的移動瀏覽器檢視。
  6. 不要在開發專案中直接使用 CSS。使用SASS 或者LESS.。您可以使用 ASP.NET Core輕鬆完成此項任務。您甚至可以新增Gulp、Grunt或者webpack來編譯 CSS。

如果您的程式碼遵循 S.O.L.I.D Principle 原則進行正確的開發, 我相信, 遷移工作應該是很容易的, 而不是太多的調整。但是, 如果您的程式碼是義大利麵條,則需要進行重構,.NET Core預設就使用依賴關係注入。這是ASP.NET常見最佳實踐,當然是現在做更好, 而不是不做。好處也很多, 你可以學到一些新的東西, 您的新 web 應用程式將具有更好的效能, 更加現代化和可維護性。

對老闆說:遷移到. NET Core

我知道你的老闆會回答什麼, 是的, 那恐怖語句 "相容嗎?"

我的建議是說: "是的, 它是相容的! 他們都是. NET。但我們需要一些調整, 一些需要小的編碼更改,以符合程式設計的最佳實踐"

我們需要遷移到.NET Core的精神是, 如果不是現在, 那麼何時?現在馬上就有釋出.NET Core 2.1, 一切都改變了。技術發生了變化 (現代 Web 應用程式、移動、增強現實等)、基礎結構已更改 (雲、AI)、開發體系結構也已更改 (容器、無伺服器) 等。

咱們這行業不尊重傳統,只尊重創新. --- 微軟CEO Satya Nadella

沒那麼容易

答案是肯定的。但是, 並不意味著不可能。它需要勇氣和知識。 願. NET 力量與您同在!