[英]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.