Access培訓
網站公告
·Access快速平臺QQ群號:84825014    ·Access快速開發平臺下載地址及教程    ·歡迎添加微信交流賬號:AccessoftChu    ·如何快速搜索本站文章|示例|資料    
您的位置: 首頁 > 技術文章 > 同城交流

微軟程序員最好的時代來了

時 間:2016-01-03 09:03:18
作 者:宏鵬(轉載)   ID:21115  城市:上海
摘 要:微軟程序員最好的時代來了
正 文:

每過一段時間就有人跳出來說微軟不行了,.NET不行了,然后就去舔Java, 但是一直讓我覺得比較奇怪的是,幾年以后那些人還在用.NET,而且繼續噴著.NET, 舔著JAVA, 在我看來,這些人和那些天天噴自己的公司,卻依然在那個公司,天天噴中國,卻依然在中國的那些人是一樣的。


 語言只是工具

  因為我不是非常熟習JAVA, 所以我不知道JAVA擅長做什么,但是我覺得.NET能做的事,基本上JAVA應該都能做,就像我認為JAVA能做的事.NET基本也都能做一樣。但是奇怪的是我經?吹降氖.NET人員噴.NET, 很少聽到JAVA人員噴.NET, 不過我估計很多JAVA人員應該也忙著去噴JAVA吧。這個其實和語言沒關系,只是和人的心理有關系,因為人總覺得“碗里的沒鍋里的好”。

  語言之爭已經持續很多年了,其實這個大家都知道沒什么意義,網上不是流傳一個語言的鄙視鏈嗎?我覺得大家把他當個玩笑罷了,千萬別當真,因為不管怎么鄙視,我們畢竟要吃飯的。

  本來我也覺得寫這篇文章沒什么意義,但是看到那些噴.NET文章,基本上句句說的都沒理,但是卻可能對初入行的人帶來很大的誤解,就像騙子很容易騙小孩,因為小孩涉世未深。

  我做開發已經10多年了,學過很多語言,但是真正用來吃飯的最主要的語言其實是Visual Basic和.NET, 當然還有”漢語”. 當初也學過Java, JSP, SSH. 但是最后選擇了.NET,為什么,一是因為.NET技術真的入門很快,當年入門快的好處之一就是你立馬就有一定的生產力,也就是你能很快開始干活,這樣就有公司愿意給你付薪水了,也就意味著你可以更早從父母那里斷奶了,另外一個原因就是當時面試的要.NET比要JAVA的多呀。

  C# 語言

  我學習過C, Java,Visual Basic, Ruby,Node.js等,但是我還是覺得C#是生產力非常高的一門語言,比如一些非常優秀的語言特性,你剛剛才能從其它語言里看到一點點,比如自動屬性,LINQ, Lamda表達式,Action等,另外C#對多線程的封裝讓我們在多線程編程時極其方便,比如TPL. 還有令大家頭疼的異步回調的問題,C#用非常優雅的Async, Await來解決,我們看到ES7里面已經開始實現類似的東西,是不是借鑒了C#呢?

  多語言混用

  對一個稍微復雜一點的程序來說,我們為什么一定要只使用一個語言呢?比如我們前端可以使用ASP.NET MVC, 后端可以使用Java 甚至是別的任何一個語言,服務我們可以使用WCF, 搜索我們可以使用Solar等等,我們甚至是WEB層,業務層都是用.NET, 而數據庫可以使用MySQL或者MongoDB.

  .NET或者JAVA只是系統的一部分

  我們知道一個WEB程序,除了后端以外,很多其它的東西比如HTML, CSS,javascript,數據庫這些不管你做Java還是.NET都是一樣需要的。也就是前端技術都是相同,另外HTTP協議,TCP/IP這些也不分語言吧。不管你是JAVA還是.NET, AngularJS, ReactJS, HTML5, Bootstrap, Bower, Grunt, Gulp這些東西對你都是一樣的吧?

 微軟技術能做什么

  我沒有做過JAVA程序,但是我使用微軟技術10多年了,我就說一說微軟技術能做什么。

  桌面程序

  Visual Basic

  當年我畢業沒多久,就加入一家馬來西亞在中國的軟件公司,這個公司主要是做門票系統,當時我們選擇了Visual Basic, 做過VB的人都知道VB是多么的強大,除了極其方便的可見即所得的Form外,而且有幾乎一切你想要的組件,另外我們都知道Windows是桌面系統中當之無愧的的霸主, 我不知道JAVA在這方面的優勢是什么,如果有些人說要跨平臺,但是我做了這么多年的企業軟件,沒有幾個企業軟件是需要跨平臺的。當時在這個公司里做了售票系統,還有閘機系統,POS系統,我估計很多人不知道閘機系統原來用Visual Basic也可以做。廣州,北京最大的游樂園都是我們當年做的,而當年整個樂園的信息系統都是使用的微軟的技術。

  WPF

  微軟推出的WPF, 我覺得是對桌面開發程序的極大的進步,幾乎所有的桌面程序的展示都可以使用WPF來呈現,而通過WPF可以讓我們非常方便快速的做出非常炫的桌面程序,WPF的XAML方式給了我們非常方便的寫桌面窗體。 同時模板,動畫等在WPF都是極其容易實現,另外MVVM在WPF的應用里非常盛行,WPF可是比Angular早出現了很多年。

  UWP

  不久前,微軟推出了Windows 10, 這使一套系統可以運行在桌面,平板以及手機上,而我們可以使用XAML,甚至是javascript來開發一套程序就可以運行在多個終端,這個對個人用戶可能沒有什么,但是對企業用戶太重要了,具體的細節我覺得大家可以去看一下MSDN或者Channel9

  WEB

  ASP.NET WEB Forms

  我覺得很多人對微軟的誤解可能主要是這一部分,當年的ASP.NET WEB Forms由于是快速拖控件,導致界面生成很多難以認識的代碼,大量的ViewState等,但是這并不能說ASP.NET WEB Forms不好,第一我們可以使用ASP.NET WEB Forms快速完成一些小型的WEB程序,加上有大量的第三方控件,是開發一些常規的程序快如閃電。第二我們可以盡量使用客戶端的控件比如Repeater等,現在仍然有很多網站都是ASP.NET WEB Forms做的,難道這些網站都沒有用戶?!

  ASP.NET WEB MVC

  由于很多人對ASP.NET WEB Forms充滿抱怨,而且WEB開發技術不斷地革新,微軟也順應潮流及時的推出了ASP.NET MVC, 使用MVC可以寫出非常清爽的代碼,我們團隊從ASP.NET MVC1.0 beta就開始使用,由于我也學習過Ruby On Rails,基本上這兩個框架非常相似,極其方便的路由管理,View, Controller, Model的分層,使我們可以很好的使用強類型類開發,我們已經使用ASP.NET MVC成果提交過很多項目,還從來沒有遇到過問題是出自.NET本身的。

  WEB 服務

  WCF

  使用統一的模型,讓我們開發WEB服務極其方便,大部分情況下我們只需要定義一個接口,配置相關的Binding和EndPoint就可以了,可以很方便的使用Http, TCP, Https,可以非常方便的使用各種安全策略,而這些就只需要簡簡單單的幾行配置而已,WCF極大的簡化了WEB服務的開發。

  ASP.NET WEB API

  除了WCF, 微軟又推出了ASP.NET WEB API, 使得我們開發輕量級的WEB 服務極其容易,使用ASP.NET WEB API 我們可以非常容易實現服務的Restful. 而使用OWEN我們可以以任何方式來部署我們的API。

  Azure 微軟云

  微軟的云非常的強大,使用過微軟云的都知道,微軟云幾乎可以滿足我們一切對程序的要求,我們可以使用Azure web apps很方便的創建一個WEB, Webjob, 我們可以使用Azure SQL, 使用Azure storage, 可以極其方便的使用云的Queue, Bus等等,而且云集成了很多優秀的第三方程序,比如我們可以使用Redis作為Cache. 另外微軟的Cloud Services讓我們可以極其方便的管理我們的部署。這讓我們很多程序員從一個程序員可以快速成為可以運維企業整套系統的人,而你只需要學習一些Azure的管理知識,比如自動擴展等等,而這些在云里面都可以快速簡單的配置。我們幾乎一半客戶的系統都運行在Azure里面,而且我們可以一鍵部署,如果有問題,我們甚至可以使用Visual Studio來直接Debug云里面的網站。

  移動開發

  由于Mono,現在可以使用.NET來開發移動的應用程序,使用Xamarin可以使用C#開發出和原生性能一模一樣的iOS和Android程序,我也熟悉Objective-C, 而且用Objective-C開發過程序,雖然說Objective-C 在某些方面很優秀,但是開發效率實在不敢恭維,不然Apple也不會推出Swift來革自己的命,另外當你既需要iOS,又需要Android的時候,你至少需要一個熟悉Objective-C的,又需要一個熟悉Java. 而同樣地東西需要做兩遍。而使用Xamarin做企業級APP,大量的業務邏輯可以共享,更別說可以直接使用效率非常的C#語言了,我們已經成功提交了好幾個基于Xamarin的程序。

  另外,Xamarin推出的Xamarin.Forms可以使用XAML及C#用一套代碼來開發iOS, Android以及Windows Phone的程序,而且性能和原生的一模一樣,我們也順利開發過基于Xamarin.Forms的程序。

  游戲開發

  現在已經有很多程序基于Unity開發,而你可以選擇C#來作為基于Unity的游戲的主要語言?梢运阉饕幌,已經有大量的上架游戲是使用.NET開發的。

  小結

  當然,以上只是我使用的微軟相關技術,目前來說,除了客戶明確選擇其它語言以外,還真的沒有多少是Java能做而.NET做不了的。

  桌面,WEB, 移動開發 都可以使用.NET,簡單點說,就是你都可以使用一門語言,那就是C#來開發

 開發工具

  Visual Studio

  做.NET開發,配套的開發工具是Visual Studio, 我覺得Visual Studio是最好的IDE之一,你幾乎可以使用做任何語言的開發,這個使用過的人都非常清楚,雖然說Vim是編輯器之神,而Emacs是神的編輯器,但是顯示世界能有多少個神?

  Resharper

  Resharper是每個.NET程序員的必備工具之一,基本上可以讓我們的開發效率提高三分之一,設個誰用過誰知道。

 領域驅動設計

  如果我沒有記錯的話,雖然Eric Evans較早寫了領域驅動設計一書,但真正推動領域驅動設計的是有很多做.NET開發的,比如Greg Young, 我們可以看看NServicebus. 可以看看 NServicebus

  我們已經使用領域驅動設計提交了一個非常大型的項目,這個項目是一個世界500強的主要系統。而這個系統就是使用的.NET C#,使用了CQRS, NServicebus, ASP.NET MVC, ASP.NET WEB API,SQL Server等等,系統已經運行了好幾年了,還沒有發現什么問題。

  有興趣的可以關注一下我的領域驅動系列。

 長尾理論

  很多人說大型的一些系統都沒有用.NET, 比如BAT, 比如新浪微博,他們是不是一點都沒有用.NET我不知道。我想說的第一那些系統都比較龐大,使用JAVA或者PHP很多時候是基于歷史的選擇,另外這些系統就那么幾個,而且并不是所有的軟件都是電商,都是微博?

  我在這里想說的長尾,就是第一中小企業幾乎占據所有的企業的80%, 而這些企業需要各種各樣的系統,而這些企業不論是國內還是國外,都是Windows占大部分。雖然我也非常喜歡蘋果的產品,但是企業是需要賺錢的。 也就是說80%的企業都不會像BAT那么大,那么至少這80%的系統使用.NET開發沒有任何問題,再加上.NET有著很高的開發效率,我們有什么理由不選擇呢?

 使用.NET應該是企業或者客戶項目的第一選擇

  如果只做WEB系統,或者只做電商之類,那么使用其它任何語言都沒問題,但是一旦做企業系統,往往.NET是一開始非常安全的選擇,為什么? 因為很多企業使用的系統是Windows, 使用的辦公軟件是Office, 使用的服務器是Windows Server,使用的是AD, 使用的郵件系統是Exchang Server, 我不知道你們使用JAVA和PHP和這些系統集成時是否方便,但是使用.NET是非常方便的。目前來看,.NET幾乎可以滿足企業應用的所有的現有的需求以及潛在的需求。

 關于開源,關于免費

  現在.NET很多東西都開源了,.NET CORE 和 ASP.NET VNext已經可以跑在Mac和Linux上了,我相信會越來越多的.NET程序將來會跑在Linux服務器上,另外大部分程序根本就用不了那么多服務器,如果我們真的需要那么多服務,證明公司已經很有錢了,還買不起幾個Windows?而且如果真的需要那么多服務器,我們可以使用Microsoft Azure, 買幾個Windows總比要請幾個Linux運維工程師要便宜很多吧。

 最后,沒有人限制你只會.NET

  沒有誰能限制.NET程序員學習其他的語言,.NET程序員可以學習Java, Ruby, Node.js, 可以學習Event Driven, Message Queue, Solar, 學習MongoDB, Redis, 學習分布式緩存,學習任何其它語言需要學習的東西。

 關于薪水

  我不相信一個人學兩個月JAVA, 不學習其它東西就可以立馬成為一個優秀的程序員,就可以拿到很高的薪水,因為在我看來,要成為一個優秀的.NET程序員,需要學習大量的知識,我相信JAVA程序員也是一樣。如果說.NET程序員年薪幾百萬我沒見過,但是把.NET學好可以拿到相對不錯的薪水還是沒有問題的。



Access軟件網QQ交流群 (群號:252407829)       access源碼網店

最新評論 查看更多評論(1)

2016/1/3 15:08:22張斌
應該是java的可移植性是它的優點,你想啊,企業要開發一個程序,外面的很多人用,JAVA是首選吧?不然,,你有哪么多IT人員去給他們培訓和解決問題??

發表評論您的評論將提升作者分享的動力!快來評論一下吧!

用戶名:
密 碼:
內 容:
 

常見問答

技術分類

相關資源

關于我們 | 服務條款 | 在線投稿 | 友情鏈接 | 網站統計 | 網站幫助