怎麼看待.net core 2.0發布?

.net standard2.0同時發布,跨平台會拯救.net么?


.NET Core 2.0發布之後,實際上是實現了.NET Standard 2.0 約等於 .NET Framework 4.6.1

可以說,想用的API都有了。以後就可以放心的使用 ASP.NET Core on Linux,這可比跑在Mono上放心多了。

從後端開發的視角上看

優勢:

1、可以部署在Linux上,節省伺服器成本。

2、可以使用C#這麼優秀的編程語言

3、可以使用優秀IDE:Visual Studio

4、.NET平台的性能不用擔心

5、比Java平台稍好一些的開發效率

劣勢:

1、缺少優秀的輪子,.NET也需要Spring這樣優秀的大家族

2、一二線互聯網公司大多都是Java、其次PHP、而.NET正在消退(京東、攜程等等)

優勢很明顯,劣勢很棘手,不過對於中小型互聯網公司 .NET Core值得選擇。

今年年初,博客園的博問系統就已經遷移到了 ASP.NET Core :.NET跨平台之旅:博問站點遷移至ASP.NET Core on Linux並發布上線


請各位大佬記住微軟CEO薩蒂亞·納德拉這兩年一直在說的一個概念:邊緣計算

講一個故事,我司有一個項目,用一個叫RFID的技術進行協作管理的後台系統,原來的項目均為.Net編寫,最近一段時間JAVA組開始重寫項目,就像現在很多大廠正在做的一樣,但寫到一個地方後項目改造停止了:他們卡在了上位機與硬體設備的通信問題上,硬體官方給出的介面都是基於c++編寫的。起初JAVA方打算使用JNI來連接硬體設備,但有些C++變數Java根本無法轉換過來,比如下面這個。

最終結果項目沒有完全被JAVA重寫,用於鏈接硬體設備的C#API以及後台服務項目,現在依舊靜靜地躺在代碼庫里。

JAVA的確在國內互聯網公司佔據了大部分,但有些事情,換成JAVA就會非常麻煩。

PS:

現在正在把硬體http://API.NET Standard 2.0上遷移,看看能不能在Ubuntu上跑通,如果能跑,這就很有意思了。


我覺得直接懟 Java 的強項是最傻的,對面有 zookeeper、spring 家族、各種MQ、ElasticSearch,搞 Java 業務開發的人員也多,各種大型企業用著好好的,沒有特別的理由是不會去換的。

我有兩個建議。

第一個做法是微軟找到一個點打透,再謀求全面的發展。

比如 swift 靠 iOS 開發吃飯,golang 在網路編程上面有不錯的表現,JS 虎踞瀏覽器、前端工具鏈, erlang 有一個服務端框架廣泛流傳於各頁游、手游公司。

不要和別人在紅海裡面鬥法,要找到自己的藍海。

C# 靠著 Unity 佔據了遊戲的一塊地盤,是個不錯的局面。

另一條路子是和平演變。

假如 .net 陣營不斷為開源社區產出優秀的項目,企業在開發的過程中遇到什麼難點, .net 來提供基礎服務,並且給 Java 提供最好的支持。

這樣的話,假如某一天,企業發現他們系統里大部分底層服務都是 .net 提供的,包括什麼分散式框架、消息隊列、資料庫、深度學習等等, 而 Java 只是在此之上的薄薄的一層業務,可能就會考慮換陣營了。


微軟的東西還是老規矩,到了第三個主要版本(1.0、1.1、2.0)就成熟到可以甩開膀子隨便用了。像項目文件從project.json到.xproj這種東西也不會瞎改來改去了。上次 .net Framework不也是到了2.0才變成一個完整好用的框架么?

當然上面的話也是成見。其實 .net core 1.1已經足夠好用,我拿它寫了一些微服務API,從開發到部署真是一體化的方便舒心。.net系的宗旨其實就是幹活用的,不是給你瞎玩的。好多語言的社區實在活躍過頭了,一天到晚就往外蹦beta版的框架和輪子。研究新技術新思想固然是好,但追新花的時間比真正自己寫東西還長,是不是本末倒置了?

其實core的最大價值還是削掉了Windows Only這個萬年被人詬病的屬性。隨便什麼機器都能開發、什麼伺服器都能跑的話,幹嘛要拒絕一個特性極佳的語言?


更新2017-08-16。關於評論中說生態差、沒人用 這兩個問題,很典型,我的個人的觀點是:

  • 說生態差,這算是對 .net 的成見
  1. 我們應該將 以.net core為代表的 .net 生態 與以前的 NET Framework 做一定的分割;
  2. 一個優秀的開源比較徹底的產品,生態一定不會差;
  3. 微軟已意識到生態重要,並成立了.NET Foundation 項目,專門協調扶持開源生態。
  • 現在說 "沒人用",就相當於對一個孩子說你沒有未來
  1. 有個孩子天資聰穎,還積極努力,如果僅為他哥現在勢微,就否定她是沒有邏輯的;
  2. 國內目前用採用 .net core的不多,但全球範圍內處於良好的增漲態勢。(google trends, 需翻牆)。

畢竟開源時間不長,而 .net 底層重構工作量大到難以想像,

假以時間,她一定能讓更多人誇讚。

我們用了近一年的情況來看,體驗上非常愉快。

————————————

以下為原答案 2017-08-15:

一、戰略方面: .NET 戰略全景更加明晰

  • 打造 .NET 生態,通過Azure雲計算提供服務。
  • 從賣軟體走向賣服務,以期最終實現成功轉型。

二、生態方面: 覆蓋三大操作系統、貫穿應用開發全流程

  • 在「任意」操作系統(.net core for win, mac, linux)
  • 使用宇宙級的編輯器|IDE(Visual Studio for mac, VS code )
  • 使用優秀的編程言語 (C# , Typescript 等)
  • 使用通用的標準庫 (符合NetStandard)
  • 只寫一套代碼(調用同樣的API介面)
  • 就可以開發出跨平台的應用|軟體
  • 也能很方便地部署網路應用到雲端(一鍵發布)

以前,我也不相信這麼美好的事情會發生;但現在,我覺得時代已經變了 !

微軟可能是,地球上,太陽系,銀河系中,唯一一個這麼NB的公司了。

而 框架 這種小事 交給 Google 去做好了———你看Angular就做的挺好;UI 這種小小事 就交阿里 去做好了 —— 你看 ant design 也還像回事。 (... 被打死前,我先逃 )

-—————————————— 吹牛看上面,學習看下面 -——————————————

上午把本次發布的主要的更新都看了並做了匯總,移步:《 匯總:.NET Core 2.0 及 asp.net core 2.0 正式發布》

對了,記得看下文章末尾的那點東西。


正好手頭的獨立遊戲在考慮線上模式,線上伺服器開發在.net和java上掙扎了很久,主要是線上伺服器的os選擇問題,.net core 2.0看起來已經穩定了,這方面也就不用糾結了,自然是.net大法好。


說來,搞互聯網的人總是重複發明(≠造)輪子,是個好事也是個壞事。壞事當然是無限降低生產力,好事則是永遠有工資拿,永遠沒有老舊的代碼要維護,覺得不爽了馬上不向下兼容。最重要的是他們造輪子都很爛就代表我永遠都有機會進場,不用著急(逃。真是難以取捨。


目測手游伺服器會比較適用,也將是第一個突破口——因為哪怕你是骨灰級的JAVA廚(這種人真的存在么……)也沒法用JAVA做Unity手游,所以這個時候大部分公司必然會傾向於客戶端服務端直接用C#全套下來完事,除了安卓端少量本地功能之外基本上用不到JAVA了。


以後會抽時間了解和評估一下2.0。但目前我用.NET core 1.1挺好的,沒有升級的慾望,不想折騰。

.NET本身的市場己經相當穩定,雖然不能攻城掠地,但現有地盤應該還是穩固的,不需要「拯救」。

.NET core 跨平台對.NET 生態建設來說有好處,但憑它要在其他技術(主要是Java)佔優的地方搶地盤,很難。

一項技術能否佔據主流,影響因素很多,其是否先進好用並非唯一因素。

其實就拿公認為比C#強勢的Java來說,它的JavaFX同樣硬是沒推廣開來,到目前為止,我還真不知道有哪幾家公司是使用它來開發桌面應用的,事實上JavaFX本身也是設計得可以的,挺方便好用,並不差……


遊戲前後端都統一c#開發。

不用忍受寫java時隔靴搔癢的感覺。

真是做夢都會笑醒。


說點我的看法以及現在的軟體行業形勢。

當前軟體行業各執牛耳者:

* C/C++

大規模系統開發,底層開發,基礎組件。

萬家之祖,同樣在追趕時代,但終究會變成沒有一個人能精通的語言。

* Java

商業軟體及工業級語言,穩定,生態無雙,JVM家族更有無數小弟。

歷史包袱沉重,所有者Oracle不佳的風評,極可能會將Java帶入深淵。

* JavaScript

前端獨霸天下者,更有 Node.js 兼并後端。

一次編寫,到處調試。

* Go

雲計算屆當紅炸子雞,遊戲界新秀,並行非同步與網路應用有極大加分。

抽象能力較弱。

M$現在積極活躍於開源社區,並開始打造了宇宙第一可視化編輯器 Visual Studio Code;開源社區現在已經沒有鮑爾默時期的敵視態度了(此處應對納拉德雙擊666)。

更有正規軍包管理器NuGet管理三方依賴,這一點相比 Java 好很多。

容器技術方面,微軟也將 .Net Core 作為官方發布的一部分。

至此多方推動,可見這一次微軟是要徹底擁抱跨平台,他未來的角色不會如同鮑爾默銷售員給出的定位,來跟我唱:賣Windows啦,又快又好的Windows,今天買Windows還送Office喲。

納拉德給的定位才是趨勢,未來勢必成為服務提供商,提供雲計算服務,提供Saas服務,如Office365、Skype Business;這樣才能不被時代淘汰。

那麼這一切和 .Net Core 有什麼關係呢,鮑爾默雖然有很多糟糕決策,但他有句話是無比正確的:「Developer!Developer!Developer!」

翻譯過來的意思就是:碼農…不對、程序員就是第一生產力!

只有拉攏了更多的程序員,才會有更多的應用,更多的生態,更多的潛在客戶和利益!

所以必須要有自己的平台,否則命脈會被掐在別人手上,就像Google不想讓Android被Oracle綁死在Java,招募Swift創始人,意欲在讓Android的生態切換到Swift上一樣。

.Net Core 就是微軟的重要籌碼。

C#作為有著良好抽象能力,方便懶人程序員的語法糖,以及超強OOP的特性的語言,其實是非常討程序員喜歡的。

但 .Net Core 生態依舊非常弱雞,需要時間和社區信任以慢慢發展。

我們可以把 .Net Core 的發布看作一個里程碑,開始見證他在非Windows世界崛起的第一步!

下一個十年,必將屬於 C#、Go,JavaScript。


方法多了固然好,第三方庫的質量和數量也很重要,現在用 http://ASP.NET Core 和第三方庫,很多都要自己寫,一些情況下需要看源碼才能搞懂怎麼用的,第三方庫文檔質量堪憂或是常年不更新


多了 .NET Core 2.0 + .NET Standard 2.0 + .NET Standard 2.0 NOJIT 三個版本的項目需要維護。相對於 MONO 而言基本就是整體性能提高了一點,需要跨平台的時候只需要組織兩種類型的類庫項目了(其實以前也沒有幾種)。


請恕我直言,.net確實有可能會翻身,但不會是因為.net core,也更不會是什麼網站開發!


了解C++/WinRT的時候看到的,反正對我的影響還是挺大的,直接導致我在Mac上裝了.net core和VS之後開始學習C#。雖然我也不知道我為什麼要學C#,可能只是因為語言看起來挺優美,.net庫比較大吧。


沒 native 還是 too naive !

總之除了web 我是沒覺得有太好的使用場景。


是好事。但不會對市場份額有大的影響。除了創業公司,想不出有哪個互聯網公司會使用.net core。


雖然微軟總是起個大早趕個晚集,一旦押對一次寶,就可以獨領風騷下一個互聯網的十年。


.NET 一直都比 Java 發展的前言,領跑者。

為什麼國內 Java 更火,就一點,微軟的東西貴,Java 的免費。

IDE 收錢、伺服器收錢、資料庫收錢,創業企業都會選擇免費的 Java。


好像。。也沒什麼改變吧……


推薦閱讀:

為什麼大名鼎鼎的Spring在.NET平台上無以為繼?

TAG:微軟Microsoft | NET | C# | NETCore |