2011-08-31 74 views
3

我是一個相對較新的C#開發人員,我發現自己大約1/5作爲VS 2010中C#MVC應用程序的生產力,比我之前在Zend使用php 手動使用vim如何提高MVC C#應用程序的生產效率?

我在寫測試/寫代碼/運行測試/集成&調試問題的迭代週期中工作。

這最後一步涉及到使用visual studio構建代碼,debug> attach to process> w3wp.exe,然後訪問http://localhost/App/(IIS 7.5的本地副本)並觸發一些事件/ etc,使VS調試器運行。

發現錯誤/問題後,我停止調試器,修復它,重新編譯並重復。

這是令人難以置信的緩慢。

編譯應用程序可能需要2秒,但第一次在調試器中加載需要大約60-80秒。關閉調試器可以提高分數的速度,但不會顯着。

我的IIS副本沒有什麼特別之處;它只是配置爲從Visual Studio項目本地運行項目目錄。

我的機器不是太棒了,它的3.0Ghz雙核心運行Windows 7的4 GB內存......但這只是一個笑話。我花更多的時間盯着我的屏幕等待IIS到做點什麼比我寫的代碼。

後續頁面加載顯然非常快,你知道即時頁面加載。

我想這個問題是,IIS需要運行應用程序啓動和加載文件,並在我重新編譯時執行它對應用程序池worker的任何操作,這意味着初始啓動速度很慢(IOC,Web配置文件等)。

...但是,我似乎無法在網上找到許多其他人抱怨這個,所以我猜想它必須是應用程序配置方式,IIS配置方式和我的工作流程都搞砸了。

我在做什麼錯?

如果IIS啓動時沒有辦法,我應該怎麼做才能避免這個問題呢?

+0

你能否提供更多關於你的項目的信息,比如對代碼文件編號的粗略估計,它做了什麼等等?如果你有一個Hello World項目,CLR在第一次加載時就不需要花費幾秒鐘的時間來編譯應用程序。由於首頁加載需要一分鐘,我認爲你還有其他事情要做,或者在後臺運行一些非常糟糕的東西。 –

+0

這是一個不起眼的購物車Web應用程序。唯一可能不尋常的是它有大約8個soap服務依賴項(而不是數據庫)。解決方案目前有8個子項目,8k loc。可維護性指數〜85,圈複雜度〜35? – Doug

回答

3

我想大多數人使用內置的Visual Studio開發服務器(類似IIS)。如果您正在運行SP1,則還可以使用對於大型和/或多/跨網站應用程序更健壯的IIS Express。

右鍵單擊您的Web應用程序 - >屬性 - > Web選項卡以選擇一個調試服務器。

+0

這是一個選項,但visual studio明確地阻止您將其公開給網絡;所以如果我這樣做,我就不能使用我的Mac進行跨平臺測試。 – Doug

+0

對於Visual Studio Development Server yes,但不適用於IIS Express。事實上,我目前在Mac上安裝了運行XP的VisualBox 2010 w/IIS Express。 Mac用戶正在編輯XP盒子上的文件,並刷新網頁瀏覽器而沒有問題。 –

+0

不錯。它使用IIS Express將加載時間縮短了大約50%。現在只有30秒左右的第一個頁面視圖。 – Doug

1

我同意你的說法,即它可能不得不對你的本地系統做些什麼。顯然,我不可能告訴你係統是如何配置錯誤的,但我會先詳細檢查一下。

,這可能是有幫助的,即使他們沒有解決問題的根源其他一些提示:

  • 在開發服務器使用的構建爲埃裏克建議。
  • 如果您只更改了模板,則不必從頭開始重新啓動。
  • 如果您有良好的單元測試,則根本不需要啓動Web應用程序。
  • IIS 7.5是否具有應用程序池?如果是,則可以重新啓動應用程序池,這比重新啓動整個IIS快得多。

PS:當打開數據庫連接時,我發現很奇怪的行爲,如果網絡配置不好。即使它在本地計算機上,也可能有奇怪的DNS查找或類似的東西。就像尋找什麼的附加提示一樣。

+0

調試工作我很少在模板中執行它(嘿,這就是我們的設計人員..)它幾乎總是在控制器中......並且我不能單元測試控制器據我所知。我將調查應用程序池,但我確信這已經是IIS 7.5的功能了。 – Doug

+0

你可以單元測試控制器,但它取決於你的控制器是多麼棘手。如果您明智地使用MVC功能,應該很容易。你所描述的聽起來像你的控制器包含很多邏輯。 – Achim