SlideShare a Scribd company logo
1 of 63
Download to read offline
吳俊毅 Gelis - FB 軟體開發之路-經營者
關於我
• 部落格 (Gelis 技術隨筆)
http://gelis-dotnet.blogspot.tw/
• FB 粉絲團(Gelis 的程式設計訓練營)
https://www.facebook.com/gelis.dev.learning/?ref=bookmarks
• FB 社團 (軟體開發之路)
https://www.facebook.com/groups/361804473860062/?ref=ts&fref=ts
集英信誠-資深.NET技術顧問
.NET Framework .NET Core
跨多個平台 否 是 (勝)
Open Source 否 是 (勝)
Third-Party Components
支援程度
廣 日漸增加、因為Open Source,未來即將超
越 .NET Framework
Windows GUI
Windows Form、WPF 目前無、發展中WinForm/XAML for .NET
Core (目前Windows Only)
Microservice/Docker 侷限於 Windows 優 (勝)
效能
佳 極佳、更適合企業級後台系統/Cloud 環境
(勝)
開發成本/擴充
不錯、但只在 Windows 上 Write Once, Run Anywhere、內建 DI、
Middleware、延展與擴充 (勝)
部署 Install .NET Framework/MSI/GAC... FDD/SCD/FDE (勝)
... ...
為什麼要遷移至 .NET Core
.NET Core 3.0 裡面有什麼?
.NET STANDARD
ASP.NET Core
• dotent CLI 時代
ASP.NET
vNext
ASP.NET
MVC6
ASP.NET
5
ASP.NET
Core 1.0
ASP.NET
Core 1.1
ASP.NET
Core 2.0
ASP.NET
Core 2.1
ASP.NET
Core 2.2
ASP.NET
Core 3.0
ASP.NET
Core 3.1
.NET 5
什麼是 .NET 5?
XAMARIN / MONO.NET FRAMEWORK .NET.NET CORE
.NET STANDARD
.NET
.NET STANDARD
• .NET 5 = .NET Core vNext
所有應用程式都可使用 CLI 建立
• 程式編譯後佔用空間更小,並支持更多的作業系統
July 2019
.NET Core 3.0
RC
Sept 2019
.NET Core 3.0
Nov 2019
.NET Core 3.1
LTS
Nov 2020
.NET 5.0
Nov 2021
.NET 6.0
LTS
Nov 2022
.NET 7.0
Nov 2023
.NET 8.0
LTS
.NET 5
INFRASTRUCTURE
.NET STANDARD
.NET – A unified platform
DESKTOP WEB CLOUD MOBILE GAMING IoT AI
WPF
Windows Forms
UWP
ASP.NET Xamarin UnityAzure ARM32
ARM64
ML.NET
.NET for
Apache Spark
DESKTOP WEB CLOUD MOBILE GAMING IoT AI
.NET
Download .NET Core 3.0 Today!
visualstudio.com/downloads
dot.net/get-core3
.NET Core 給企業帶來什麼挑戰?
Windows
.NET Core
大量部署困難
移轉困難
如何突破困境?
Jeffrey Palermo
IIS
• 服務類型切割(縱向切割)
• 從(服務/需求/類型)角度來思考、可獨立運作的個體
• 透過 Use Case 找出系統的邊界、挑出適合切割出獨立的
服務區塊
但是... 這跟移轉有什麼關係?
?
?
?
?
平台
平台
IIS
• 服務類型切割(縱向切割)
• 從(服務/需求/類型)角度來思考、可獨立運作的個體
• 透過 Use Case 找出系統的邊界、挑出適合切割出獨立的
服務區塊
• 服務類型切割(縱向切割)
• 從(服務/需求/類型)角度來思考、可獨立運作的個體
• 透過 Use Case 找出系統的邊界、挑出適合切割出獨立的
服務區塊
Middleware
.NET Core
• DI(真正的隔離相依性)
• 高內聚、低耦合
• Infrastructure as Services
ASP.NET Core Middleware
不良的架構
因為升級替換成本非常巨大
甚至限制住公司的發展
更不用說 Migration to .NET Core!
相關 Migration 方法/工具
• .NET 可攜性分析工具 - .NET Portability Analyzer
https://docs.microsoft.com/zh-tw/aspnet/core/migration/proper-to-2x/?view=aspnetcore-3.0
https://marketplace.visualstudio.com/items?itemName=ConnieYau.NETPortabilityAnalyzer
https://github.com/microsoft/dotnet-apiport
ApiPort.exeanalyze -f WebMvc5TestApp1.dll -t ".NET
Framework, Version=4.6.1" -t ".NET Standard, Version=2.0" -r HTML -o AnalysisReport.html
使用 .NET API 分析器
Microsoft.DotNet.Analyzers.Compatibility 目前還在 alpha 階段
使用架構分析器 .NET Framework Analyzer
• 舊版分析規則會慢慢改寫為 Roslyn 程式碼分析器
• VS 功能表上的【分析】 ➔ 【執行程式碼分析】功能表選項仍然屬於舊版分析
.csproj (專案檔)
<RunCodeAnalysis>false</RunCodeAnalysis>
移轉的實例:
使用自行開發 VS Extension & CLI 工具移轉
ASP.NET Web API
特別感謝
Q & A
該準備從 .NET Framework 4.x 遷移至 .NET Core 3.0 了嗎?

More Related Content

What's hot

相容於node.js的 網頁型桌面程式設計 (使用Electron.js 開發)
相容於node.js的 網頁型桌面程式設計  (使用Electron.js 開發)相容於node.js的 網頁型桌面程式設計  (使用Electron.js 開發)
相容於node.js的 網頁型桌面程式設計 (使用Electron.js 開發)
鍾誠 陳鍾誠
 
初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなし初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなし
Oonishi Takaaki
 

What's hot (20)

高橋流微積分
高橋流微積分高橋流微積分
高橋流微積分
 
區塊鏈 (比特幣背後的關鍵技術) -- 十分鐘系列
區塊鏈  (比特幣背後的關鍵技術)   -- 十分鐘系列區塊鏈  (比特幣背後的關鍵技術)   -- 十分鐘系列
區塊鏈 (比特幣背後的關鍵技術) -- 十分鐘系列
 
相容於node.js的 網頁型桌面程式設計 (使用Electron.js 開發)
相容於node.js的 網頁型桌面程式設計  (使用Electron.js 開發)相容於node.js的 網頁型桌面程式設計  (使用Electron.js 開發)
相容於node.js的 網頁型桌面程式設計 (使用Electron.js 開發)
 
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptxネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
 
軟體工程(總結篇)
軟體工程(總結篇)軟體工程(總結篇)
軟體工程(總結篇)
 
用十分鐘《讓你的專案一開始就搞砸》!
用十分鐘《讓你的專案一開始就搞砸》!用十分鐘《讓你的專案一開始就搞砸》!
用十分鐘《讓你的專案一開始就搞砸》!
 
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
 
【初心者向け】API を使ってクラウドの管理を自動化しよう
【初心者向け】API を使ってクラウドの管理を自動化しよう【初心者向け】API を使ってクラウドの管理を自動化しよう
【初心者向け】API を使ってクラウドの管理を自動化しよう
 
ゆるやかにBigQuery(データ基盤)を安定活用するプラクティス集 #bq_sushi
ゆるやかにBigQuery(データ基盤)を安定活用するプラクティス集 #bq_sushi ゆるやかにBigQuery(データ基盤)を安定活用するプラクティス集 #bq_sushi
ゆるやかにBigQuery(データ基盤)を安定活用するプラクティス集 #bq_sushi
 
區塊鏈 (比特幣背後的關鍵技術) -- 十分鐘系列
區塊鏈  (比特幣背後的關鍵技術)   -- 十分鐘系列區塊鏈  (比特幣背後的關鍵技術)   -- 十分鐘系列
區塊鏈 (比特幣背後的關鍵技術) -- 十分鐘系列
 
NRIのプロジェクト管理ソリューションにおけるKibanaを用いたログ活用事例紹介
NRIのプロジェクト管理ソリューションにおけるKibanaを用いたログ活用事例紹介NRIのプロジェクト管理ソリューションにおけるKibanaを用いたログ活用事例紹介
NRIのプロジェクト管理ソリューションにおけるKibanaを用いたログ活用事例紹介
 
用十分鐘將你的網站送上雲端
用十分鐘將你的網站送上雲端用十分鐘將你的網站送上雲端
用十分鐘將你的網站送上雲端
 
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはがんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
 
張量是甚麼?
張量是甚麼?張量是甚麼?
張量是甚麼?
 
Python x ハードウェアの可能性
Python x ハードウェアの可能性Python x ハードウェアの可能性
Python x ハードウェアの可能性
 
用十分鐘瞭解《線性代數、向量微積分》以及電磁學理論
用十分鐘瞭解《線性代數、向量微積分》以及電磁學理論用十分鐘瞭解《線性代數、向量微積分》以及電磁學理論
用十分鐘瞭解《線性代數、向量微積分》以及電磁學理論
 
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方
 
関数型・オブジェクト指向 宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向 宗教戦争に疲れたなたに送るGo言語入門
 
初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなし初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなし
 
用十分鐘快速掌握《數學的整體結構》
用十分鐘快速掌握《數學的整體結構》用十分鐘快速掌握《數學的整體結構》
用十分鐘快速掌握《數學的整體結構》
 

Similar to 該準備從 .NET Framework 4.x 遷移至 .NET Core 3.0 了嗎?

開源碼介紹及Joomla
開源碼介紹及Joomla開源碼介紹及Joomla
開源碼介紹及Joomla
tmjhart
 
【第一季第一期】开发的前端之痛 by 银环
【第一季第一期】开发的前端之痛 by 银环【第一季第一期】开发的前端之痛 by 银环
【第一季第一期】开发的前端之痛 by 银环
tbosstraining
 
【第一期】开发的前端之痛 by 银环
【第一期】开发的前端之痛 by 银环【第一期】开发的前端之痛 by 银环
【第一期】开发的前端之痛 by 银环
tbosstraining
 
HTML5 規格最新發展現況 (HTML5 趨勢發展與技術應用論壇)
HTML5 規格最新發展現況 (HTML5 趨勢發展與技術應用論壇)HTML5 規格最新發展現況 (HTML5 趨勢發展與技術應用論壇)
HTML5 規格最新發展現況 (HTML5 趨勢發展與技術應用論壇)
Will Huang
 
Koubei banquet 27
Koubei banquet 27Koubei banquet 27
Koubei banquet 27
Koubei UED
 

Similar to 該準備從 .NET Framework 4.x 遷移至 .NET Core 3.0 了嗎? (20)

你的軟體架構夠敏捷嗎?
你的軟體架構夠敏捷嗎?你的軟體架構夠敏捷嗎?
你的軟體架構夠敏捷嗎?
 
軟體架構設計的技術養成之路
軟體架構設計的技術養成之路軟體架構設計的技術養成之路
軟體架構設計的技術養成之路
 
專業顧問的技能成長日記
專業顧問的技能成長日記專業顧問的技能成長日記
專業顧問的技能成長日記
 
深入淺出領域驅動設計:以 .NET 5 與線上房貸申請系統為例
深入淺出領域驅動設計:以 .NET 5 與線上房貸申請系統為例深入淺出領域驅動設計:以 .NET 5 與線上房貸申請系統為例
深入淺出領域驅動設計:以 .NET 5 與線上房貸申請系統為例
 
實踐 Clean Architecture(實作高可用性的軟件架構)
實踐 Clean Architecture(實作高可用性的軟件架構)實踐 Clean Architecture(實作高可用性的軟件架構)
實踐 Clean Architecture(實作高可用性的軟件架構)
 
.NET 7 升級教戰手冊_V1.0.pdf
.NET 7 升級教戰手冊_V1.0.pdf.NET 7 升級教戰手冊_V1.0.pdf
.NET 7 升級教戰手冊_V1.0.pdf
 
New FileMaker 13 Platform (Chinese)
New FileMaker 13 Platform (Chinese)New FileMaker 13 Platform (Chinese)
New FileMaker 13 Platform (Chinese)
 
使用 .NET Standard 開發跨平台應用程式
使用 .NET Standard 開發跨平台應用程式使用 .NET Standard 開發跨平台應用程式
使用 .NET Standard 開發跨平台應用程式
 
Frontend Beginner
Frontend BeginnerFrontend Beginner
Frontend Beginner
 
Net 6 的 blazor 開發新視界
Net 6 的 blazor 開發新視界Net 6 的 blazor 開發新視界
Net 6 的 blazor 開發新視界
 
Html5
Html5Html5
Html5
 
開源碼介紹及Joomla
開源碼介紹及Joomla開源碼介紹及Joomla
開源碼介紹及Joomla
 
【第一季第一期】开发的前端之痛 by 银环
【第一季第一期】开发的前端之痛 by 银环【第一季第一期】开发的前端之痛 by 银环
【第一季第一期】开发的前端之痛 by 银环
 
【第一期】开发的前端之痛 by 银环
【第一期】开发的前端之痛 by 银环【第一期】开发的前端之痛 by 银环
【第一期】开发的前端之痛 by 银环
 
oa rapid framework課程說明會
oa rapid framework課程說明會oa rapid framework課程說明會
oa rapid framework課程說明會
 
Html5
Html5Html5
Html5
 
HTML5 規格最新發展現況 (HTML5 趨勢發展與技術應用論壇)
HTML5 規格最新發展現況 (HTML5 趨勢發展與技術應用論壇)HTML5 規格最新發展現況 (HTML5 趨勢發展與技術應用論壇)
HTML5 規格最新發展現況 (HTML5 趨勢發展與技術應用論壇)
 
Google系列工具應用於校園與生活
Google系列工具應用於校園與生活Google系列工具應用於校園與生活
Google系列工具應用於校園與生活
 
Koubei banquet 27
Koubei banquet 27Koubei banquet 27
Koubei banquet 27
 
Exam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development FundamentalsExam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development Fundamentals
 

More from Gelis Wu

架構設計好簡單系列 設計符合團隊的範本精靈 (Project template)
架構設計好簡單系列   設計符合團隊的範本精靈 (Project template)架構設計好簡單系列   設計符合團隊的範本精靈 (Project template)
架構設計好簡單系列 設計符合團隊的範本精靈 (Project template)
Gelis Wu
 

More from Gelis Wu (20)

Blazor in NET 8 的重大改變___________________
Blazor in NET 8 的重大改變___________________Blazor in NET 8 的重大改變___________________
Blazor in NET 8 的重大改變___________________
 
顧問養成秘技 - 顧問服務實戰.pptx
顧問養成秘技 - 顧問服務實戰.pptx顧問養成秘技 - 顧問服務實戰.pptx
顧問養成秘技 - 顧問服務實戰.pptx
 
Blazor Component 開發實戰
Blazor Component 開發實戰Blazor Component 開發實戰
Blazor Component 開發實戰
 
一個 ASP.NET Core 2.1 開發指南
一個 ASP.NET Core 2.1 開發指南一個 ASP.NET Core 2.1 開發指南
一個 ASP.NET Core 2.1 開發指南
 
前端大型系統的基石 TypeScript
前端大型系統的基石 TypeScript前端大型系統的基石 TypeScript
前端大型系統的基石 TypeScript
 
Dot netstandard2.0與.net的未來發展
Dot netstandard2.0與.net的未來發展Dot netstandard2.0與.net的未來發展
Dot netstandard2.0與.net的未來發展
 
客製化的 Web api 的框架設計
客製化的 Web api 的框架設計客製化的 Web api 的框架設計
客製化的 Web api 的框架設計
 
Asp.net identity 2.0
Asp.net identity 2.0Asp.net identity 2.0
Asp.net identity 2.0
 
Asp.net mvc 基礎
Asp.net mvc 基礎Asp.net mvc 基礎
Asp.net mvc 基礎
 
架構設計好簡單系列 設計符合團隊的範本精靈 (Project template)
架構設計好簡單系列   設計符合團隊的範本精靈 (Project template)架構設計好簡單系列   設計符合團隊的範本精靈 (Project template)
架構設計好簡單系列 設計符合團隊的範本精靈 (Project template)
 
Azure PaaS (WebApp & SQL Database) workshop solution
Azure PaaS (WebApp & SQL Database) workshop solutionAzure PaaS (WebApp & SQL Database) workshop solution
Azure PaaS (WebApp & SQL Database) workshop solution
 
團隊開發永遠的痛 談導入團隊開發的共同規範(Final)
團隊開發永遠的痛   談導入團隊開發的共同規範(Final)團隊開發永遠的痛   談導入團隊開發的共同規範(Final)
團隊開發永遠的痛 談導入團隊開發的共同規範(Final)
 
軟體開發之路甘苦談(Gelis)
軟體開發之路甘苦談(Gelis)軟體開發之路甘苦談(Gelis)
軟體開發之路甘苦談(Gelis)
 
活用 Application insight
活用 Application insight活用 Application insight
活用 Application insight
 
企業現代化網站架構
企業現代化網站架構企業現代化網站架構
企業現代化網站架構
 
Css java script 前端網頁設計概論(day2).pics
Css java script 前端網頁設計概論(day2).picsCss java script 前端網頁設計概論(day2).pics
Css java script 前端網頁設計概論(day2).pics
 
Visual studio 2010 塑模化應用程式講座v4
Visual studio 2010 塑模化應用程式講座v4Visual studio 2010 塑模化應用程式講座v4
Visual studio 2010 塑模化應用程式講座v4
 
Css java script 前端網頁設計概論(day1)
Css java script 前端網頁設計概論(day1)Css java script 前端網頁設計概論(day1)
Css java script 前端網頁設計概論(day1)
 
C sharp物件導向 分層架構課程
C sharp物件導向   分層架構課程C sharp物件導向   分層架構課程
C sharp物件導向 分層架構課程
 
.Net framework 技術架構發展與 c# 6.0
.Net framework 技術架構發展與 c# 6.0.Net framework 技術架構發展與 c# 6.0
.Net framework 技術架構發展與 c# 6.0
 

該準備從 .NET Framework 4.x 遷移至 .NET Core 3.0 了嗎?