1。跨語言
兩個框架都很好的做到了這壹點,主流的開發語言C++,Java,Python,Ruby等等都能支持。
2。代碼生成
兩個框架都有自己的IDL,(Interface Define Lanaguage),在ICE裏面叫slice文件,Thrift裏面就叫Thrift文件,用來描述將要實現的服務接口,然後通過工具程序自動生成骨架代碼,比如client和server端的stub代碼.Thrift生成的代碼都在壹個文件裏,ICE則細致的多,能很好的區分那部分是server端,那部分是client端用的。
3。網絡傳輸的編碼和解碼
對象在傳輸過程時,發送端發送時需要將Object編碼成字節流,接收端接收後則將這些字節流解碼成對應的Object,從兩個框架的實現來看,ICE的編碼要比Thrift要緊湊和經濟的多,Thrift在編碼Object時,連同Object的Field的類型和編號(Thrift定義的每個Object的field都會分配壹個編號)以及每個函數的參數類型和編號都給編碼進去了,ICE則經濟的多,只編碼了Field的value。
4。框架本身
Thrift整個框架代碼非常簡潔,相比ICE來說,ICE要比Thrift完善和成熟的多。這個主要體現在服務的高可用性和可擴展性方面。
ICE提供的服務可以是分布式的,框架有完善,成熟的運行環境來運行服務,這些環境提供了很多很好的機制,來保證服務的可擴展和高可用性,比如
Register機制,通過Register,讓client再連接服務時多了壹層尋址的機制,如同DNS壹樣,可以方便的將某個服務切換到其他機器上,和DNS作IP輪詢壹樣,ICE可以通過Register來給服務做負載均衡
也因為ICE提供的這些環境可以使的ICE編寫的服務能方便的部署和發布。