1. 程式人生 > >python呼叫soa服務

python呼叫soa服務

公司專案需要呼叫基於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