從web開發看.NET和Java。

以下都是個人觀點,僅供參考,歡迎提出不同意見!

首先宣告本文只從一個角度來說一下.NET和Java,而且只說一個點,可以肯定的是,本文的觀點肯定是片面的,但是我覺得可以說明一些問題,或者作為一些參考。

我個人不排斥任何技術,也認為任何技術都可以實現同一個業務目的。

個人涉獵過.NET, Java, Python, Rails,有的時間長些,有的時間短些。

技術是為業務服務的,或者是為某種商業或者非商業的目的來服務的,為了實現目的,為了提升效率,為了節省時間,應該說使用任何程式語言、任何程式設計平臺,在大部分的場合都可以實現同一個目標。

語言和平臺沒有高低優劣,只有場景適用。

首先語言是某個人,或者是某個團體,或者是某個公司,或者是某個行業領導團體,為了實現某種目的,加快某種業務,發明設計的,所以在設計的時候不免會打上發明者的烙印,發明者會希望,甚至會引導使用者以發明者希望的方式去使用這種語言。這就會影響不同語言的風格,使用風格,學習風格,還會產生一些所謂的語言之爭。

其實每種語言都會全面開發方式:包括高層的,也就是封裝好的,你只需要關注業務邏輯程式碼,寫業務邏輯程式碼就可以了;也包括底層的,也就是原始的開發方式,需要你在寫業務邏輯程式碼的同時指定一些技術的引數,一些底層的引數需要你設定。

有的語言會引導你從高層先進入,然後在你需要的時候你再去選擇使用底層的方式。有的語言會直接引導你進入底層,然後提供你高層的方式。

就拿.NET和Java的web開發舉個例子。

.NET中可以使用ASP.NET做web開發,他有一種方式叫做WebForm,就是你可以直接拖控制元件到web頁面,然後雙擊控制元件,在背後寫程式碼,比如註冊按鈕的背後寫一些註冊的業務邏輯。就好像你在開發WinForm桌面應用一樣,寫過VB的人都會明白。在這種開發方式中你可以不管http方面的知識,不對http進行任何操作,也可以做出web應用。甚至你在看微軟的一些WebForm視訊教程中,他也沒有主動向你介紹http的知識。所以可能給一些的人造成一種:我開發web不用管http的印象。直到很久,甚至幾年之後才理解到還需要http的知識才能更好的開發web應用。當然,你用WebForm也可以設定http的一些引數,只是通常大家沒有這麼使用。

但是ASP.NET也有底層的方式。它提供了一個IHttpHandler介面,你可以實現這個介面,來處理一次http請求,甚至沒有區分請求是GET還是POST,反正就是一次請求,具體控制和http引數設定,完全交給你來實現。它還有一個IHttpModule介面,實現這個介面,你可以對請求的過程進行控制和定製。比如說對請求的內容做一些額外的處理,許可權控制,請求過濾之類的事情。

 

  1. /// <summary> 
  2.    /// Summary description for AddContact 
  3.    /// </summary> 
  4.    public class AddContact : IHttpHandler 
  5.    { 
  6.  
  7.        public void Proce***equest(HttpContext context) 
  8.        { 
  9.            context.Response.ContentType = "text/plain"
  10.            context.Response.Write("Hello World"); 
  11.        } 
  12.  
  13.        public bool IsReusable 
  14.        { 
  15.            get 
  16.            { 
  17.                return false
  18.            } 
  19.        } 
  20.    } 

Java是提供你一個基類HttpServlet ,繼承這個基類,有兩個方法doGet和doPost,可以接受get和post請求。如果你從java入門開發web應用,你就需要知道http的get和post,以及http的一些細節,因為在開發的時候就需要你理解和正確設定,才能有結果。

java也會有一些web開發框架,為了方便你的開發,也會向你隱藏一些實現的細節,讓你專注於業務開發。

ASP.NET還有一個MVC框架,也是通過擴充套件ASP.NET的IHttpHandler和IHttpModule來實現的。

說到這裡,相信有一部分讀者已經理解和明白我想說明的問題了。