网站大量收购闲置独家精品文档,联系QQ:2885784924

冶金过程控制系统开发平台——进程通讯中间件开发-北京金属学会.doc

冶金过程控制系统开发平台——进程通讯中间件开发-北京金属学会.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
冶金过程控制系统开发平台——进程通讯中间件开发-北京金属学会

冶金过程控制系统开发平台——进程通讯中间件开发 李 亮 举、彭会军、李彦斌、周月杰 (北京首钢自动化信息技术有限公司自动化研究所,北京 100041) 摘要 在冶金过程控制系统中,计算机软件系统通常按照功能和作用范围的不同被划分为若干个子系统。这些子系统不但高度自治,而且通过通信网络连接在一起,响应全局系统的调度,共同完成统一的任务目标,从而形成一个分布式系统。在这个复杂的分布式系统中,无论是全局管理系统还是各功能子系统,又分别由几个甚至几十个进程共同组成,为了使这些分散的进程协调工作,解决分布式进程间通讯问题是至关重要的。本文围绕解决这一问题,描述了选择中间件技术、开发进程通讯中间件、基于Windows系统搭建分布式进程通讯系统的过程,并在篇尾讨论了异构环境下实现分布式进程通讯的问题。 关键词:进程通讯 中间件 分布式进程通讯 概述 一个优秀的冶金过程控制系统,可以为用户提供一个、有弹性、精细化的环境,帮助企业成本、交货、提高产品质量。。在不同进程之间传播或交换信息屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。中间件带给应用系统的,不只是开发的简便、开发周期的缩短,也减少了系统的维护、运行和管理的工作量,还减少了计算机总体费用的投入。 图1进程通讯系统图 进程通讯中间件的开发 基于标准API函数 在选择使用标准API函数之前我们曾经使用过基于COM+松散耦合事件(LCE)的进程通讯中间件,这种中间件在使用 Microsoft Visual Studio 2008 C++ 动态模板库(ATL)开发时效率很高,但是分布式系统部署时却遇到了非常棘手的问题。由于COM+通讯安全依赖于Windows操作系统的安全策略,在面对的多样的网络结构和不同硬件环境时,即使全部都使用Windows操作系统,仍然会因为系统版本的不同、域或工作组的不同等导致中间件工作异常,而网络和硬件的差异又不可能消除,因此这给维护和部署工作带来了很大的麻烦。所以,我们最终选择了使用Windows API函数,进行中间件开发,这样更容易解决在异构网络和硬件平台下解决通讯的问题,而无需受限于COM+技术。同时使用 API 函数也可以积累更多的经验,以便日后在非Windows操作系统环境中开发通讯中间件,为分布式进程通讯系统留出足够的可扩展空间。 进程通讯中间件设计 当一个进程与另一个进程通讯时,通常需要具备三个基本要素:第一,通讯对象识别,负责确定通讯双方的身份和权限;第二,数据传递,负责将调用参数和执行结果在通讯双方间传递;第三,时序机制,负责协调通讯过程中的时序控制。 因此,为了满足第一要素,在我们的设计中,每一个可以与其它进程进行通讯的进程,称为一个服务,每一个服务有一个固定的身份标识;为了满足第二个要素,我们定义了一个类库LServiceCell类库,用来标准化数据输入输出过程;为了满足第三个要素,我们为每一个通讯服务提供一组时序控制标识,它由一个服务互斥量、一个请求互斥量和两个信号量组成。图2 进程通讯时序图给出了,我们设计的进程通讯时序关系。 图2 进程通讯时序图 功能设计 正如中间件产生的初衷,为了减少程序设计的复杂性,因此,我们设计的进程通讯中间件接口也很简洁,它只有四个接口,分别是初始化接口、服务监听接口、服务响应接口和服务调用接口: 初始化接口:通过这个接口,进程可以动态声明自己的标识,以便识别对该服务的调用。函数格式为:long InitService(long index, char* strName); 其中index为身份识别码;strName 为服务名字符串;函数返回中给出接口调用状态。 服务监听接口:通过这个接口,进程可以进入事件等待状态,以便随时接受来自调用者的调用请求。函数格式为:long WaitApply(long index, LServicePars lspCalPars, DWORD dwMilliseconds = INFINITE ); 其中 index 为身份识别码;lspCalPars 为调用参数;dwMilliseconds 为调用超时参数;函数返回中给出接口调用状态。 服务调用接口:通过这个接口,进程可以发起对指定服务的调用请求,并从调用结构中直接得到所需的数据。函数格式为:long ApplyService(long index, LServicePars lspCalPars, LServicePars lspSvcPars, DWORD dwMilliseconds = REPLY_TIME_OUT); 其中 index 为身份识别码;lspCa

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档