05.08 細說微軟2018Build大會中.Net Core更新的是啥

2018 年5月8日凌晨,在微軟一年一度的Build大會上,微軟發佈了 Azure 雲、AI、物聯網等很多方面的東西。由於.Net Core是可以跨windows、Linux等平臺的技術,也是為微服務等架構奠定基礎,因此很多程序員鵬友向我問關於.Net Core變化的詳細解讀,比如“Winform是不是跨平臺了”之類的,因此我只就.Net Core部分的變化做我個人的粗淺的解讀。

1、.Net Core 3.0支持WinForm、WPF等桌面UI庫。

.Net Core 3.0將會在2019年發佈(一下子就給我們指到一年後了呀)。並不是表明可以在Linux等平臺下用.Net進行WinForm、WPF的開發。因為微軟明確說了,這個是“Windows Only”的。

細說微軟2018Build大會中.Net Core更新的是啥

微軟應該也沒有計劃開發跨平臺的UI庫,因為畢竟桌面軟件的時代已經過去了,大部分行業都用不到WinForm、WPF等這些桌面開發技術了。

在特殊領域如果要開發跨平臺的桌面程序,對於UI性能要求高的地方可以用QT這個目前最成熟、最流行的跨平臺UI框架。當然QT是C++寫的,Python下有成熟的PyQT庫,希望能有QT高人來做QT for .net core的binding庫。

如果開發類似QQ桌面版、網易雲音樂桌面版、有道雲筆記桌面版或者一些管理軟件桌面版的話,由於這些軟件對UI性能要求不高,但是對於開發效率、更新升級要求高,那麼可以使用Electron(跨平臺的開發工具Visual Studio Code就是用類似技術開發的,連桌面版QQ等很多地方其實都是用類似技術實現的)等技術,當然這是用JavaScript+HTML去寫的,一部分頁面可以放到服務器端用.net core去寫,這類似於手機中的混合App開發,升級、AB測試、灰度發佈什麼的都方便很多。

細說微軟2018Build大會中.Net Core更新的是啥

2、.Net core在IIS中運行時候支持託管方式運行

之前.Net Core網站在IIS中運行,其實IIS只是充當一個反向代理的作用,沒有用到IIS的託管支持。新版.Net Core中將支持像普通.Net Framwork網站一樣用託管方式運行。

我個人其實感覺這個特性很沒有卵用(僅是個人觀點),用.net core就是為了Linux。IIS只能跑在Windows下,微軟應該也沒有考慮把IIS移植到Linux的打算。作為“服務器就要用Linux”這已經成為一個“政zhi正確”的口號,已經不需要討論這個口號是對還是錯了,大環境如此,改變很難。

細說微軟2018Build大會中.Net Core更新的是啥

3、SignalR for .net core即將發佈

.net core版的SignalR 已經處於RC版狀態,應該很快就要發佈正式版了。

現在的網站或多或少都要用到“服務器推送”技術(站內消息、彈幕等等),而SignalR 是實現這個非常方便的技術。我一直期待.net core版的SignalR很久了,一旦發佈我們也將會在我們自己的如鵬網中第一個使用。

4、Entity Framework Core(簡稱EF Core)支持延遲加載

之前的EFCore只支持通過Include顯示加載導航屬性,不能使用EF中的延遲加載(LazyLoad),新版EFCore將支持延遲加載,這個特性默認關閉,需要手動打開。

我個人也無視這個新的特性,在如鵬網項目以及我講課的時候,我都是強烈不建議使用延遲加載的。因為使用延遲加載一個不小心就會造成性能的問題,要用啥關聯對象應該自己明確的去Include,如果一個程序員都不知道自己要取啥對象,這是很危險的。

Less is more,真希望微軟不要支持延遲加載這個破玩意,否則“EFCore性能差”這樣的屎盆子又會被人扣上頭了!

細說微軟2018Build大會中.Net Core更新的是啥

5、EFCore支持TransactionScope

有了TransactionScope在EFCore中就能更容易的實現嵌套事務了,畢竟複雜的系統中代碼調用層級會很複雜,在對數據完整性要求高的場合,需要一個嵌套事務來確保數據的原子性。

OK,這就是我對微軟2018 Build大會關於.Net Core的新特性的理解,如果有欠缺的地方請各位評論指正。

近期我會推出一個關於.Net互聯網公司架構方面的課程,想了解的鵬友請關注我的頭條號,推出之後會第一時間通知大家。


分享到:


相關文章: