CN103218231A - 一种解决x64位操作系统环境访问32位控件的通用方法 - Google Patents

一种解决x64位操作系统环境访问32位控件的通用方法 Download PDF

Info

Publication number
CN103218231A
CN103218231A CN2013101409463A CN201310140946A CN103218231A CN 103218231 A CN103218231 A CN 103218231A CN 2013101409463 A CN2013101409463 A CN 2013101409463A CN 201310140946 A CN201310140946 A CN 201310140946A CN 103218231 A CN103218231 A CN 103218231A
Authority
CN
China
Prior art keywords
remote object
server end
bit
service
client
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN2013101409463A
Other languages
English (en)
Inventor
贺作华
杜晓东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Group Shandong General Software Co Ltd
Original Assignee
Inspur Group Shandong General Software Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Inspur Group Shandong General Software Co Ltd filed Critical Inspur Group Shandong General Software Co Ltd
Priority to CN2013101409463A priority Critical patent/CN103218231A/zh
Publication of CN103218231A publication Critical patent/CN103218231A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明提供一种解决x64位操作系统环境访问32位控件的通用方法,系统提供调用组件,调用者可以自定义自己的远程对象,通过客户端调用接口完成远程对象的自动注册,其中服务器端以Windows服务作为常驻进程通过Channel来保持与客户端的通信。调用方使用该方案无需编写Remote服务器端代码,通过简单的客户端调用便可实现x64位进程中调用32位控件的需求。

Description

一种解决x64位操作系统环境访问32位控件的通用方法
技术领域
本发明涉及一种计算机应用技术领域, 具体地说是采用Remoting的分布式处理方式和Windows服务实现不同应用程序域间通信,在异构系统中解决了x64位进程调用32位进程组件的问题,或是一种解决x64位操作系统环境访问32位控件的通用方法。
背景技术
随着企业信息化的发展,企业间无论硬件环境还是软件环境都趋向于多样化,操作系统x64位环境也越来越普遍,但x64位进程下访问32位控件在我们ERP系统中应用场景也越来越广泛。通用的跨进程通信方式在Windows服务中注册32位远程对象来完成32位进程组件的调用方法就是在此情况下实现,用于满足不同企业复杂软硬件环境的需要。
发明内容
本发明的目的是提供一种解决x64位操作系统环境访问32位控件的通用方法。
本发明的目的是按以下方式实现的,系统提供调用组件,调用者自定义自己的远程对象,通过客户端调用接口完成远程对象的自动注册,其中服务器端以Windows服务作为常驻进程通过Channel来保持与客户端的通信,具体内容如下:
1)基于Remoting 通道通信机制,将服务端封装为32位Windows服务作为常驻进程;
2)将Remote客户端封装为泛型类,调用方可灵活定义远程对象;
3)提供远程对象配置的公共方法,调用方可将自定义的远程对象信息写入制定xml文件中,由服务端统一解析;
4) Remoting中服务器端和客户端都必须通过通道来传递消息,以获得远程对象,具体步骤如下:
1)创建远程对象:
a)  由于Remoting传递的对象是以引用的方式,因此所传递的远程对象类必须继承MarshalByRefObject;
b)  在此远程对象中的公共方法中将定义对32位OCX控件的访问操作;
2)创建服务器端:
a)创建32位Windows服务作为服务端宿主进程;
b)注册TCP通道;
c)注册远程对象到通道。采用SingleTon模式;
3)封装客户端调用;
a)  注册TCP通道;
b) 获取远程对象,采用WellKnown激活模式,要获得服务器端的远程对象,可通过Activator进程的GetObject()方法来获得,其中参数第一个是远程对象的类型,第二个参数就是服务器端的uri,端口必须和服务器端的端口一致,后面则是服务器定义的远程对象服务名。
本发明的优异效果: 
1)面向ERP软件开发人员提供了x64位操作系统中x64位进程调用32位ocx组件的可行方案;
2)调用方使用该方案无需编写Remote服务器端代码,通过简单的客户端调用便可实现x64位进程中调用32位控件的需求;
3)面向ERP软件开发人员提供了x64位操作系统中x64位进程调用32位ocx组件的可行方案;
4)调用方使用该方案无需编写Remote服务器端代码,通过简单的客户端调用便可实现x64位进程中调用32位控件的需求。
具体实施方式
本发明的目的是通过Remoting的通道机制结合32位的Windows服务,解决了x64操作系统下访问32位OCX控件的问题。
Remoting中服务器端和客户端都必须通过通道来传递消息,以获得远程对象。以下以注册TcpChannel为例具体步骤如下:
1)创建远程对象:
a)由于Remoting传递的对象是以引用的方式,因此所传递的远程对象类必须继承MarshalByRefObject
b)在此远程对象中的公共方法中将定义对32位OCX控件的访问操作
2)创建服务器端:
Aa)创建32位Windows服务作为服务端宿主进程;
b)注册TCP通道;
c)注册远程对象到通道。采用SingleTon模式
3)封装客户端调用
a)注册TCP通道;
b)获取远程对象。采用WellKnown激活模式。要获得服务器端的远程对象,可通过Activator进程的GetObject()方法来获得。其中参数第一个是远程对象的类型。第二个参数就是服务器端的uri。端口必须和服务器端的端口一致,后面则是服务器定义的远程对象服务名。
实施例
1. 开发人员通过在软件实现时调用该组件,实现相应的功能;
2.  调用方法如下:
(1)调用CreateRemoteObj()方法将远程对象信息写入到配置文件
(2)调用者自定义远程访问对象,需要继承自MarshalByRefObject接口
(3)客户端调用说明:创建 RemoteClient< T >()对象,然后调用对象方法GetRemoteObj(…)返回自定义远程对象实体, 根据需要调用远程对象的相应方法。
主要程序组件:
1、远程对象配置文件
<?xml version="1.0" encoding="utf-8" ?>
<RemoteObjectList>
  <RemoteObj enable="1">
    <!--远程对象名称-->
    <ObjTypeName>
    </ObjTypeName>
    <!--服务端uri-->
    <ServerUri>
    </ServerUri>
    <!--远程对象uri-->
    <ObjUri> 
</ObjUri>
<!—通信端口-->
<ChannelPort>
</ChannelPort>
  </RemoteObj>
</RemoteObjectList>
公共方法:Public void CreateRemoteObj(string objtypename,string objuri,string serveruri)
2、服务器端(读取配置文件节点注册远程对象)
public static void Startup()
{
TcpServerChannel chnl = new TcpServerChannel(port);
ChannelServices.RegisterChannel(chnl, false);
emotingConfiguration.RegisterWellKnownServiceType(Type.GetType(objTypeName), objuri, WellKnownObjectMode.Singleton);
bRun = true;
while(bRun){ Thread.Sleep(1000); } 
}
protected override void OnStop()
{ bRun = false; }
3.  客户端泛型类及公共方法:
Public Class RemoteClient< T >
{
Public T GetRemoteObj(string channelName, string objTypeName, string serverUri)
{
TcpClientChannel chnl = new TcpClientChannel(channelName, new BinaryClientFormatterSinkProvider());
IChannel[] channels = ChannelServices.RegisteredChannels;
foreach (IChannel chn in channels)
{
ChannelServices.UnregisterChannel(chn);
}
ChannelServices.RegisterChannel(chnl, false);
T obj= (T)Activator.GetObject(Type.GetType(objTypeName),serverUri);
Return obj;
}
}。
 实施例:
   本发明的方法已经成功试用于浪潮eHR产品的WinForm版本和Web版本的打印功能中,并在实际应用中发挥了良好的效果。本发明可使调用方在x64进程中灵活的调用32位ocx控件,增强了ERP软件在windows系统下的兼容性,具有良好的应用前景。
除说明书所述的技术特征外,均为本专业技术人员的已知技术。

Claims (1)

1.一种解决x64位操作系统环境访问32位控件的通用方法, 其特征在于系统提供调用组件,调用者自定义自己的远程对象,通过客户端调用接口完成远程对象的自动注册,其中服务器端以Windows服务作为常驻进程通过Channel来保持与客户端的通信,具体内容如下:
a)基于Remoting 通道通信机制,将服务端封装为32位Windows服务作为常驻进程;
b)将Remote客户端封装为泛型类,调用方可灵活定义远程对象;
c)提供远程对象配置的公共方法,调用方可将自定义的远程对象信息写入制定xml文件中,由服务端统一解析;
d) Remoting中服务器端和客户端都必须通过通道来传递消息,以获得远程对象,具体步骤如下:
1)创建远程对象:
a)由于Remoting传递的对象是以引用的方式,因此所传递的远程对象类必须继承MarshalByRefObject;
b)在此远程对象中的公共方法中将定义对32位OCX控件的访问操作;
2)创建服务器端:
a)创建32位Windows服务作为服务端宿主进程;
b)注册TCP通道;
c)注册远程对象到通道,采用SingleTon模式;
3)封装客户端调用;
a)注册TCP通道;
b)获取远程对象,采用WellKnown激活模式,要获得服务器端的远程对象,可通过Activator进程的GetObject()方法来获得,其中参数第一个是远程对象的类型,第二个参数就是服务器端的uri,端口必须和服务器端的端口一致,后面则是服务器定义的远程对象服务名。
CN2013101409463A 2013-04-23 2013-04-23 一种解决x64位操作系统环境访问32位控件的通用方法 Pending CN103218231A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2013101409463A CN103218231A (zh) 2013-04-23 2013-04-23 一种解决x64位操作系统环境访问32位控件的通用方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2013101409463A CN103218231A (zh) 2013-04-23 2013-04-23 一种解决x64位操作系统环境访问32位控件的通用方法

Publications (1)

Publication Number Publication Date
CN103218231A true CN103218231A (zh) 2013-07-24

Family

ID=48816059

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2013101409463A Pending CN103218231A (zh) 2013-04-23 2013-04-23 一种解决x64位操作系统环境访问32位控件的通用方法

Country Status (1)

Country Link
CN (1) CN103218231A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105094870A (zh) * 2014-05-13 2015-11-25 中标软件有限公司 64位Linux操作系统兼容32位应用软件的方法
CN111026452A (zh) * 2019-11-20 2020-04-17 北京明朝万达科技股份有限公司 一种远程32位进程注入64位进程的方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8170123B1 (en) * 2008-04-15 2012-05-01 Desktone, Inc. Media acceleration for virtual computing services
CN103001952A (zh) * 2012-11-16 2013-03-27 漳州科能电器有限公司 一种电网加密机共享访问的系统及参数更新方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8170123B1 (en) * 2008-04-15 2012-05-01 Desktone, Inc. Media acceleration for virtual computing services
CN103001952A (zh) * 2012-11-16 2013-03-27 漳州科能电器有限公司 一种电网加密机共享访问的系统及参数更新方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
马波: "基于.NET Remoting分布式技术改进投资银行风险管理系统性能的研究与应用", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105094870A (zh) * 2014-05-13 2015-11-25 中标软件有限公司 64位Linux操作系统兼容32位应用软件的方法
CN111026452A (zh) * 2019-11-20 2020-04-17 北京明朝万达科技股份有限公司 一种远程32位进程注入64位进程的方法及系统
CN111026452B (zh) * 2019-11-20 2023-10-20 北京明朝万达科技股份有限公司 一种远程32位进程注入64位进程的方法及系统

Similar Documents

Publication Publication Date Title
US11728992B2 (en) Cryptlet binding key graph
US10467321B2 (en) Systems and methods for dynamic C# serialization
JP4729262B2 (ja) ロケーション・アウェアネスのアーキテクチャとシステム
US9122651B1 (en) Computer system to support failover in an event stream processing system
US8966082B2 (en) Virtual machine address management
US10162727B2 (en) Activity tracing diagnostic systems and methods
US7533368B1 (en) User interface driven by dynamic state changes
CN103150154B (zh) 一种应用程序插件的实现方法及装置
US10303529B2 (en) Protocol for communication of data structures
CN103747004A (zh) 物联网平台通信协议的实现方法
US7774405B2 (en) Coordination of set enumeration information between independent agents
CN109547243B (zh) 一种基于dds的跨网段通信方法
CN104935660A (zh) 一种云程序开发运行系统、方法及装置
CN103399735A (zh) 远程函数调用接口中间层开发方法
CN103218231A (zh) 一种解决x64位操作系统环境访问32位控件的通用方法
CN101246564A (zh) 一种基于Web Service和以XML为资产定义的资产管理系统
US11194616B2 (en) Method, apparatus and system for simultaneously transmitting or receiving multiple managed objects
Dave et al. Ponte message broker bridge configuration using mqtt and coap protocol for interoperability of IoT
CN106844156A (zh) 智能建筑综合管理平台系统中wcf通信消息拦截方法
CN113326033B (zh) 一种带有多种语言API的key-value存储系统
JP5165234B2 (ja) ジャバ言語におけるメソッド参照のサポート
CN106341293B (zh) 一种信息系统接入企业服务总线的方法及装置
WO2011041740A1 (en) System and method for a thin-client terminal system with a local screen buffer using a serial bus
KR20150129987A (ko) 이기종 장치의 데이터 수집을 위한 미들웨어 간 인터페이스 장치 및 방법
Fang et al. Design of real-time distributed system using DDS

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20130724

WD01 Invention patent application deemed withdrawn after publication