本文章是由機器翻譯。

工具箱

C# JavaScript、Eric Lippert 的博客及更多其他資訊

Scott Mitchell

所有價格均于 2008 年 11 月 10 日經過確認,但可能會有所變動。本專欄中所表述的觀點僅為作者個人之見,並不一定反映 Microsoft 的觀點。

目錄

使用 C# 和 Visual Studio 為 AJAX 應用程式創建 JavaScript
重要博客
對注釋、字串、標記和資源檔進行拼寫檢查
書架

使用 C# 和 Visual Studio 為 AJAX 應用程式創建 JavaScript

過去,JavaScript 被視為一種玩具語言,對於簡單的輸入驗證和文檔物件模型 (DOM) 操作比較有用。但實際上,JavaScript 是一種強大的、功能豐富的語言,完全可以為如今啟用了 AJAX 的網站提供支援。

雖然在過去幾年中,JavaScript 在現代 Web 應用程式中的流行趨勢及扮演的角色方面有了顯著的改善,但與編寫 C# 代碼相比,編寫 JavaScript 代碼在設計時的體驗方面仍然存在著相當大的差異。

雖然 Visual Studio 為 JavaScript 提供了 IntelliSense 和調試支援,但許多 JavaScript 錯誤和警告都無法在運行之前檢測到。另一方面,C# 提供了編譯時類型檢查;更穩定的物件導向的語義;以及用於重構、創建技術文檔和類流覽的工具。此外,與 JavaScript 相比,大多數 ASP.NET 開發人員更熟悉 C#。

如果能編寫 C# 代碼來代替 JavaScript 是不是很不錯?Script#(版本 0.5.1)讓這種想法變成了現實,它是由 Microsoft 軟體架構師 Nikhil Kothari 創建的一種免費的編譯器、運行時和框架。Script# 編譯器先處理 C# 代碼,然後將其轉換為等效的 JavaScript 代碼。

使用 Script# 可以創建簡短的一次性 JavaScript 函數或事件處理常式,也可以創建較大的 JavaScript 庫。您還可以使用它來創建 ASP.NET AJAX 元件和行為或 Windows Vista 邊欄小工具。Script# 編譯器可以使用 .resx 檔來生成當地語系化的指令檔,並可以在經過配置後生成發行腳本或調試腳本(為增強可讀性,調試腳本包括空格和描述性變數名稱,而發行腳本出於代碼緊湊性方面的考慮,刪除了不必要的空格並對變數進行了重命名)。簡而言之,Script# 不但使您可以獲得使用 C# 代碼的所有優點(編譯時錯誤檢測、熟悉的 C# OOP 語法和語義,以及更好的工具支援),同時又可以生成您的 Web 應用程式或邊欄小工具所需的 JavaScript 代碼。

除了編譯器之外,Script# 還包括運行時和框架。運行時和框架均包括一個可在編寫 C# 代碼時對其進行程式設計的伺服器端實現,以及一個被 Script# 編譯器生成的 JavaScript 代碼所使用的用戶端實現。

運行時定義類型系統,它是必選項。框架是可選項,它可以提供用於執行常規任務(如 HTTP 請求、JSON 序列化、流覽器檢測等)的 API。框架還包括使用者介面控制項和 API,它們可與流覽器中的 Silverlight 控制項搭配使用,以訪問 Internet Explorer 7 中的 RSS 存儲內容以及從流覽器內部訪問 Microsoft Virtual Earth。

請記住,Script# 並不是設計用來將現有 C# 應用程式轉換為啟用了 AJAX 的 Web 應用程式。它只是為開發人員提供了一種功能,使其能夠通過先編寫 C# 代碼然後再將其轉換為 JavaScript 代碼的方式來創建 Web 應用程式或邊欄小工具。

但是,由於 C# 和 JavaScript 之間不是一一對應的,因此在使用 Script# 時並非全部 C# 語言功能都可用。例如,不允許使用只寫屬性以及某些結構和關鍵字(包括 goto、using、lock 和 sizeof)。

價格:免費。

projects.nikhilk.net/ScriptSharp

重要博客

真正成為名副其實的技術博客必須具有以下所列的一些重要因素:經常更新的文章、蘊含豐富的知識、相關主題的帖子;對重要技術或概念的深入剖析;以及獨特的觀點或風格。您會發現這些因素在 Eric Lippert 的博客中所占的比例都恰到好處。

Eric 是 Microsoft 的一名高級軟體設計工程師,曾在指令碼語言和 C# 團隊工作過。他的博客中很多優秀的文章都是有關安全、性能、代碼品質以及語言語義和功能方面的內容(如 lambda 運算式、不變性以及協變和逆變)。他對其中的許多主題都進行了深入探討,經常會拓展為多個博客帖子中。

有關 lambda 運算式與匿名方法的內容被分為 5 個部分、C# 中的不變性被分為 11 個部分,而受保護的成員語義也是被分為 5 個部分。Eric 還就有關使用(或不使用)各種語言功能的方法發表了自己的見解和觀點。您可以在他的博客文章“代碼編寫中的神奇冒險”中瞭解他對陣列的見解。

雖然博客中的許多條目涉及的主題都相當複雜,但 Eric 總有辦法以通俗易懂的術語清楚解釋各種概念和理論。

blogs.msdn.com/ericlippert

ericlippert.gif

Eric Lippert 有關代碼安全、性能和品質的博客(按一下圖像可查看大圖)

對注釋、字串、標記和資源檔進行拼寫檢查

編譯器可起到一些拼寫檢查程式的作用。如果您顛倒了方法名稱中的兩個字母或者輸錯了變數名稱,編譯器會報告編譯錯誤。幸運的是,這些錯誤很容易識別,因為 Visual Studio 會用波浪線標出拼寫錯誤。

但請注意,編譯器並不是拼寫檢查程式,它並不能檢查原始程式碼注釋、代碼或資源檔中的字串或者 HTML、XML 或 XAML 標記中的錯誤。拼錯的注釋很容易出現在技術文檔中,甚至更糟糕,拼錯的字串在 QA 階段蒙混過關進入了生產環節。

令人高興的是,有一些工具可以對字串、注釋、標記和編譯器難以理解的其他內容進行拼寫檢查。ComponentOne 開發的 IntelliSpell 2.0 就是這樣一種工具。IntelliSpell 的工作方式與 Microsoft Office Word 中的拼寫檢查非常相似。IntelliSpell 會用波浪線標出任何拼錯的單詞。按右鍵拼錯的單詞可查看可能的修正單字清單。這些拼寫錯誤也會在任務清單視窗中一一列舉出來。

您可以通過任務清單糾正拼寫錯誤,也可以按兩下任務清單中的拼錯單詞來跳到相應的位置。您可以隨時運行拼寫檢查程式,只需從“Tools”(工具)功能表或 IntelliSpell 工具列選擇相應的功能表選項即可。也可以將 IntelliSpell 配置為在使用者鍵入時自動檢查拼寫,以及在每次編譯後運行拼寫檢查程式。

預設情況下,IntelliSpell 會檢查所有代碼檔、Web 頁面、XML 檔(包括設定檔)、資源檔以及文字檔中的拼寫。它會忽略混雜大小寫的單詞、包含數位的單詞以及 Internet 和檔位址,但這些規則和需要進行拼寫檢查的檔案類型是可配置的。IntelliSpell 提供了 16 種不同語言的拼寫字典;當您對當地語系化的專案進行拼寫檢查時,可以單獨使用或協同使用這些字典。

IntelliSpell 分為兩個版本:社區版(免費)和專業版(79.99 美元)。社區版擁有核心功能(Visual Studio 集成、用底線標出拼錯的單詞、通過上下文功能表給出拼寫建議等),但缺少專業版中提供的一些功能。

使用社區版時,每次只能對一個檔進行拼寫檢查。但專業版可以對整個專案或解決方案進行拼寫檢查。此外,諸如在使用者鍵入時進行拼寫檢查、對當地語系化的專案進行拼寫檢查以及創建自訂字典等功能在社區版中也不可用。

**價格:**社區版免費。專業版為 79.99 美元。

componentone.com/

intellispell.gif

IntelliSpell 拼寫檢查字串、注釋和標記(按一下圖像可查看大圖)

書架

對於所有職業和業餘愛好,每個人都有一些需要學習的領域,無論其經驗如何。舉例來說,每個高爾夫球手不管其技能水準如何,只要致力於打短杆,就一定能有所提高。

對於軟體發展人員而言,您永遠也無法掌握所有的 SQL 語法和功能。雖然有許多線上文章專門介紹 SQL 提示和技巧,但我發現對我本人而言,磨練 SQL 技能的最佳方式是系統地閱讀專業書籍。

我最近讀過一本由 Michael Coles 撰寫的書籍《Pro T-SQL 2008 Programmer's Guide》 (Apress),書中全面描述了 T-SQL 的語法和語言功能。該書首先介紹了 T-SQL 2008 中的新增功能,例如 MERGE 語句和新資料類型。然後作者又介紹了核心 T-SQL 構造,包括使用者定義的函數、存儲過程、觸發器、XML、Xquery 和 XPath 支援。接下來是加密、通用表運算式和視窗化函數、SQL CLR 程式設計、錯誤處理等內容。其中每個主題都自成一章,並附帶深入的討論和示例。每章的最後是一組練習,答案提供在附錄中。

我特別喜歡性能調整一章。這一章首先概述了 SQL Server 如何在磁片上排列資料以及這樣的排列會對性能產生何種影響,另外還提供了一些有關節省磁碟空間和存儲稀疏資料的技巧。接下來,Coles 討論了索引的性能優勢,並對群集、非群集和篩選索引進行了比較和對比。該章節的最後討論了分析查詢計畫,並針對優化查詢給出了一些提示。

《Pro T-SQL 2008 Programmer's Guide》假定讀者已經非常熟悉 T-SQL 基礎,因此並未針對初學者級別對 SELECT、INSERT、UPDATE 或 DELETE 語句進行討論。而且,該書重點介紹的是 T-SQL,沒有過多探討資料庫管理,只是在一個小章節中概述了 SQL Server Management Studio、SQL 事件探查器、SQLCMD 和 BCP 等工具。它還通過一個章節的篇幅展示了從 Microsoft .NET Framework 用戶端應用程式與 SQL Server 進行對接的兩種不同方法:使用 ADO.NET SqlClient 提供程式和 LINQ to SQL。

花在學習 SQL 新技能和練習舊技能上的時間始終都是值得的。《Pro T-SQL 2008 Programmer's Guide》通過簡單明瞭的文本資訊、大量的示例和章末練習為學習 SQL Server 2008 中的最新功能以及提高您的現有 SQL 技能提供了極佳的方法。

價格:52.99 美元。

apress.com/

bookcov.gif

請將您想向 Scott 詢問的問題和提出的意見發送至toolsmm@microsoft.com

Scott Mitchell 已發表了多本著作,還創立了4GuysFromRolla.com,自 1998 年以來他一直作為 MVP 從事 Microsoft Web 技術方面的工作。Scott 是一位獨立顧問、培訓專家兼撰稿人。您可通過電子郵件Mitchell@4guysfromrolla.com或訪問其博客ScottOnWriting.NET與他聯繫。