校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 如何用python開發Zeroc Ice應用

如何用python開發Zeroc Ice應用

熱門標簽:天津塘沽區地圖標注 甘肅高頻外呼系統 滴滴地圖標注公司 杭州房產地圖標注 地圖標注可以遠程操作嗎 智能電話機器人調研 400電話在線如何申請 江門智能電話機器人 如何申請400電話代理

Zeroc Ice簡介

  Zeroc ICE(Internet Communications Engine ,互聯網通信引擎)是目前功能比較強大和完善的RPC框架,支持跨平臺、跨語言調用。它非常靈活,可以通過TCP、UDP、SSL/TSL或WebSocket連接,支持同步、異步調用,以及服務器和客戶端之間的雙向連接。Zeroc ICE的效率非常高,它使用一種高效的二進制協議,對帶寬的消耗比較小。甚至對于通過衛星的RPC調用,Zeroc ICE還可以對數據流進一步壓縮。另外Zeroc ICE還可以在不解包的情況下轉發調用請求,省去普通轉發時的解包、重新壓包的時間。
  Zeroc ICE的應用還可以部署在icegrid上,實現網格計算,即客戶端調用時不必指定目標主機,由ICE負責查找;服務端也可以在調用時才開啟,動態加載;同樣的服務也可以部署多個,實現高可用。

實驗簡介

  Zeroc ICE支持跨語言RPC調用,包括C++、C#、Java、JavaScript、Python、Objective-C、Ruby、PHP、VB等。本次實驗采用Python(Pyhon 2.7以上,或者Python 3都可以)。實驗的內容是在icegrid上部署一個簡單的服務器,當客戶端調用時輸出指定內容,并返回一個字符串。實驗步驟如下:

  • 安裝Zeroc ICE
  • 開發服務端和客戶端程序
  • 部署到icegrid
  • 客戶端調用

環境準備

   本次實驗采用的操作系統是Ubuntu 14.04。如果使用其他操作系統,可以根據Zeroc ICE的文檔相應調整。

安裝Zeroc Ice

   如果系統中沒有安裝Zeroc ICE,并且ubuntu的軟件源中也沒有zeroc ice,可以按照下面的步驟安裝。

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 5E6DA83306132997
sudo apt-add-repository "deb http://zeroc.com/download/apt/ubuntu$(lsb_release -rs) stable main"
sudo apt-get update
sudo apt-get install zeroc-ice-all-runtime zeroc-ice-all-dev

  安裝之后系統中就有了slice2cpp、slice2java等Sliece(Zeroc ICE定義的接口描述語言,IDL)文件到相應語言的轉換程序,以及icegrid、iceregistry、icegridadmin等程序。如果缺少目標語言的工具(例如slice2py)或開發包,還需要特別安裝。

安裝Zeroc ICE的python開發包

  當然在這一步之前應當首先安裝python和pip(python的依賴管理工具),此處略。Zeroc ICE的python開發包(或者模塊)叫zeroc-ice,可以使用pip安裝。

sudo -H pip install zeroc-ice

  安裝過程中可能出現缺少某些C/C++頭文件的問題,例如缺少python.h、openssl/ssl.h、bzlib.h,這些都是因為沒有安裝相應的開發包。可以通過如下的命令解決:

sudo apt-get install python-dev
sudo apt-get install libssl-dev
sudo apt-get install libbz2-dev

開發Server和Client

  下面即是真正的服務端和客戶端開發。開發過程通常是:

  • 使用Slice語言定義語言無關的接口文件
  • 轉換成指定語言的接口文件
  • 根據接口文件開發服務端和客戶端程序
  • 書寫服務端和客戶端的配置文件

使用slice語言定義接口

// Printer.ice
module Demo {
  interface Printer {
     string printString(string s);
  };
};

生成指定語言的接口文件

  本次開發采用的語言是python,所以使用

slice2py Printer.ice

  其他語言可以依此類推,例如slice2java,slice2cpp。
  命令執行成功,可以看到在目標目錄中生成了一個Printer_ice.py文件,以及一個Demo目錄。Demo是slice接口文件中定義的module名稱。

編寫服務器

import sys, traceback, Ice 
import Demo

# PrinterI是接口實現類,Demo.Printer是slice2py生成的接口
class PrinterI(Demo.Printer):
  def printString(self, s, current=None):
    print(s)
    return "Server Printed: " + s 

status = 0 
ic = None

try:
  # 初始化zeroc ice環境
  ic = Ice.initialize(sys.argv)
  # 生成名為SimplePrinterAdapter的對象適配器,連接方式是缺省的tcp,監聽端口10000
  adapter = ic.createObjectAdapterWithEndpoints("SimplePrinterAdapter", "default -p 10000")
  # 生成接口的實現對象,并以指定的名字SimplePrinter添加到對象適配器中
  object = PrinterI()
  adapter.add(object, ic.stringToIdentity("SimplePrinter"))
  # 激活對象適配器
  adapter.activate()
  # 使得本服務器的調用線程在此暫停,直至ice服務結束,或者進程結束
  ic.waitForShutdown()
except:
  traceback.print_exc()
  status = 1 

if ic: 
  # Clean up
  try:
    ic.destroy()
  except:
    traceback.print_exc()
    status = 1 

sys.exit(status)

  server.cfg內容如下:

PrinterAdapter.AdapterId=PrinterAdapter
PrinterAdapter.Endpoints=tcp

  其中tcp的意思通過tcp協議調用,服務器監聽來自tcp協議的連接請求。

編寫客戶端

import sys, traceback, Ice 
import Demo

status = 0 
ic = None

try:
  ic = Ice.initialize(sys.argv)
  # 生成名為SimplePrinter代理對象,且通過tcp調用,連接目標機器的10000端口
  base = ic.stringToProxy("SimplePrinter:default -p 10000")
  # 將代理對象轉換成目標對象
  printer = Demo.PrinterPrx.checkedCast(base)
  if not printer:
    raise RuntimeError("Invalid proxy")
  # 調用服務器的printString方法,并輸出返回結果
  rs = printer.printString("Hello World, I'm talking to you through RPC")
  print(rs)

except:
  traceback.print_exc()
  status = 1 

if ic: 
  # Clean up
  try:
    ic.destroy()
  except:
    traceback.print_exc()
    status = 1 

sys.exit(status)

  客戶端的配置文件如下:

Ice.Default.Locator=SzcIceGrid/Locator:tcp -h 127.0.0.1 -p 4061

客戶端直連服務端

  上述程序開發完畢之后不用部署到icegrid就可以直接運行,配置文件是用來在icegrid上定位和連接服務。此時可以一邊運行服務端,一邊運行客戶端,檢驗一下它們的功能。

python Server.py

  運行之后可以看到進程并沒有結束,一直在等待連接。然后另起一個終端,運行客戶端程序。

python Client.py

  運行之后可以看到服務端和客戶端窗口的輸出。

部署到icegrid

  icegrid是Zeroc ICE的云計算解決方案。它可以將各種服務端部署在多臺機器上,并為客戶端調用提供服務定位、服務激活、負載均衡、故障轉移等服務。客戶端只要連接到指定的服務注冊中心,就可以根據服務名稱(這里是SimplePrinter),以及連接協議(Endpoints,這里是tcp)就可以找到相應的服務。服務在注冊時也不必處在運行狀態,可以由icegrid根據調用請求,自動啟動。

配置注冊中心

registry.cfg(服務注冊中心的配置文件)

IceGrid.InstanceName=SzcIceGrid 
#客戶端連接到注冊中心的地址 
IceGrid.Registry.Client.Endpoints=tcp  -p 4061
IceGrid.Registry.Server.Endpoints=tcp
IceGrid.Registry.Internal.Endpoints=tcp
IceGrid.Registry.PermissionsVerifier=SzcIceGrid/NullPermissionsVerifier
IceGrid.Registry.AdminPermissionsVerifier=SzcIceGrid/NullPermissionsVerifier
#注冊中心數據保存路徑,需要手動創建文件夾
IceGrid.Registry.Data=/home/rocway/test/zerocice/registry
IceGrid.Registry.DynamicRegistration=1
Ice.Admin.InstanceName=AdminInstance
Ice.Admin.ServerId=Admin

注意:手工創建文件中的路徑。

配置節點

  節點是服務所在的機器。在實際生產環境中,服務注冊中心也可以運行在其中某個節點上。
node1.cfg(服務所在節點的配置文件)

# 注冊中心地址 
Ice.Default.Locator=SzcIceGrid/Locator:tcp -h 127.0.0.1 -p 4061 
#node名 
IceGrid.Node.Name=node1 
IceGrid.Node.Endpoints=tcp 
#node存儲路徑 
IceGrid.Node.Data=/home/rocway/test/zerocice/nodes/node1
IceGrid.Node.Output=/home/rocway/test/zerocice/nodes/node1
IceGrid.Node.CollocateRegistry=0

注意:手工創建上述文件中提到的路徑。其中服務端程序的輸出會保存在Ouput指向路徑的*.out文件中。

應用描述文件

  應用描述文件用來描述服務端程序在icegrid中的部署情況。包括應用的名稱、服務程序的路徑、執行參數等等。
app.xml

icegrid>
  application name="PrinterApplication">
    node name="node1">
      server id="PrinterServer" exe="python" activation="on-demand">
        adapter name="PrinterAdapter" endpoints="tcp -h 127.0.0.1">
          object identity="SimplePrinter" type="::Demo::Printer" property="Identity"/>
        /adapter>
        option>/home/rocway/test/zerocice/Server.py/option>  
        property name="Ice.Trace.Network" value="1"/>
        properties> 
          property name="Ice.ThreadPool.Server.SizeMax" value="1" /> 
        /properties> 
            property name="IceMX.Metrics.Debug.GroupBy" value="id"/>
            property name="IceMX.Metrics.Debug.Disabled" value="1"/>
            property name="IceMX.Metrics.ByParent.GroupBy" value="parent"/>
            property name="IceMX.Metrics.ByParent.Disabled" value="1"/>   
      /server>
    /node>
  /application>
/icegrid>

啟動icegrid

1.啟動icegrid注冊中心

icegridregistry --Ice.Config=registry.cfg

2.啟動某個節點

icegridnode --Ice.Config=node1.cfg

3.啟動節點上的應用管理程序, 并添加應用

icegridadmin --Ice.Config=node1.cfg

application add app.xml

4.查看已經添加的應用

application describe PrinterApplication

5.啟動各節點上的應用服務

icegridgui

6.運行客戶端程序

python Client.py

實驗總結

  此次實驗實現了在icegrid上部署服務程序,客戶端通過icegrid的服務注冊中心調用該服務。實驗中服務端和客戶端使用的都是Python,有興趣的同學也可以分別使用不同的語言開發服務端和客戶端,嘗試一下Zeroc ICE的跨語言RPC調用。
  本次實驗就到這里,有關Zeroc ICE的其他內容請關注后續的課程。

以上就是如何用python開發Zeroc Ice應用的詳細內容,更多關于python開發Zeroc Ice應用的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • python網絡應用開發知識點淺析
  • 基于Python_腳本CGI、特點、應用、開發環境(詳解)
  • 使用Docker開發python Web 應用
  • Python中SOAP項目的介紹及其在web開發中的應用
  • Python開發.exe小工具的詳細步驟
  • python開發一個解析protobuf文件的簡單編譯器
  • 教你使用Sublime text3搭建Python開發環境及常用插件安裝另分享Sublime text3最新激活注冊碼
  • 詳解vscode實現遠程linux服務器上Python開發
  • 10款最佳Python開發工具推薦,每一款都是神器
  • python開發一款翻譯工具
  • Visual Studio code 配置Python開發環境

標簽:漢中 德宏 重慶 長春 臨汾 河池 廊坊 東莞

巨人網絡通訊聲明:本文標題《如何用python開發Zeroc Ice應用》,本文關鍵詞  如,何用,python,開發,Zeroc,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《如何用python開發Zeroc Ice應用》相關的同類信息!
  • 本頁收集關于如何用python開發Zeroc Ice應用的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    免费成人美女在线观看.| 国内成+人亚洲+欧美+综合在线| 日韩一级完整毛片| av爱爱亚洲一区| 久久不见久久见免费视频1| 亚洲免费av网站| 国产亚洲一本大道中文在线| 欧美日韩成人高清| 91丨九色porny丨蝌蚪| 国模一区二区三区白浆| 婷婷久久综合九色国产成人| 国产精品久久久久7777按摩 | 欧美日韩在线播放一区| 国产黄色精品网站| 久久国内精品视频| 婷婷夜色潮精品综合在线| 樱花影视一区二区| 亚洲欧洲国产专区| 日本一区二区三区在线观看| 欧美一区二区免费视频| 欧美性一二三区| 97精品电影院| 99精品欧美一区二区蜜桃免费| 黄色精品一二区| 麻豆国产欧美一区二区三区| 日本视频中文字幕一区二区三区| 亚洲影院久久精品| 亚洲综合一区在线| 一区二区三区在线免费播放| 欧美韩国日本不卡| 国产精品丝袜91| 久久精品亚洲精品国产欧美kt∨| 日韩午夜激情电影| 日韩免费观看2025年上映的电影| 91精品国产色综合久久不卡蜜臀| 欧美男男青年gay1069videost| 色av成人天堂桃色av| 一本大道久久a久久精二百| caoporm超碰国产精品| av成人动漫在线观看| 91丨porny丨首页| 一本到不卡精品视频在线观看| 91美女在线看| 欧美日韩在线综合| 91精品国产综合久久精品| 欧美久久久久久蜜桃| 日韩视频中午一区| 久久综合五月天婷婷伊人| 精品国产成人在线影院 | 精品电影一区二区| 亚洲精品一区二区三区99| 久久这里只有精品首页| 久久久蜜桃精品| 综合电影一区二区三区| 亚洲伦理在线免费看| 亚洲一区二区三区四区在线观看 | 国产一区二区三区不卡在线观看| 精品亚洲国产成人av制服丝袜| 久草这里只有精品视频| 国产精品亚洲视频| 99久久精品一区二区| 色美美综合视频| 91精品国产黑色紧身裤美女| 欧美精品一区二区不卡| 中文字幕不卡在线| 一二三四社区欧美黄| 美女诱惑一区二区| 成人综合日日夜夜| 欧美日韩亚洲综合在线 | 成人免费观看av| 色综合久久88色综合天天6| 欧美日韩中文国产| 久久综合久久综合九色| 亚洲乱码国产乱码精品精小说 | 亚洲欧美一区二区三区孕妇| 亚洲国产成人av好男人在线观看| 久久精品久久久精品美女| 成人激情开心网| 69堂成人精品免费视频| 国产色婷婷亚洲99精品小说| 亚洲免费观看高清完整版在线| 蜜桃91丨九色丨蝌蚪91桃色| 成人午夜电影小说| 欧美日韩成人在线一区| 国产精品视频麻豆| 日本在线播放一区二区三区| 成人黄色免费短视频| 欧美一区二区三区四区高清 | 亚洲免费视频中文字幕| 日本不卡1234视频| 91久久精品网| 国产视频一区二区在线| 天涯成人国产亚洲精品一区av| 国产一区二区三区四区五区入口 | 91黄色在线观看| 2019国产精品| 日本在线不卡视频一二三区| 成人av在线播放网站| 欧美一区二区三区四区五区| 亚洲男人都懂的| 国产精品中文欧美| 91精品在线麻豆| 一个色妞综合视频在线观看| 国产成人午夜高潮毛片| 欧美一区二区三级| 一区二区三区av电影 | 国产成人午夜电影网| 欧美精品久久天天躁| 亚洲图片你懂的| 国产精品996| 精品入口麻豆88视频| 亚洲3atv精品一区二区三区| 99久久精品99国产精品| 国产亚洲一区字幕| 精品一区二区三区av| 在线播放中文一区| 一区二区三区精品久久久| 99久久婷婷国产综合精品电影| 久久人人97超碰com| 久色婷婷小香蕉久久| 欧美剧情电影在线观看完整版免费励志电影 | 国产精品久久毛片av大全日韩| 毛片一区二区三区| 日韩三级av在线播放| 婷婷丁香久久五月婷婷| 欧美精品v日韩精品v韩国精品v| 亚洲欧美国产高清| 一本色道亚洲精品aⅴ| 中文字幕av一区二区三区高| 国产精品自拍网站| 久久综合九色欧美综合狠狠| 久久不见久久见免费视频1| 日韩视频免费观看高清在线视频| 日本中文字幕不卡| 欧美电影免费观看高清完整版在线观看 | 欧美亚州韩日在线看免费版国语版| 国产精品成人午夜| 一本大道久久a久久精二百 | 亚洲一区在线视频| 欧美撒尿777hd撒尿| 亚洲高清久久久| 欧美日韩国产综合草草| 日韩一区精品视频| 欧美一区二区黄色| 免费人成黄页网站在线一区二区| 欧美精品在线观看播放| 日韩专区在线视频| 日韩美女一区二区三区| 国内成人精品2018免费看| 国产欧美一区二区精品仙草咪| 成人av网址在线| 亚洲色图都市小说| 91国在线观看| 日本欧美久久久久免费播放网| 91精品国产麻豆| 国产精一品亚洲二区在线视频| 中文字幕欧美区| 91九色最新地址| 琪琪久久久久日韩精品| 国产亚洲精品7777| av高清不卡在线| 亚洲国产精品欧美一二99 | 亚洲色图色小说| 欧美喷水一区二区| 国产揄拍国内精品对白| 国产精品国产精品国产专区不片 | 色av一区二区| 捆绑变态av一区二区三区| 欧美激情一区二区三区四区| 色综合中文字幕国产 | 亚洲黄色性网站| 欧美一区午夜视频在线观看| 国产制服丝袜一区| 亚洲欧洲日韩女同| 91精品国产综合久久福利软件 | 99re8在线精品视频免费播放| 亚洲h精品动漫在线观看| 久久众筹精品私拍模特| 日本高清不卡aⅴ免费网站| 久久狠狠亚洲综合| 亚洲美女屁股眼交3| 欧美xxxxxxxx| 欧美性色黄大片手机版| 国产在线播精品第三| 亚洲国产成人tv| 国产午夜精品一区二区| 欧美日韩国产在线播放网站| 国产精品亚洲第一区在线暖暖韩国| 亚洲激情在线激情| 久久久久久**毛片大全| 91久久国产最好的精华液| 国产一区二区三区免费在线观看| 亚洲一区在线观看网站| 国产欧美综合色| 欧美一区二区三区在线电影| 99视频热这里只有精品免费| 美女一区二区在线观看| 亚洲制服丝袜av| 综合久久久久久| 久久精品综合网|