python呼叫soa服務
阿新 • • 發佈:2018-11-24
公司專案需要呼叫基於soa介面的服務,幾個技術人員用java配置了一整天都沒有搞定,最後一怒之後我自己把要呼叫的功能重寫了一遍。最近用python試了一下,結果一行程式碼就搞定了,真是感慨萬千。
1. SOA
SOA是service-oriented architecture(面向服務的架構)的簡寫,主要是通過通用介面將服務包裝並獨立化。
常見的幾種SOA規範有:
- SOAP、XMLRPC:http+xml。目前XMLPRC已經逐漸被SOAP取代。
- REST:http+json。SOAP使用xml,安全性更高;REST使用json,效能更好。有時候把REST和SOAP都稱為REST,特點為:應用層協議(http)+序列化協議。
- RPC:底層協議(通常是tcp)+序列化協議。比如gRPC=http2+ProtoBuf,由谷歌開發。
下面是常見RPC的對比:
* | Motan | Dubbox | thrift | gRPC | rpcx |
---|---|---|---|---|---|
開發語言 | Java | Java | 跨語言 | 跨語言 | go |
底層協議 | motan | Dubbo、 Rmi 、 Hessian、 http、 WebService 、Dubbo | Thrift 、Memcached | tpc/http/frame | http2 |
訊息序列化 | hessian2,json | hessian2,json,resr,kyro,FST等,可擴充套件protobuf等 | thrift | protobuf | Gob、Json、MessagePack、gencode、ProtoBuf等 |
2. python啟用SOA
這裡舉兩個例子:
2.1 基於SOAP
安裝soappy:
pip install soappy
建立一個python檔案,內容如下,然後執行啟用服務:
import SOAPpy
def hello(a):
return "Hello "+a
server = SOAPpy.SOAPServer(("localhost", 7788))
server.registerFunction(hello)
server.serve_forever()
2.2 基於XMLRPC
使用自帶的SimpleXMLRPCServer:
from SimpleXMLRPCServer import SimpleXMLRPCServer
def add(a , b):
return a+b
server = SimpleXMLRPCServer(("localhost", 8123))
server.register_function(add)
server.serve_forever()
3. python呼叫SOA
這裡依舊舉兩個例子:
3.1 基於SOAP
使用方法如下:
import SOAPpy
server = SOAPpy.SOAPProxy("http://localhost:7788")
print server.hello('chen')
輸出
Hello chen
3.2 基於XMLRPC
使用方法為:
import xmlrpclib
server = xmlrpclib.Server('http://localhost:8123/')
print server.add(1,2)
輸出
3