將 ASP.NET 網站移轉至 IIS 7 時碰到的問題
Michael Tsai
9/28/2009
總算有機會把原本在 IIS 6 上面跑的 Web 專案移轉到 Windows Server 2008 + IIS 7 環境,但部署完成後,瀏覽網站時卻發生錯誤:
Request is not available in this context.
Request is not available in this context.
框架必須提供一個較低的入門門檻,讓初學者可以透過簡單的小實驗來學習這套框架。 (p.21)然而,一套類別庫要做到功能強大、完整,同時又要易學易用,卻不是那麼容易。像 .NET Framework 這類比較大型的類別庫,裡面的類別非常多,為了方便學習、查找,就一定得要有適當、合理的分類和命名,否則可能寫了好多好用的工具,卻藏在類別庫中某個很深層的角落沒人發現。這分類的關鍵,主要就在 namespace 的運用。
In my own programming, I dearly love error messages that say what I did wrong and how to fix it. All too often, all I get is the former, when all I really care about is the latter. (p.23)
框架設計原則
設計框架的第一步,必須先從一組使用情節,以及實作這些情節的範例程式碼開始。
Krzysztof Cwalina:對此原則,我有句話要補充:「想要設計一個好框架,除此之外沒別的辦法。」如果這本書只能介紹一個設計原則,我一定會選這個。
// scenario #1: 計算執行時間 Stopwatch watch = Stopwatch.StartNew(); DoSomething(); Console.WriteLine(watch.Elapsed); // scenario #2: 重複使用 stopwatch Dim watch As Stopwatch = Stopwatch.StartNew() DoSomething(); Console.WriteLine(watch.ElapsedMilliseconds) watch.Reset() watch.Start() DoSomething() Console.WriteLine(watch.Elapsed)
public class StopWatch { public static StopWatch StartNew(); public void Start(); public void Reset(); public TimeSpan Elapsed { get; } public long ElapsedMilliseconds { get; } ... }
Krzysztof Cwalina:設計框架給跟你相似的使用者是很簡單的,而要設計給跟你不同的使用者就非常困難了。許多 APIs 都是由領域專家所設計,但老實講,只有領域專家覺得它們好用。漸進式框架
Brad Adams:我們在設計 APIs 時往往只考慮到自己,而非客戶的需要。