摘要:IronPython for ASP.NET CTP
【原文位址】 IronPython for ASP.NET CTP
【原文發表日期】 Thursday, November 16, 2006 10:40 PM
幾個月前,我曾經寫過發佈 IronPython v1.0 的事。IronPython是Python動態語言在.NET平台上的實現。它支援一個可交互的控制台,該控制台支援完全的動態編譯,並且可以讓Python程式設計師輕鬆地存取所有的.NET程式庫,同時還保持對Python語言完全的相容性。
IronPython 提供了.NET 程式設計語言可以如何利用我們在去年發行的.NET 2.0版本的CLR中新加入的動態語言特性的一個極好的例子。譬如,像「輕量級編碼生成"這樣的CLR特性,現在可以讓動態語言很快地在記憶體裡編譯和JIT源碼 (給予你非常快速的運行速度而不必生成一個.dll 檔案)。CLR 2.0 還有把這些JIT過的程式碼垃圾回收的能力。這意味著,你可以在運行時很快地動態調整型別,而且不用洩漏生成的編碼。
上個星期,我們發佈了一個非常酷的CTP,提供了ASP.NET和Visual Web Developer Express(當然是免費的)中IronPython的整合支援。安裝完畢後,你就可以在建立新的專案和頁面時,使用Python作為你的語言選擇,輕鬆地利用動態語言腳本的支援:
IronPython for ASP.NET CTP安裝完畢之後, Visual Studio/Visual Web Developer 將為使用Python的ASP.NET專案提供行內(inline)程式碼和後台程式碼(code-behind)網頁的支援,提供句法反白顯示,WYSIWYG 設計器,以及完整的偵錯支援。你也可以用它來建立居於App_Script 資料夾下的獨立的python模組檔案,將它們用於整個網站。
探究Python用法的最輕鬆的方式是,選擇檔案->新網站選單項,然後建立一個 Python版的Personal Starter Kit樣例網站(注意下面截圖中副檔名為.py的後台程式碼檔案):
上面的Personal Starter Kit Python 樣例提供了一個酷的方式來開始學習Python,同時也利用了Python 提供的一些動態語言功能,以及 IronPython 開發組添加的與ASP.NET的良好整合特性。
例如,Photos.aspx網頁提供了允許管理人員上傳新的照片到相冊的支援。這是通過一個使用了模板化插入模式UI的 FormView 控制項來實現的,像這樣:
<InsertItemTemplate>
Enter Photo: <asp:FileUpload ID="PhotoFile" … />
Enter Caption: <asp:TextBox ID="PhotoCaption" … />
….
</InsertItemTemplate>
</asp:FormView>
在一個強型別語言裡,你通常需要使用FormView1的FindControl()方法進入到它的模板裡來獲取FileUpload 或TextBox控制項的引用,然後將該引用強制轉換到傳回物件的型別,才可以使用這些物件。但在像Python這樣的動態語言中,你可以在你的Photos.aspx.py後台程式碼檔案裡寫下面這樣的編碼:
def FormView1_ItemInserting(sender, e):
caption = FormView1.PhotoCaption.Text
bytes = FormView1.PhotoFile.FileBytes
if len(bytes) == 0:
e.Cancel = True
else:
PhotoManager.AddPhoto(Request.AlbumID, caption, bytes)
注意到沒有,你只要寫FormView1.PhotoCaption就可以存取模板裡的子控制項,然後直接引用它的子屬性就可以了。這個技術也可以用在像 DataList,Repeater和Wizard這樣模板化的控制項上。真妙!
如何進一步瞭解 IronPython
查看一下 IronPython for ASP.NET 主頁以進一步瞭解 IronPython for ASP.NET CTP。你也可以在這裡閱讀一下David Ebbo 寫的精彩白皮書,該文描述了為更好地支援動態語言和編譯而對ASP.NET分析器做的變動。
最後,想進一步瞭解 IronPython本身的話,我建議你觀看一下這個9月份時Jod Udell採訪Jim Hugunin的精彩錄影廣播(內有Demo)。 Jim 現場編寫了一些很酷的Demo,包括使用IronPython建立一個與Speech API整合的WPF計算器應用。然後他也Demo了如何把影響性能的關鍵程式碼從Python重構到像C#這樣強型別的語言,以及兩者是如何無縫地協作的。你現在可以把這些同樣的技術使用在IronPython 和ASP.NET上。
希望本文對你有所幫助,
Scott