none
Asp.Net for 1.1 版本的編譯問題 RRS feed

  • 問題

  • 大家好:

        小弟看了書有一些 Asp.Net 編譯的觀念不太懂,想請教大家。

    問題一: Aspx 網頁的程式碼會被編譯成中介語言(IL),IL 指的是在 Bin 資料夾中的 DLL嗎?

    問題二: 編譯的方法是透過 csc.exe 還是直接存取網頁就能自動編譯?因在書上有看到底下這一句話

    「當使用 ASP.Net 網頁時,第一次都會比較慢,那是因為網頁必須編譯成 IL,再進行 JIT 編譯」。

    但小弟有試過在 IIS 上放置 Aspx 網頁,再使用 IE 去瀏覽這個網頁。但無法運作,Bin 底下並無產生 DLL

    檔,第一次瀏覽 Aspx 的網頁 跟編譯到底有沒有關係。

    反過來說,如果使用 csc.exe 編譯的話,那麼第一次存取 Asp.Net 網頁,仍然會較慢嗎?

     

     

    2010年7月19日 上午 03:17

解答

  • .Net 1.1需要自行編譯,這個動作是指「將.cs或.vb編譯成dll」。

    動態編譯指的是aspx的部份,CLR會在收到第一次HttpRequest (瀏覽網頁) 的時候將aspx編譯成dll,並放到「Temporary ASP.NET Files」這個資料夾底下。

     

    每一次更換dll之後,首次存取網頁都會比較慢,因為CLR還得把MSIL編譯成機器碼

    • 已標示為解答 JoeSeom 2010年7月19日 上午 03:47
    2010年7月19日 上午 03:22
    版主

所有回覆

  • .Net 1.1需要自行編譯,這個動作是指「將.cs或.vb編譯成dll」。

    動態編譯指的是aspx的部份,CLR會在收到第一次HttpRequest (瀏覽網頁) 的時候將aspx編譯成dll,並放到「Temporary ASP.NET Files」這個資料夾底下。

     

    每一次更換dll之後,首次存取網頁都會比較慢,因為CLR還得把MSIL編譯成機器碼

    • 已標示為解答 JoeSeom 2010年7月19日 上午 03:47
    2010年7月19日 上午 03:22
    版主
  • 阿尼你好:

        照您這麼說的話,小弟依此做以下推測:

    首次存取網頁,需要花上動態編譯成 MSIL 外加編譯成機器碼的時間。

    第二次以後的存取就不須再動態譯成 MSIL,除非伺服器重開機或 aspx 被修改。那機器碼還需要再編譯一次嗎?

    這樣推論對嗎?

    2010年7月19日 上午 03:36
  • 正確。

    機器碼不用重新編譯,除非IIS回收應用程式集區。

    2010年7月19日 上午 03:42
    版主
  • 阿尼你好:

         經過你的解說,我終於比較了解編譯的過程,感謝你。

    Joe

    2010年7月19日 上午 03:50