2012-08-05 48 views
0

我用Python編寫的自定義業務邏輯 - 還有,我不能把它寫各種原因直接在C#/。NET(時間限制。等等。)。最簡單的方法 - 不能使用IronPython的

我試圖整合使用IronPython的Python程序爲淨,但不能(lxml being one of the reasons)。

我正在轉向更簡單的解決方案,將這個python邏輯作爲一個 網絡服務公開,它可以調用.Net。

-

首先我想我必須擁有我的Python代碼在一個單獨的域.. 但我意識到,我可以在同一臺服務器&跑這條巨蟒服務安裝蟒蛇! !

的功能是簡單的 - 淨傳遞一個URL &蟒程序返回數據作爲長字符串。

)什麼是做到這一點的最簡單方法是什麼?
)。我需要使用像的web2py/WERKZEUG的框架或者是有什麼建於我可以使用嗎?!

+1

請告訴,你有沒有考慮從應用程序的.NET部分(並重新指揮輸出)從命令行啓動Python部分的選項?它似乎比實現Web服務更簡單。 – 2012-08-05 05:11:19

+0

你檢查過Django嗎?它是Python中的mvc。你可以寫一個視圖來實現你想要的:接受請求,返回數據。 – Prasanth 2012-08-05 05:11:25

+0

@AndriiKalytiiuk - 嗯...我想過,但我怎麼從python程序返回數據?將每個函數調用的結果存儲在一個文件中將會很麻煩.. – PlanetUnknown 2012-08-05 05:18:10

回答

0

我想我會給Tornado一試。我過去一直在使用它,而且這非常容易學習。

不管怎樣,我想我會建議你準備一個小的web服務本地運行(使用龍捲風)。這個web服務可以很容易地被同一臺機器上運行的任何代碼訪問,並且如果有需要的話 - 也可以從另一臺機器上訪問。

哦,龍捲風比Django的要輕得多......

(以下示例代碼是從龍捲風網站你好,世界樣本 - 我只是複製在這裏顯示它是多麼容易使用龍捲風):

import tornado.ioloop 
import tornado.web 

class MainHandler(tornado.web.RequestHandler): 
    def get(self): 
     # put your calculation logic in here (instead of "Hello World" 
     self.write("Hello, world") 

application = tornado.web.Application([ 
    (r"/", MainHandler), 
]) 

if __name__ == "__main__": 
    application.listen(8888) 
    tornado.ioloop.IOLoop.instance().start() 

一個龍捲風的巨大優勢是,它是簡單的事情簡單的任務,但爲了以防萬一,你需要一些更復雜 - 它是用起來方便。

哦,還有一件事要記住 - 我不知道你的代碼實際上做什麼,但我認爲這可能是一個好主意,考慮考慮與設計REST Web服務的」 API。

+0

我喜歡我在這裏看到的!如果使用Process.start調用python確實會造成任何問題,我一定會試試這個。 – PlanetUnknown 2012-08-05 22:15:51

+0

請注意,使用web服務似乎更加靈活,並且作爲一個進程啓動python有兩個缺點:1)它不能很好地執行,因爲每次你想要獲得結果時都要啓動python;它也不可能緩存結果。 2)當定義和運行REST API時,更換每個部件(客戶端或服務器)會更容易。 它似乎比使用Process.Start更復雜,但它並不緊密耦合。 – MaciekTalaska 2012-08-06 07:26:40

0

你有沒有考慮將你的python代碼發佈爲com對象?我過去曾經這樣做過。

http://oreilly.com/catalog/pythonwin32/chapter/ch12.html

不知道如何與你來得正好.NET環境,但它是可行的部分「Python實現COM對象」。

其他我會調查只是包裝它在一個簡單的XML-RPC服務,如果它在你當地的環境只用,這樣,你必須進入境內框架(如Django的等)。

+0

感謝添,但編譯看起來不可能特別是考慮到我從lxml創建一個DLL的問題。 – PlanetUnknown 2012-08-05 22:08:37

+0

沒有必要編譯任何東西。你有沒有看到我提到的章節,這是普通的python,有一些額外的python代碼註冊了com接口。 – 2012-08-05 23:22:54