簡體   English   中英

將我的python程序暴露於.Net / C#的最簡單方法-不能使用ironpython

[英]Simplest way to expose my python program to .Net/C# - can't use ironpython

我有一個用python編寫的自定義業務邏輯-由於種種原因我不能直接用C#/。Net(時間限制等)編寫它。

我嘗試使用IronPython將python程序集成到.Net中,但不能( lxml是原因之一 )。

我正在尋求一種更簡單的解決方案,將python邏輯公開為.Net可以調用的Web服務。

--

首先,我認為我必須將python代碼托管在單獨的域中。但是我意識到,我可以將python安裝在同一服務器上並運行此python服務!

功能很簡單-.Net傳遞URL,而python程序將數據作為長字符串返回。

1。 )最簡單的方法是什么?
2。 )是否需要使用類似web2py / werkzeug的框架,還是可以使用內置的東西?

您是否考慮過將python代碼發布為com對象? 我過去曾經做過。

請參見http://oreilly.com/catalog/pythonwin32/chapter/ch12.html中的 “在Python中實現COM對象”部分

不確定它是否適合您的.Net環境,但它是否可行。

其他我將研究如果僅將其包裝在本地環境中,則將其包裝在簡單的XMLRPC服務中,那樣您就必須進入框架領域(例如Django等)。

我想我可以試試龍卷風 我過去一直在使用它,它非常容易學習。

無論如何,我認為我建議您准備一個在本地運行的小型Web服務(使用Tornado)。 然后,如果有需要,也可以從同一台計算機上運行的任何代碼輕松訪問此Web服務-也可以從另一台計算機上訪問。

哦,龍卷風比Django輕得多...

(下面的示例代碼是Tornado網站上的Hello-World示例-我剛剛在這里復制了它,以展示使用Tornado多么容易):

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可能是一個好主意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM