對於ASP.NET與J2EE框架的一點想法

原文轉自:http://www.systhinker.com/html/14/n-20914.html

沒有用ASP.NET來開發Web Application也有一段時間了,雖然她的輪廓在我的記憶中已經開始模糊,但是她的美麗還是深深烙在我的心中,不曾磨掉。
        讓我再一次想念ASP.NET源於在Web Application要實現的一個功能:從數據庫中篩選出一些數據,並顯示出來。聰明的您或許會覺得這個功能很簡單,是的,真的很簡單,不管是ASP.NET還是使用JSP+Servlet來做。但是這個處理邏輯應該放在什麼地方呢?
        在ASP.NET中,要實現這個小小的功能,不管是使用DataGrid也好,DataList也好,或者Repeater也好,都是在Page_Load事件中將DataSource綁定去實現,而在頁面上通過控件將相應的數據顯示出來。我們可以看到邏輯處理是放在一個Page_Load事件中的; 
        而使用J2EE各種各樣的框架,通常都會有一個Servlet作爲request的Dispatcher,當這個Servlet接收到某種pattern的請求後(如WAF中的.do,WebWork中的則是.action),將會通過讀取配置文件得到處理這個request的class,相應的邏輯處理完之後,就會將得到的結果(這個例子中,就會得到一個Collection)放到request當中,最後再由作爲Dispatcher的Servlet將request推到相應的View中。而在View(將會是JSP)中通過標籤庫的Iterator標籤獲得Collection,並顯示之。從以上的分析,我們也可以發現,邏輯處理是放在了處理request的class中。
        綜上所述,ASP.NET作爲一個框架所關注的是頁面本身以及頁面包含的控件,從ASP.NET支持的方法就可以看出來了,如Page_Render,Page_Load, Page_Unload,OnChange,OnClick等等,卻沒有將Request和Response做爲重要的對象來對待,這樣的一個關注點使得ASP.NET的開發變得十分的簡便。但是,這樣的做法也並非十全十美,象Page之間的關係,在整個Application當中,是沒有地方進行描述的;而J2EE框架關注的是Request,Response,Parameter這些隱含的對象,對於頁面控件觸發的事件則沒有做相應的重視,這樣的一個關注點就使得J2EE的框架在處理業務邏輯上面顯得十分的靈活,因爲我們細分了用戶的每一個請求,而每一個請求在配置文件中都有清楚的描述,整體脈絡是很清晰的。但是厚此薄彼的做法也造成了頁面開發的低效並增加了開發的難度。
        再次回到前文提出的那個功能,在ASP.NET當中的具體實現我就不用多說了,很簡單,簡單得讓我眼饞。而在J2EE的框架當中,如果對數據瀏覽的請求是由用戶主動發出的話,實現起來也是非常自然的。但是如果這些數據需要顯示在首頁,我該怎麼辦呢?我想我能做的就是在首頁顯示之前去定義一個.action或者.do,讓用戶一進入網站的時候,並不是直接去訪問首頁,而是訪問在首頁之前的.action或者.do。然後由相應的class處理完數據的查詢之後,再將request分發(Dispatch)到首頁去。這樣是不是很麻煩呢?除此之外的辦法就是在頁面上寫Java代碼,這樣也就破壞View與Control分離的原則了。這個時候,我多麼希望在J2EE的開發當中也能有這樣的頁面事件處理函數啊!或許這只是一個無稽的想法,但是尋找開發中的平衡點,不正是我們要做的嗎?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章