2008-09-25 46 views
2

在aspx/ascx代碼隱藏中定義類而不是事先將它們編譯到dll中會導致性能損失?我知道這不是最佳實踐,並且存在許多問題(例如難以進行單元測試,代碼不可重用等),但是當您處理需要的類時,它確實非常方便因爲這些修改不需要任何類型的應用程序重新啓動(例如App_Code更改,更新bin文件夾中的dll),因此需要每天多次修改。在aspx和ascx代碼隱藏中放置類時的性能損失

回答

8

「無」。代碼隱藏類被動態地編譯成一個DLL,然後該DLL被保留。所以基本上你第一次加載頁面會有一個短暫的延遲,但是之後的速度應該和預編譯類一樣。

+0

再次閱讀我的文章,我說在第一次加載頁面時會有性能損失。之後它被編譯,但你沒事。 – CodeRedick 2008-09-26 14:59:56

0

我不相信在初始動態編譯後(這會發生在代碼隱藏被修改的頁面的第一次命中)之後,性能會受到影響。你怎麼最終不得不每天換幾次課?這會吸!

編輯: 我應該補充說,這不應該像你說的那樣影響單元測試或代碼可重用性。沒有什麼能夠阻止您爲了可維護性的目的而部署非預編譯的網站,同時仍然能夠在簽入/構建期間運行單元測試,爲其他項目部署編譯的程序集(如果需要的話)等。

但是,如果您沒有使用源代碼管理並且沒有自動構建,那麼存在一個全新的問題。我們的團隊成員曾經直接在生產服務器上編輯CODE文件。 發抖

+0

經常會在我們的生產網站上發生,有些客戶會提出一些奇怪的要求,直到今天結束時纔會「有」。 – CodeRedick 2008-09-25 00:44:55

1

初始編譯後,您應該看不到性能問題。這聽起來好像你的商業邏輯經常變化,而不一定是網頁。

1

是否使用動態編譯或編譯的DLL的選擇的確與發佈過程的組織有關。如果您的應用程序被緊密編譯到DLL中,那麼您可能已經測試過構建錯誤,並希望在發佈時可以更加堅固。通過動態編譯,您可以即時替換.cs文件(例如,拖動& drop,ftp)。這意味着你可能更敏捷,但你可能沒有額外的保證步驟來幫助你知道你保持了構建的完整性。

1

附帶損害 - 會話復位

從個人的經驗,用戶更容易抱怨引起的應用程序域回收比約輕微的性能命中會話重置。因此,如果您可以將您的更改從代碼轉換爲數據並完全避免代碼更新,那麼務必執行此操作。這會改善你的用戶的表現:)

相關問題