从业十余年谈谈对dotnet看法与坚持
前言
園子經常在討論關于.Net發展的問題,我也這些年在工作乃至創業過程中使用.Net碰到的一些問題和看法。
個人擅長的技術面,C/C++/MFC/STL、ASM、JAVA、VB、Javascript/Typescript、C#/WebForm/MVC、Android/MonoDroid,Linux/Windows,還有沒有可以吹的,還有從286一直到i7,從ms-dos到win 10,可以算是一條道跟從微軟走到黑。
使用.Net的職業發展問題
每次提出這個問題,大家都會說.Net在國內也有高薪工作。事實上,我個人的感覺這些年明顯感覺.Net的工作機會少;以及以前同事,朋友的發展情況來看,也是如此。當然你非要說我沒有他們勤奮努力,我也沒有辦法。在國內Java或者PHP等等,相同的努力,背景,智力條件,獲得更高收入的機會更多。所以,有一個概率,使用JAVA技術獲得發展機會跟多一些,就如同在清華北大,你更容易找到技術牛人,而到三本院校比率就會變小一樣。不要說也有成功的,我同學同樣學歷不高,現在是百度的研究員;也有在阿里巴巴任職項目經理的。
其實我不想這樣來說,目前我個人推薦新同學以Java為主,如果又需要再來搞.Net。同樣搞.Net的同學也可以看看Java。基礎掌握的好,語言不過是工具。
碰到的問題
談這些問題的時候,我強調一下我們從事產品的開發,可能與完全的互聯網產品視角稍微不同。產品是給經銷商、客戶、實施人員來安裝。所以最好,簡易的安裝,一鍵完成配置,需要技術支援的程度越少越好。
1、以易用性為傲的軟件系統越來不易用
VS、SQLServer的安裝依賴,對系統的依賴。經常是系統缺少了這個安裝,缺少那個安裝包。特別是SQL Server的安裝,經常出現問題。我們公司的實施人員,應該對計算機是非常熟悉的,他們經常連SQL Server的安裝搞不好。
我已經徹底切換到使用mysql、sqlite的方案,mysql 的安裝比 sql server 好很多,而且free。
2、產品延續性與穩定性的問題
七八年前開發一個產品的時候,有一個類似于圖形設計的東西。我們采用了Silverlight,當時Silverlight升級也比較快。我們覺得這樣開發起來比Flash要快,當時瀏覽器H5技術還不如現在成熟,所以也沒有考慮。Silverlight技術細節的東西不說了。測試環境都OK,最后發現在客戶那里出現了很多種狀況。比如頁面崩潰,微軟推送了新的更新無法運行…我們人少,實在沒有太多的精力去分析,我選擇你就是求個穩定。
微軟大概自己廢棄的技術還有很多。
3、產品安裝與IIS
B/S系統,你沒法繞開IIS,如果是一個產品直接給到客戶安裝,客戶經常是搞不定的。甚至于有些客戶直接拿XP。有些人要說客戶傻逼,客戶就是爺,何況競爭對手用java寫的產品可以,解壓,然后批處理運行()。客戶說你產品沒有運行起來,可以走了…..那一刻,真心蛋疼啊。
據說下一代的.net會有很好的解決辦法,可以脫離IIS。為了解決這個問題,我把IIS Express 封裝了一下,做了一個綠色版。
4、生態系統
Java在各方面的開源系統,組件,框架可選擇的余地比較多,重要的是成功的方案也比較多。有很多組件,庫都是從Java改寫過來。
5、成本
我們公司基本都是購買的正版軟件,從操作系統到開發工具。這個相對于選擇其他的軟件來說,這個也是一筆不小的費用。其實VS并不是最貴的軟件,貴的是那些電路的設計工具,三維CAD之類。
如果將軟件遷移到云端,Windows的虛擬機要貴一些。
6、人力資源
招聘.Net的人員比較困難,找到好的開發人員更加困難。我招聘的時候,感覺找到好的.Net開發很難。其實啊,找Java的也不容易。
堅守與實踐
曾經有一段時間,我也特別困惑,打算轉換到其他的平臺與語言,后來覺得目前至于我來說,依然是一個比較好的選擇。
1、使用Java并不能給帶來跟多的效益
如果不是從個人薪酬來說,使用Java的產品,與使用 .Net ,并不能讓客戶多掏錢。微軟體系的工具開發效率還是要一些,我們團隊在.Net上的投資更多。
2、跨平臺,覆蓋面廣
.Net相對Java,有些特性類似于C++,比如條件編譯。現在很多庫,編譯支持多個平臺的版本,比如支持mono,MonoDroid,甚至于Portable直接多平臺公用。
.Net可以開發Linux,Windows、Mac上運行的程序,包括UI。支持樹莓派等一些IoT設備的開發。
下一步我們會逐步把Web的部分遷移到linux,有些使用C++開發的第三方庫依賴是一個難點。
3、.Net訪問原生庫更方便
如果使用.Net調用系統的DLL、so,通過PInvoke更加的方便。
3、移動平臺
xamarin是一個非常不錯的解決方案,我們將PC端開發的很多軟件功能移植到了Android,同時我們繼續維護Windows的版本。它能夠讓你實現算法,數據結構,通訊協議等很多功能的共享,降低很多的成本。能夠很好的保護現有的投資。
使用xamarin不代表著你對移動平臺的了解的技術要少,我認為要求更高。
4、搭配選擇微軟將以外的技術
比如數據庫,我們現在基本選擇mysql,功能足夠,費用低。比如有些功能服務,考慮使用nodejs等等。
總結
所以如何選擇,完全是看客官自己。但是我相信.Net最近在跨平臺,移動端的發力,以后會更加的有優勢,這一切來的太晚。來的太晚,總是好過沒有吧。
原文地址:http://www.cnblogs.com/kodong/p/5344721.html
.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注
總結
以上是生活随笔為你收集整理的从业十余年谈谈对dotnet看法与坚持的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3分钟看完 Day2 Keynote
- 下一篇: Microsoft将Linux带至桌面操