2010-08-01 89 views
5

我們目前的工作門戶網站是來自傳統ASP代碼庫的端口。目前,我們項目中的所有頁面均擴展名爲PortalPage的自定義Page類。它處理登錄/註銷,提供對當前已通過身份驗證的用戶的公共User對象的訪問,並將標準頁面頁眉和頁腳添加到我們的所有頁面。完全在代碼隱藏中設計所有頁面?

每個在我們的網站頁面是100%設計的代碼隱藏。 ASPX頁面根本不使用。每個div,img和文本塊都被分配爲一個對象,並從C#函數中添加,即使它是完全靜態的內容(我們有相當數量的內容)。

示例頁面標題:

HtmlGenericControl wrapperDiv = new HtmlGeneric("div"); 
HtmlAnchor bannerLink = new HtmlAnchor(); 
HtmlImage banner = new HtmlImage(); 

bannerLink.HRef = "index.aspx"; 
banner.Src = "mybanner.png"; 
banner.Alt = "My Site"; 

bannerLink.Controls.Add(banner); 
wrapperDiv.Controls.Add(bannerLink); 
this.Page.Controls.Add(wrapperDiv); 

更糟糕的是,所有的Javascript被添加到頁面的字符串連接的一個巨大的爛攤子:

ClientScript.RegisterClientScriptBlock(this.GetType(), "javascript", @" 
    <script language='javascript'> 
     fullUrl = '" + ConfigurationManager.AppSettings["fullUrl"].ToString() + @"'; 
     function showModule() 
     { 
      $('#" + this.userModule.ClientID + @"').css('display','block'); 
      $('#" + this.groupModule.ClientID + @"').css('display','none'); 
      $('#" + this.listsModule.ClientID + @"').css('display','none'); 
      $('#" + this.labelsModule.ClientID + @"').css('display','none'); 
     } 

目前,我的同事中的一個爭論在代碼隱藏中分配每個對象的速度比使用ASPX w/Codebehind方法快幾百倍,我發現每個其他Web應用程序都使用這種方法。這違背了我的直覺,因爲它實質上是將runat="server"添加到頁面上的每一段HTML。

他還說所有的專業商店都是這樣編寫代碼的,並且從不使用ASPX頁面。他說所有的教科書和示例代碼都使用ASPX頁面,因爲它們讓新手編程人員更容易理解。這是真的嗎,還是我們爲了傳統而以一種非常低效的方式寫作?

爲了讓我們切換到編寫Web窗體的「標準」方式,我需要提供一些信息來表明他錯了。

我的問題是,我從來沒有聽說過任何人在代碼隱藏中編寫的所有內容。我見過的每個示例使用的用戶界面和邏輯,數據庫調用代碼隱藏ASPX頁面等

因此,在總結:
1)ASPX頁面真的遠遠低於100%的代碼隱藏?
2)專業商店是否實際使用100%隱藏代碼?
3)如果ASPX w/codebehind是要走的路,有沒有人有任何可信的鏈接可以幫助支持我?

+0

聽起來像一個人尋找藉口來做事_his_方式。我有**從未**見過任何100%隱藏代碼的地方。 – Oded 2010-08-01 18:52:27

+1

爲了引用Charles Babbage的話,「我不能正確地理解那些可能會引發這種Web開發方法的思想混亂。」 – Carson63000 2010-08-02 01:05:42

+0

用專業術語說 - 你的同事被打砸了。這應該是我聽說過的最低效率,頭髮模糊的編碼方式。你失去了在頁面運行時調整頁面佈局的全部能力(你甚至可能不知道給定了你的方法),而所有這些都是爲了什麼?那麼你可以吹噓寫出最深奧的代碼嗎? – 2011-09-19 16:42:01

回答

12
  1. 它們都被編譯成程序集。 .aspx在應用程序啓動時被加載一次,並被解析一次
  2. 不,不,如果他們有任何意義。
  3. 看看網站上關於ASP.NET的每本書。他們全部使用.aspx

測試此方法的一種方法是運行性能測試,其中兩個.aspx頁面完全相同。除了.aspx(分析和編譯)可能的短暫啓動延遲之外,我懷疑是否會檢測到任何顯着差異。

使用後面的所有代碼是錯過了一個辦法:

  • 與設計師誰懂HTML
  • 如果能夠工作目視檢查標記
  • 如果能夠很容易地改變佈局
  • 獲得有經驗的asp.net開發人員與您一起工作...
  • 擁有一個開發asp.net的理智方式
  • 偉大的工具和現有的整合
13

你的同事完全是,可怕,錯了。

+0

這是一個輕描淡寫。 – 2010-08-01 19:24:19

+0

當然!我只能讚揚一次! – 2010-08-01 20:02:57

+0

甚至沒有一個詞來形容他的牛仔是多麼的錯誤。 – Sekhat 2010-08-01 22:12:28

6

我甚至不知道從哪裏開始。

我不能說性能方面的問題 - 但我已經研究了幾十個WebForms應用程序,並沒有一個人遇到性能瓶頸與使用aspx頁面有關的問題。

這聽起來像一個完整的噩夢。

  1. 演示文稿的東西在aspx中。

  2. 事件處理程序進入代碼隱藏

  3. 業務邏輯是在一個單獨的 類完全。

  4. Javascript是你的 的朋友,而單獨的js文件是 那裏爲你保持你的 理智。
0

如果您在小型案例級別上運行,不會有太多顯着差異。因此,使用小頁面進行測試是很難做到的。您會發現性能與更復雜的用例(例如您的門戶)存在差異。

雖然我明白你正在使用WebForms,請看看ASP.NET MVC或任何MVC框架的指導。這是作爲一個視圖生成

  1. 任何進入ASPX頁面
  2. 凡是決定什麼被放入視圖(控制器)放在後面的代碼用來代表什麼
  3. 什麼將進入其視野的是在其課堂上。
  4. 任何意味着您的網站的一般介紹應該在母版頁。

當你在背後的代碼中完成所有工作(包括JavaScript)時,你不僅僅會損失RAM/CPU的性能問題。你會失去個人時間,因爲每次你想更新你的網站的用戶界面或客戶端腳本時,你都必須進行編譯。然後你也必須弄亂你的服務器上的DLL,而不僅僅是ASPX頁面。

時間就是金錢,朋友。

相關問題