利用ICE通信中间件构建分布式应用程序开发框架

Slides:



Advertisements
Similar presentations
本章重点内容  SMB 协议和 Samba 简介  安装和启动 Samba  配置 Samba 文件共享  配置 Samba 打印共享  在 Linux 环境下访问 Samba 共享.
Advertisements

高等动物的 个体发育 作者:游隆信 松阳一中 二零零二年三月 被子植物子房的结构 及双受精过程 胚珠的结构 花粉管 精 子 卵细胞 极 核 子房壁 珠 被 珠 孔.
第8讲 安装和卸载软件包 本章主要内容: 包管理 RPM操作 用RPM诊断 文件压缩与打包 图形界面下包的安装与管理.
Linux 安裝入門與基本管理 課程目標: 學習Linux平台下的安裝設定 與 建置一個基本的Linux伺服器
辅导老师:隋秀峰 2008年10月22日 Lab3:MPI Programming 辅导老师:隋秀峰 2008年10月22日.
基础模块 模块一 程序设计基础 (一)开发环境部分.
计算机网络高级工 梁绍宇.
21世纪全国高职高专 计算机系列实用规划教材 计算机网络技术基础 主 编: 杨瑞良 李 平 副主编: 邱 涛 李明龙.
培养目标 1.建立基本的程序设计概念体系,掌握基础程序设计方法。
本投影片部份內容 由成大資通安全研發中心 鍾沛原先生提供
PT(PulseTrader) 高频程序化交易平台
龙芯多媒体电脑教室培训 龙梦极域电子教室 江苏龙芯梦兰科技股份有限公司.
湖南省怀化市中小学信息技术 学科考试系统培训交流
组网技术与配置 (第3版) 清华大学出版社 ISBN
技术支持部 张新凤( ) 并行机群系统安装、使用和管理 技术支持部 张新凤( )
T3汽修通总体介绍及软件应用 姓名:刘静静 2010年4月21日.
MHA(Master High Availability) 作者
自由軟體SFS3 SFS3 學務系統是採用開放原始程式碼所架構的校務行政電腦化系統,目標是希望使各中小學校能擁有一個自由開放強大的校務E化平台。 本系統採用 Apache+PHP+MySQL,具備強大的模組功能,並且跨平台支援 Linux/FreeBSD/Windows等作業環境。 最大的特色是:自由、開放、模組化、高度可擴展能力。
第六章 Linux的系統管理基礎 課前指引 身為Linux系統管理員,除了熟悉作業系統的安裝、圖形介面的操作及系統指令的使用與軟體套件的安裝外,更需要瞭解基礎的Linux系統管理技巧。本節,將針對此部分進行說明。
Windows Server 2003操作系统相关配置
转正述职报告 乐恩公司 史航
UNIX系統與資料庫安裝 Why UNIX 常用的工具程式介紹 資料庫的安裝.
Socket.
作業系統的結構 日期 : 2018/9/17.
APP課程:Android程式設計開發環境與工具介紹
Linux.
第一章 認識Visual C 環境架構 1-1 認識Visual C Visual Studio 概觀
網路基本概念 本章主要是為讀者建立有關網路的基本知識, 作為後續章節的基礎。首先我們會說明網路的基本概念, 接著介紹網路的各種類型與相關的作業系統, 最後則是介紹 OSI 與 DoD 等兩種網路模型, 讓讀者能進一步了解網路運作的方式。
本章导读 Webmin简介 Webmin的安装和配置 停止和启动Webmin服务 使用Webmin配置Samba服务
主講人:葉致偉 交大校園網路策進會 臺灣學術網路竹苗區域網路中心 89年網路教育推廣訓練課程 Proxy Server 規劃管理 主講人:葉致偉 交大校園網路策進會
網路安全技術期末報告 Proxy Server
Windows 2000 Server Certificate Authority架設
2018/11/18 福州大学VPN使用指南.
第4章 作業系統的介紹及操作.
Linux 圖形操作介面 GUI -- X-window 與 Webmin
OS 定制:多语言的实现 郑永航 MVP 邮箱: QQ:
第4章 PIC软件开发设计基础.
Installation, advance wireless module and evaluation 2008/11/11
编译与多文件.
讲议: PXE 介绍及实现 Jarvis
第二天 计算机基础技能培训 (一)linux基础知识
軟體的安裝升級與移除 Linux軟體安裝簡介 原始碼安裝 以 RPM 指令管理套件 使用 Yum 線上安裝、移除與更新套件
作業系統 家庭和小型企業網路– 第二章.
第03章 Samba服务的配置与应用 本章导读 Samba的概述 Samba服务的配置文件 Samba服务的文件共享
第2章 Linux概述 2.1 操作系统的功能和分类 2.2 Linux操作系统概述 2.3 Linux的应用现状与前景
第 29 章 架設 Samba 伺服器 著作權所有 © 旗標出版股份有限公司.
1-1-1作業系統的功能 提供使用者操作介面 提供程式執行環境 控制輸入\輸出程序 分配系統資源 管理與維護磁碟中的檔案
第 9 章 中文系統 著作權所有 © 旗標出版股份有限公司.
远程登录管理.
校 園 雲端輸出管理系統 新印科技股份有限公司 聯絡人:伍宏一 電 話: /
第三章 用户接口与作业管理 用户与操作系统的接口 批处理操作系统的作业管理 作业的基本概念:作业、作业步、作业流 交互式系统作业管理
第 22 章 架設 WWW 伺服器.
Linux核心編譯與模組管理 2013/01/19.
编辑文本文件 软件包管理 Samba 在Linux下使用Windows共享打印机
Confidential Property
嵌入式Linux开发流程 成都研究所操作系统团队.
ARM Developer Suite 介 绍.
C语言环境配置.
輕談淺說INTERNET.
动态链接库 主讲人:孙鑫
实验一:编译运行Linux内核并使用gdb进行调试
第二章ADS1.2开发环境创建与简介.
高级大数据人才培养丛书之一,大数据挖掘技术与应用
凌群電腦新一代   交易所TCP/IP Gateway
售后培训系列之V9系统中心安装 SecManage 网安事业部 广州售后-王长绪.
大数据应用人才培养系列教材 Python语言 刘 鹏 张 燕 总主编 李肖俊 主编 刘 河 钟 涛 副主编.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
Usage Eclipse 敏捷方法工具介紹 實驗室網站:
劉庠宏、林合治編著 國立高雄大學應用數學系 2005年3月1日
第六章 文件系统与文件管理 6.4 Linux文件管理 1、比较MS DOS 与 Linux的目录结构 一、Linux文件系统的树形结构
Presentation transcript:

利用ICE通信中间件构建分布式应用程序开发框架 NISEC讲座系列之--- ICE网络编程 利用ICE通信中间件构建分布式应用程序开发框架 演讲人:牵牛散步 时间:2007.06.15 地点:JCB-410

---利用ICE通信中间件构建网络应用程序开发框架 在这里我们要讲的可不是冰激淋,而是一种用于分布式程序设计的网络通信中间件ICE(Internate Communications Engine).ICE的设计目标主要是以下几点: • 提供适用于异种环境的面向对象中间件平台。 在用ICE进行分布式程序设计时,你可以不必考虑客户端或 者服务器端程序所运行的平台(WINDOWS或者是LINUX, UNIX),也可以不用关心程序使用的开发语言(不过有一点 需要注意,目前,利用PHP,RUBY等WEB脚本语言只能编 写ICE程序的客户端,而服务器端一般利用C++或者JAVA 来实现). • 提供一组完整的特性,支持广泛的领域中的实际的分布式应用的开发。 • 避免不必要的复杂性,使平台更易于学习和使用。 ICE的学习比较曲线比较短,很容易上手.只要你熟悉某一种 语言(例如C++或JAVA),了解了ICE编程范式之后,很快就能 开发出实际的应用. • 提供一种在网络带宽、内存使用和CPU 开销方面都很高效的实现。 • 提供一种具有内建安全性的实现,使它适用于不安全的公共网络。 支持SSL协议(要使用此协议必须装OPENSSL开发包)

---利用ICE通信中间件构建网络应用程序开发框架 2.中间件技术与物流公司 中间件是在计算机硬件和操作系统之上,支持应用软件开发和运行的系统软件,它能够使应用软件相对独立于计算机硬件和操作系统平台.中间件具有标准的程序接口和协 议,可以实现不同硬件和操作系统平台上的数据共享和应用互操作。在具体实现上,中间件是一个用API定义的分布式软件管理框架,具有强大的通信能力和良好的可扩展性。 从开发者的角度来看,中间件技术为其提供了一个开发分布 式程序的框架即一套API,使其不需要进行枯燥乏味,而且需 要花费大量时间和精力的基础设施的开发.使开发者能把大 量的精力放在业务程序的开发上,提高应用程序的质量和开发效率. 这就好比一个生产手机的厂商,它的客户可能分布在世界 的很多地方(这里假设这个厂商只在一个地方生产手机), 当手机生产出来后,厂商有两个方案,一是自己建立物流部门 去配送手机.二是把这些配送业务交给专业的物流公司去处 理.显然第一种方案是比较合适的,因为该厂商的专长是设计 制造手机,而不是进行物流配送.对该厂商来说,他只需要按照 物流公司的流程,把货交给物流公司,剩下的事情就由物流公 来办,至于公司的产品是用飞机还是轮船运送的,手机厂商可 以完全不关心,它只需要知道产品是否安全,完整的到达目的 地了.对于这家手机厂商来说,此物流公司就是一个”中间件”. 它们就可以把更多的精力放在如何设计和生产更好的产品上.

---利用ICE通信中间件构建网络应用程序开发框架

---利用ICE通信中间件构建网络应用程序开发框架 • 支持同步和异步的消息传递 • 支持多个接口 • 机器无关性 • 语言无关性 • 实现无关性 • 操作系统无关性 • 多线程支持 • 传输机制无关性 • 安全性 • 开放源代码

---利用ICE通信中间件构建网络应用程序开发框架 • Slice (Ice 规范语言) 每个Ice 对象都有一个接口,该接口具有一些操作。接口、操作,还有在客户及服务器间交换的数据的类型,都是用Slice 语言定义的。Slice 允许你以一种独立于特定编程语言(比如C++ 或Java)的方式定义客户-服务器的合约。 Slice 定义由一个编译器编译成特定编程语言的API,也就是说,与你所定义的接口和类型对应的那一部分API,会由生成的代码组成。 • 通信器(Ice::Communicator) ICE在进行通信时,服务器和客户端都必须建立一个通信器, 通信器为该通信进程分配和管理资源,可以把通信器看做通 信双方的一个专用线路. • 对象适配器(Ice::ObjectAdapter) 对象适配器实现了一个向上调用接口,把Icerun time 与 服务器中的应用代码连接在一起. 它提供一个或更多传输端点。客户通过这些端点访问适配 器所提供的Ice对象,即通过适配器访问servant. 一个对象适配器与一个端口绑定.如果服务器端同时监听 两个端口的话必须建立两个适配器.

---利用ICE通信中间件构建网络应用程序开发框架 • 用户代理 客户端通过用户代理来调用服务器端提供的servant.可以把用户代理想象成本地C++程序里的类指针,通过类指针来对实例进行操作. • Servant 即ICE服务器端提供给客户端的服务.也是我们建立最关心的部份.它映射在服务器端就是我们通过SLICE定义编译 生成后的接口类.一个接 口类为一个服务.Servant 必须和某个适配器绑定.

---利用ICE通信中间件构建网络应用程序开发框架 1.ICE在WINDOWS下的安装( FOR VC++ 6.0 WITH SP2) • 下载windows平台下的安装软件包,ICE支持多种开发程序,在这里我们安装Ice-3.0.0-VC60.msi.软件包可以到官方网站去下载:http://www.zeroc.com/download.html • 一路NEXT完成安装.然后需要配置ICE的环境变量.在系统环境变量中配置以下变量: ICE_HOME=<Ice installation root directory> PATH=%ICE_HOME%\bin;%PATH% 配置好后打开命令控制台,输入命令”slice2cpp”如果能看到以下内容则说明ICE安装成功.

---利用ICE通信中间件构建网络应用程序开发框架 • 配置IDE的开发环境,在VC++软件中做以下配置: - Tools->Options->Directories - 选择 “Include files”标签栏 - 增加 <Ice installation root directory>\include 和 <Ice installation root directory>\include\stlport 到列表.然后移动 “\include\stlport”目录到列表的顶部. - 选择 “Library files”标签栏 - 增加 <Ice installation root directory>\lib 到列表. - 选择 “Executable files”标签栏 - 增加 <Ice installation root directory>\bin 到列表. • 配置具体开发工程(以下为配置DEBUG版本,RELEASE版本类似),在VC++软件中做以 下配置: - Project Settings >> C/C++(Tab) >> Category:Code Generation >> User run-time ddlibrary:Debug Multithreaded DLL (ICE是多线程的) - Project Settings >> C/C++(Tab) >> Category:Preprocessor >> Additional include directories:(在此项中填入一个点".",表示根目录) - Project Settings >> C/C++(Tab) >> Category:C++ Language >> 勾选"Enable Run-Time Type Information(RTTI)"项 - Project Settings >> Link(Tab) >> Category:General>>在"Object/library modules:"框中的未首加入两个包"iced.lib"和"iceutild.lib"

---利用ICE通信中间件构建网络应用程序开发框架 2.ICE在LINUX(Red Hat 9)下的安装( FOR C++ ) • 安装要求: - 系统中必须有GCC 3.0以上版本(我们通过源码安装) - 需要至少三个软件包: bzip2-1.0.3.tar.gz ,bzip2-devel-1.0.2-8.i386.rpm, Ice-3.0.0.tar.gz .如果需要ICE的其它服务的话应安装相应软件包.在这里我们 假设这三个软件包都在系统的/usr/drc目录下. • 安装bzip2: #> tar -zvxf bzip2-1.0.3.tar.gz #> cd bzip2-1.0.3 #> make #> cp bzlib.h /usr/include • 安装bzip2-devel: #> rpm –ivh bzip2-devel-1.0.2-8.i386.rpm • 安装ICE: #> tar xzvf Ice-3.0.0.tar.gz #> cd Ice-3.0.0 #> make –i #> make install –i

---利用ICE通信中间件构建网络应用程序开发框架 • 设置环境变量: #> export PATH=/usr/drc/Ice-3.0.0/bin:$PATH • 至此ICE安装完成,在SHELL里输入命令”slice2cpp”如能看到以下提示,则说明ICE安装 成功.

---利用ICE通信中间件构建网络应用程序开发框架 下面,我们用一个类似helloworld的程序来给大家演示一下,一个ICE通信程序是如何编写的.此程序包括两端,一个是客户端程序client,一个是服务端程序server.此程序的功能是:server侦听一个端口60018,client去连接server,连接上后,给server发送一个字符串,server收到字符串后在其屏幕上打印此字符串,并返回一个表示接收成功的串给client,client接收到此串后打印在其屏幕上. 1.首先,我们要定义通信双方的通信接口,既然是接口,那么接口信息是通信双方共享的信息.定义接口通过编写ICE的Slice文件来完成.以下是我们此程序的Slice文件内容: //3.0以后的版本必须把接口定义在模块(module),模块映射为C++里的名字空间 module NisecICE { //定义ICE接口,映射为C++里同名的一个类(纯虚类,因此不能实例化,必须继承并重载类中的相应方法) interface HelloICE //定义接口里的操作,映射为C++里同名的一个纯虚拟方法 string SayHello( string content ); };

---利用ICE通信中间件构建网络应用程序开发框架 2.编译Slice文件,生成相应的.CPP和.H文件: 利用ICE提供的命令”Slice2cpp”对刚才定义的.ice文件进行编译,会生成一个.cpp文件和一个相应的.h文件.这两个文件里就是实现我们接口的相关骨架类.这两个文件通信双方都需要用到. 3.编写服务器端程序,服务器端的程序,一般都是按以下步骤来编写的: -继承相关的接口类,并实现其纯虚函数 建立通信器,并初始化(包括设置通信协议,监听端口,线程池大小等) 创立适配器 创建代理接口并设置代理标识 增加代理到适配器 激活适配器 通信器启动并阻塞,等待处理客户端的请求 关闭通信器,释放相关资源

---利用ICE通信中间件构建网络应用程序开发框架 4.编写客户端程序,一般可以按照以下步骤: -建立通信器,并初始化(包括设置server的IP,协议,端口,连接超时时间,目标代理名等) -建立代理对象 -寻找server代理 -如代理存在,即可通过代理对象调用server上此代理类型所有的操作. -操作完毕,销毁通信器,释放相关资源 5.用ICE进行编程时应注意的问题: -client连接server时一定要注意设置超时时间,不然很容易导致网络阻塞 -在涉及到一些传递通信所需要的参数,如端口,IP,协议等的时候,这些参数应该从配置文件里读取,或者通过参数传递,不要进行硬编码.还有在C++里字符变量的类型应该用std::string,而不要用C语言风格的char[].以避免内存泄漏和指针越界. -在利用多线程进行异步程序开发时,要注意给共享资源加锁,以免导致数据被破坏. -我们利用C++进行ICE程序开发,因此在编写ICE的程序时,例如客户端建立连接

---利用ICE通信中间件构建网络应用程序开发框架 -我们用C++进行ICE程序开发,因此在编写ICE的程序时,例如客户端建立连接客户端时,应该写成一个类,这类至少要包括三个方法,初始化通信器,调用相关操作,销毁通信器.这样当项目组成员需要与服务器进行通信时,只需要实例化此类即可.提高了效率.而不用再自己去写ICE通信客户端. *代码见源程序 www.testnew.net