手机端
or

欢迎您加入我爱方案网QQ群

1.智能产品外包服务群(311606115)
2.嵌入式项目开发群(491609563)

基于Web_CORBA信息家电家庭网关的设计与实现

朱珠; 刘宏| Web_CORBA,信息家电,家庭网关,CGI| 2010-11-29
1112 收藏
分享到: 
每日精选
热门文章
热门方案

【中心议题】

  • 提出了“Web_CORBA家庭网关”的设计构想
  • 以信息家电冰箱为例给出了具体的设计过程

【解决方案】

  • 对象接口按OMG接口定义语言IDL来定义
  • 采用C++语言编写CORBA客户端和服务器端程序

1引言

随着Internet的普及与网络技术的发展以及各种信息家电的出现,家居生活需要一个崭新的控制与管理平台。在此平台中,计算机、音频、视频设备以及其他各种家用电器和自动子系统连接在一起,实现家居资源的共享与管理。人们可以通过Internet随时随地轻松的管理与控制家居电器(预设或完成各种操作,配置参数等)。嵌入式家庭网关是整个家居网络的核心所在,用以连接信息家电网络和Internet外部网络,完成内外网络间不同通信协议的转换以及家庭内各信息家电间的智能协作,实现对家电设备的智能管理和远程控制。CORBA是由700多家公司共同制定的分布式计算技术,具有很好的开放性和连续性,不受特定的平台和特定语言的限制,正是由于CORBA的这些特点,我们可以用其来实现不同家庭网络技术的无缝连接,实现家庭网络与外部网络的连接。本文提出了一种基于WEB-CORBA的新型信息家电家庭网关的设计方案。

2 CORBA简介

公共对象请求代理架构(common object request broker architecture,CORBA)是对象管理组织(OMG)以对象请求代理(object request broker,ORB)为核心制定的分布式计算标准。ORB负责找到可以实现请求的对象,设置参数,引用方法,并从客户端返回结果。CORBA使用接口定义语言IDL指定接口实现分布式对象之间的透明通信,允许客户端程序在分布式对象上的操作引用(IDL定义的),且具有位置无关性,远程服务的编程语言无关性,操作系统无关性以及硬件平台(32 bit or 64 bit word size)及传输协议(TCP/IP,IPX,FDDI,ATM,...)无关性。CORBA规范充分利用了现今软件技术发展最新成果,在基于网络的分布式应用环境下实现应用软件的集成,使得面向对象的软件在分布、异构环境下实现可重用、可移植和互操作。

 

3家庭网关的功能

家庭网关是基于网络的智能家居系统的核心,它类似于一个庞大的计算机系统,所有的家庭设备都连接在上面,受它的集中控制。实质上,它是家用调制解调器和路由器的结合,并引入了对新型服务的动态传递和系统的远距离管理与升级功能。总体而言,网关要起到三个功能:

(1)内外网转换功能,作为所有外部接入网连接到家庭内部,同时将家庭内部网络连接到外部的一种物理接口;

(2)适配功能,家庭网络的复杂性使得内部可能存在各种不同通信协议,家庭网关必须具有适配的功能,将来自Internet的宽带信息发送给相应的设备,同时也可以实现设备间的通信及分工合作;

(3)管理功能,家庭网关是运行家电管理软件,使住宅用户可以获得各种家庭服务(包括现有的服务和未来可能出现的服务)的平台。能将使用不同通信协议的家用电器都接入到家庭网络

,并统一管理。

4基于CORBAWEB服务的家庭网关体系结构

由于CORBA所具有的跨平台和跨语言的特性,所以在异构环境下易于集成和开发分布式WEB应用。CORBA实现了服务对象的位置透明性、实现透明性、执行状态透明性和通信机制透明性,只要按照IDL接口描述语言对服务对象所提供的服务进行描述,客户应用和服务对象之间就可以透明的进行交互。可将WEBCORBA结合起来,图一实现了基于CORBAWeb服务的家庭网关。

 

以信息家电空调为例。假设要对空调设置温度,首先,HTML页面上建立一个要执行的服务器端CGI脚本的映射。这个CGI脚本同时也是一个CORBA客户端。在此脚本中嵌入温度设置按钮。通过CGI接口确认将被调用的CORBA客户端后,CORBA客户端通过访问CORBA Server来处理请求。客户机ORB核心通过网络传送给与服务器应用程序相链接的服务器ORB核心,服务器ORB核心将这些请求分配给对象适配器(POA),由它产生目标对象。对象适配器进一步将请求分配给空调的伺服程序,由伺服程序执行温度设置的请求后,返回结果。

CORBA客户端在HTTP服务器端汇总处理结果。CGI脚本负责动态产生一个HTML页面作为发送到HTTP服务器的输出结果,告诉客户是否操作成功。

5 Web_CORBA家庭网关的具体实现

5.1信息家电的IDL接口定义

CORBA,对象接口是按OMG接口定义语言IDL来定义的。与C++JAVA不同,IDL不是编程语言,所以对象和应用程序不能用IDL来实现。IDL唯一的目的是允许对象接口以与任何具体的编程语言无关的形式来定义这些接口。这种考虑允许应用程序以不同的编程语言来实现以便于互操作。IDL与编程语言无关,这一点是CORBA支持异构系统和独立开发的应用程序集成的关键,也是进行CORBA程序开发的首要工作。以下是作者以信息家电空调为例给出的IDL定义:

module InformationAppliance{

...

interface Airconditioner{

struct AirconStatus{

readonly attribute string factory;

readonly attribute long power;

short temperature;

enum mode{auto,cool,heat,dry};

enum fanweep{Vsweep,Hsweep};

enum windspeed{low,normal,high};

 

……

}

any getinformation(in string factory,in long power);

void SetTemp(in AirconStatus temperature)

raises(Badtemp);

void SetWindspeed(in AirconStatus

windspeed);

void SetFanweep(in AirconStatus fanweep);

void SetMode(in AirconStatus mode);

……

void openAircon();

void closeAircon();

…….

}

 

IDL将被映射为某种程序设计语言如C++Java,并且分成两分,在客户方叫IDL Stub,在服务器方叫IDL Skeleton。两者可以采用不同的语言。服务器方在Skeleton的基础上编写对象实现(Object Implementation),而客户方要访问服务器对象上的方法,则要通过客户桩。而双方又要通过而ORB总线通信。

5.2 CORBA程序的实现

本文采用C++语言编写CORBA客户端和服务器端程序。CORBA客户端也就是CGI脚本程序需在工程中加入客户端存根程序。本文采用POST方法将客户设置的温度利用CGI程序提交给服务器:

<html>

......

<label>//温度设置

<input name="temperature"type="text"value="26"size="6"/>

<input type="submit"name="submit"value="提交"/>

</lable>

 

......

OnAction//事件代码:

AnsiStringT=requet->ContentFields->values[AnsiString("tem-

perature")];

Response->content=s;

Response->SendResponse;

……

另一方面CORBA客户端还要对ORB初始化,绑定到CORBA服务器对象。然后等待对对象引用方法的调用。将获取的从网页传来的数据,作为参数传递给CORBA对象的方法。

module CORBA{//PIDL

typedef string ORBid;

tpedef sequence<string>arg_list;

interface ORB;

ORB ORB_init(inout arg_list argv,in ORBid orb_identifier);

//...

};

 

服务器端程序的实现需要执行的基本步骤如下:初始化Visibroker ORB>创建和设置POA>激活POA管理器一>激活对象一>等待客户请求。最后启动服务器端及客户端程序, 远程Web控制界面见图3

6结束语

21世纪是信息化、网络化和知识经济的时代。随着以计算机技术为核心的信息技术,特别是数字技术、多媒体技术和网络技术的飞速发展和普及应用,网络化正在向非计算机领域扩展。通信、计算机与家用电器产业的进一步融合,使得数字化、智能化和网络化的信息家电得以快速发展,信息家电产业将成为社会一大消费热点。

点赞

深圳市中电网络技术有限公司 Copyright© www.52solution.com 粤ICP备10202284号