.net最適合做什麼?
只談市場和領域。
說.NET什麼都能基本上確實都能開發,B/S網站和服務、C/S軟體(主要是Windows Forms、WPF、Universal Windows Platform等)、移動應用(Xarmarin等)、遊戲(Unity等)、硬體開發(.NET Micro Framework和Windows IoT等)、Office等微軟系軟體的擴展等
至於市場么,http://ASP.NET和Windows Forms的應用還是最廣的,WPF也有一定份額,隨著Windows10的推廣和微軟的系統統一的策略,Universal Windows Platform應該會逐步流行,基本上windows系統和微軟系軟體的開發基本上.NET都可以隨著微軟擁抱開源和.NET Core的發布,跨平台方面最主要的應用還是http://ASP.NET移動應用算是個方向,得益於Xarmarin的免費策略,.NET開發安卓和iOS應用的路應該能走長遠題主如果是想了解下.NET應用然後確定自己的技術方向的話,如果基礎平台在Windows上的話,那就非.NET莫屬了,用.NET在Windows上能完成絕大部分工作;如果基礎平台在Linux和OS X的話,如果做網站和控制台程序可以研究下.NET Core試試,如果做C/S的軟體可以試試Mono(基於GTK),但是個人建議僅限研究而已,實際商業應用會有很多問題;如果是開發移動應用,極力推薦廣大初學app開發的先看Xarmarin的文檔,難得有比較全面的描述三大平台app開發異同和原理的文檔,但是國內用這的人太少,人員接替和技術交流是很大問題
以前我很菜,我覺得C#只能寫寫桌面程序。就像VB,因為很多人的偏見比如易用性就必須要和拖控制項掛鉤,導致相當多的人覺得C#不行。
後來我工作了,C#能寫很多東西,特別是工作上要用的東西,我覺得它還算是一門優秀的中間層語言。後來去了微軟,才知道原來C#能寫這麼多東西。後來我沉默了。
能寫什麼取決於你每天花了多久思考,花了多久吹牛B!
另外說一句榴槤是用來吃的,你非要拿來戳菊花也沒人攔著不是么?國外市場不清楚,國內市場可以隨便聊聊。 Xamarin這塊剛推出時還是有點的市場,畢竟宣傳原生效率,跨平台,現在幾乎再也沒有聽到說了,累覺不愛。
pc客戶端吧wpf、winfrom的天下。缺點大家都明白,部署麻煩,還有50m的.net 4.0,win7原生3.5
還有一部分是mvc、webfrom什麼官網啊、辦公軟體居多,互聯網基本都是php java nodejs go 什麼的,很少聽說.net做互聯網項目的 另外手遊方面Unity3d是可以說起話的,這個算是C#當中比較好的了。我們公司c#全系列。我們公司通信服務端C#、網站http://Asp.Net Mvc5 WebApi、後台、前端還在用Flex,App當然原生了。Flex我也準備不久之後替換為Html5,不過繪製10000多個標記到地圖上不知道Html5性能可好。http://Asp.net Core 也考慮過,不過很多庫沒有,於是就棄用了。撇開unity3D不說,dotnet和c#已經被證明的,最適合做企業應用。什麼是企業應用?就是傳統行業中的管理信息系統,如制衣行業內部的ERP CRM。微軟試圖開發一些組件進入互聯網像http://asp.net mvc,不過然並卵,全都被證明無法做互聯網項目。所以就市場的選擇,dotnet適合做軟體諮詢這類面向傳統企業的乙方,或者是傳統企業的IT部門,要麼就是用dotnet自己做可以賣的網站(MVC)或者桌面軟體(WPF)。
企業開發的難點在於邏輯及其複雜但又要追求擴展性和可插拔。公司因為普遍對於IT不夠重視,對於開發者license的支出是朝令夕改的,有時會因為價格,隨時更換開發中所使用的第三方組件。所以設計企業級軟體時需要有良好的代碼質量,時刻準備需求的變化。對付這些設計模式上的彎兒,dotnet是很擅長的。dotnet有時候被人唾罵的東西卻比較適合企業開發,比如十年前的ascx控制項開發,其復用性還是不錯的,前提是永遠不用新技術去重構現有產品,而且局限於一個很窄的使用範圍。我有接觸過一個公司的產品,最早的代碼是03年用vb寫的web form,到現在還在用,之所以沒有換就是因為怕改了一個地方會引爆很多其他地方的問題,所以這個產品最後成了一個大鍋飯,從vb到c# web form到mvc到angular全都打包在一起,賣給他們軟體的客戶。這在互聯網公司是不能想像的事情,但就是這樣發生了,它有其自己的生存之道,dotnet程序員需要適應舊代碼。
多說兩句,相比java,dotnet的這個小小的優勢,也有一些微不足道。我認為dotnet之所以不被互聯網公司所待見,第一因為其閉源,第二因為產品方向錯了,比如Ajax Control Toolkit這樣被後人笑話的產品,試圖綁架開發人員不讓他們了解html,像開發桌面軟體那樣開發網站,這是行不通的。所以你可以看到後來微軟推到重來推出了MVC,但最近的趨勢是依附html5和js,mvc只要寫web api就行了,全包變成了半包。
windows上的軟體,當然用dotnet是值得推薦的。不過本人比較看好electron跨平台性,可以作為節約開發成本的新選擇。wpf跟html比寫界面,比起來還是差了一些。
如果從另外一個維度看問題,應該不難發現,dotnet除了不能處理大數據,沒有好的web server之外,其他都還不錯。而這兩個,正是互聯網時代很重要的兩樣東西。
題主的問題是」最適合做什麼」,而不是「能做什麼「,這是個有意思、有挑戰的話題,試著答下:
先說結論:.NET適合非純軟體公司使用,比如製造企業、貿易企業之類,其要自制軟體時,選擇.NET十分合適。
那麼它為何不適合純軟體公司使用呢?這得從頭說起:
C系列、.NET、Pascal、Java,算是四大通用開發語言(這4種本人都做過商用軟體),所謂通用,就是不管是電腦軟體、手機軟體,這4個都可以用來開發,不管是工具軟體、管理軟體,還是遊戲軟體,這4個也都可以開發。因此,標準答案常常是:不同的公司,有不同的選擇,沒有對錯之分,但這個說了跟沒說也沒有什麼二樣!
就語言本身而言,.NET的主設計者也是Delphi(Pascal)的主設計者,被微軟挖角而去,為對抗JAVA而生,因此,.NET在設計上,後進者是綜合了其它3者之長,在語言特性與實現上,可以說排名第一。然後,現實是複雜的,我們得考慮各類情況,如人才市場供應、類庫與文檔支持、雲計算興起等因素,才能判斷其最適合的使用領域。
先說人才市場供應:現各類畢業生,90%都自稱熟練使用JAVA,然而JAVA難學難精(不清楚的可以自行度娘JAVA學習路線圖),只有有天份的才能在激烈的競爭中(更有天分的例外!),能夠繼續從事JAVA編程,而純軟體公司,需要的就是有天份的人才,工資無上限(屬生產部門),而非純軟體公司,只有選純軟體公司剩下的(此處會得罪無數人,招黑),這第二梯次的,會選擇.NET,因為它容易上手,產出也快!非純軟體公司還有一個特點:就是職位有天花板,說明白點就是工資有上限,其編製屬於成本部門,成本部門招收到JAVA人員,若其產出慢則不符合公司目標,若產出快的,就跳到純軟體公司了,留不住人。
再說類庫與文檔支持:歷史上,由於JAVA的先發優勢,JAVA積累了無數的類庫與文檔,在Web容器上,至今仍對.NET遙遙領先,對於有夢想的純軟體公司而言,每天都在思考業務做大了,性能問題如何解決?安全問題如何解決?這類答案,在JAVA世界,已有無數成熟的範本。但非軟體公司的企業主,是看不到這些的,他們要求便宜(.NET平均工資會低一些)、出產品快(.NET容易上手,微軟配套也不錯),講究性價比,選.NET是對的。
最後雲計算的興起:雲計算供應商,由於擁有自己的力量,均是以開源的linux、java、mysql為基礎,他們會修改這些開源的產品,來符合自己的管理要求(各位可上阿里雲看看他們都改造了哪些東西),這一點上,.net完全處於下風。換種說法:想做雲計算,就不要用.net了。
拋磚引玉,期待批評指教!基本啥都能幹
能寫windows服務,uwp應用,桌面應用服務端,http://asp.net,資料庫開發跨平台,.net core,xamarin至於沒人用,那另說基本上都能做,但是市面上最多的應該hai?s
2016年秋天了
.net現在最適合快速迭代做遊戲...無論PC手機Unity Unreal4都有 C#支持.net core/mono 塞進docker做伺服器語言特性好,開發快速,類庫豐富,編譯迅捷,性能剖析工具全面,調試方便,跨平台
外加宇宙第一IDE visual studio只要不是性能極度敏感的3A title .net都是很好的選擇有許多pop shop用c#來做trading platform,不過一般是做statistical arbitrage中相對對速度不敏感的algo。另外很多algo的UI都是用WPF做的,支持硬體加速以及許多成熟的第三方charting library都是優勢。我自己的homebrew交易、回測平台也全部都是c#寫的。作為業餘algo trader,高頻我是連數據源都拿不到的...而且時間有限,開發效率是我的首要考慮因素。
在微軟幹活的時候用的是 C#. 感想是:作為語言本身,非常優秀,想要的特性幾乎都有。坑不是沒有,但是比其他語言少很多。但是!nuget 是我用過的最最垃圾最愚蠢最惡劣的包管理系統。所以我自己是絕對不會用 C# 開發任何東西的。
.net可以用來寫vs,讓我們可以愉快地寫c++(注意,我毫無貶低.net之意)
本人經驗來講,至少在國內,"企業應用"是最多用.net的,特別是中小企業,比如倉儲公司開發一個WMS,物流企業開發一個TMS,這些系統本身邏輯不複雜,業務十分清晰,招個把兩個人就可以開搞,什麼三層架構啦代碼生成器啦用的飛起,絲毫不考慮什麼耦合什麼可維護性等等,稍好一點的會用一些JAVA里學來的什麼倉儲模式啦什麼IOC、AOP等等,許多小公司還沒等系統需要升級的時候就掛了,這種情況多了之後,所以造就了.NET開發入門簡單的局面
手裡拿個鎚子,看什麼都像釘子。。。
除了寫操作系統以外,好想沒什麼不能寫的。具體的你得問問@vczh
推薦閱讀:
※零基礎新手求推薦C#.net的書?
※微軟開源 .NET 和其他相關項目會造成什麼影響?
※如何對 Expression 進行計算?
※如何正確理解.NET 4.5和C# 5.0中的async/await非同步編程模式?
TAG:NET |