2010-04-26 101 views
3

我很好奇人們會如何使用IronPython或IronRuby等動態語言來創建基於WCF的服務。這些語言沒有接口的概念。某人如何定義服務合同?我們是否需要依靠靜態語言來完成這類任務?我特別喜歡Python的粉絲,並想知道在這一點上是否可以做到這一點。使用動態語言和DLR創建WCF服務

+0

偉大的問題。我也很想知道。 – Slavo 2010-04-26 16:18:12

+0

已超過6小時沒有人回覆:( – Perpetualcoder 2010-04-26 23:00:19

回答

2

我已經做了一些實驗 - 在我的blog上查看我的經驗。

好消息是WCF服務可以完全寫在IronPython中。壞消息是這樣的WCF服務在IIS中不起作用,因爲你不能直接使用從C#或VB編譯的IronPython代碼。

+0

「你不能直接使用從C#或VB編譯的IronPython代碼」我不太瞭解這部分 – Perpetualcoder 2010-04-30 20:29:54

+0

當你用'pyc.py'編譯I​​ronPython代碼時,它實際上不編譯代碼的含義與C#或VB一樣,它會產生無法用符合CLS的IL表示的破壞的IL(請參閱http://blogs.msdn.com/shrib/archive/2008/07/24/cls-compilation-of- ironpython.aspx的詳細信息)如果您使用Reflector檢查製作的.dll文件,您會看到我的意思。 – 2010-05-02 11:06:18

2

IronPython在2.6中有一個新特性,使用Python類定義機制來創建普通的.NET類。通過覆蓋元類上的clrtype來啓用新功能。然後你可以用一堆裝飾器聲明一個類,而元類創建一個新的.NET類型。作爲示例,我們有一組元類,可以在IronPython CodePlex站點上爲2.6.1 release使用(或定製)元組。

我還沒有嘗試過,特別是W/WCF,但在需要使用靜態類型的情況下,它在其他情況下可以工作。有些情況下它不起作用 - 特別是如果框架需要Type.GetType(typeName)。