向ASP.NET Core迁移
我們首先來看看ASP.NET Core有哪些優勢?
跨平臺:可以部署到Linux服務器上
內置一套對云和部署環境非常友好的配置模塊
內置依賴注入
IIS或者Kestrel(或者其它自定義)
輕量級、高性能、模塊化的Http處理管線
.NET Core 是開源的,并且基于nuget發布。 這讓我們有了更大的空間去改造和擴展它
更易于現代化的項目開發,比如面向容器,微服務架構,對DevOps更友好
公司的決策層為什么要做這樣的選擇?
降低成本,提升效率
提升公司的技術品牌
更好的留住和培養現有的開發團隊,以及招募到更好的開發者
在同等用戶規模的情況下,選擇 Linux的服務器比Windows Server的性價比更高。在一個產品的整個實現與運營生命周期當中,編碼只占了很小的一部分,還有開發與測試環境的初始化與維護,測試與集成,線上環境部署與運維這都會占用不少的時間,通過自動化可以大幅度的減少這些時間。而在.NET Core實現跨平臺之后,讓自動化的門檻降到最低。你不再需要一個資深的架構師或者專業的DevOps才可以實現,一個有經驗肯學習的開發者足以應付。
如何來做升級和改造 ?
?說到真實產品的技術升級和改造,不傷筋動骨,不可能完成。
老系統是 asp.net Web Form
老系統用的是WCF之類的項目
老系統是asp.net MVC或者WEB API
與其等待你的總監做這個決定,不如自己先干起來。如果不能從無到有,那么我們可以在原來的系統上換部件:也就是我們的最小升級方案,將.NET Core部署在IIS上。
最小升級方案:將ASP.NET Core部署在IIS上
ASP.NET Core所有的項目都必須運行在Kestrel或者一個自定義的Web Server上。
在asp.net core 2.0時,采用默認的? WebHost.CreateDefaultBuilder().Builder() 得到的Host已將將 Kestrel和IISIntegration都添加進來。
public static void Main(string[] args){BuildWebHost(args).Run(); }public static IWebHost BuildWebHost(string[] args){ ? ?return WebHost.CreateDefaultBuilder(args).UseStartup<Startup>().UseKestrel(options =>{options.Listen(IPAddress.Loopback, 5000);options.Listen(IPAddress.Loopback, 5001, listenOptions =>{listenOptions.UseHttps("testCert.pfx", "testPassword");});}) .UseIISIntegration() .Build() }IISIntegration其實是將IIS做一個反向代理,AspNetCoreModule的任務就是將請求轉發給Kestrel。
?
新老項目交互的問題
前后端未分離,就是一個大的網站
前后端已分離,前端和移動端直接調用ASP.NET Web API
第一種情況會給系統以及開發增加的復雜度是: 本地代碼訪問變成API訪問之后的引發的問題,這也是多數團隊在做服務化時首先遇到的問題。
-
增加額外的API訪問代碼?
-
增加Debug的復雜度,不好找原因
第二種情況,已經API化只是沒有做拆分。那我們新寫的ASP.NET Core API 可以直接被訪問。這里的問題是要解決認證授權的問題包括(從客戶端到Core API,以及從Core API到原來的Web API)
關于ASP.NET Core認證與授權相關可以參考我寫的下一篇文章 ASP.NET Core集成現有系統授權?
原文地址:http://www.cnblogs.com/cgzl/p/7795121.html
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結
以上是生活随笔為你收集整理的向ASP.NET Core迁移的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET Core跨平台的奥秘[上篇]:
- 下一篇: ASP.NET Core集成现有系统认证