架构设计专栏01-跨程序域通信
2012-08-02 12:51
183 查看
引子
我们知道每个进程都有独立的内存空间,两个不同进程的内存空间有相互的边界,是相互隔离的。一个进程不能直接访问另外一个进程的内存。如果要访问的话就涉及跨程序域通信。
跨程序域通信
在运行于不同进程中的对象建立通信,即为跨程序域通信。这种通信常见于分布式应用程序。要建立端到端之前的通信,需要了解通信流两端上的对象,低级别协议的宿主,应用程序编程接口,配置工具文件等。一般来说要实现跨程序域通信要传递可远程处理的对象。正常情况下某个程序中创建的对象只能在此程序中直接调用,如果要给其它程序域以外使用,则要经过一些特别的处理。程序域以外可以访问的对象即可远程处理的对象,可以使用代理在其应用程序域或上下文之外进行访问,也可以复制它们并且可以将这些副本传递到它们的应用程序域或上下文外。可远程处理的对象一种是通过引用传递,一种是通过值传递。
值封送(MBV,MashalByValue):对象被复制并从应用程序域传递。通过值传递的需要将对象序列化(实现ISerializable接口或者添加SerializableAttribute修饰通知系统自动序列化)。这种方式可以减少跨网络、进程和应用程序域边界的冗长而耗费资源的往返过程,非常高效。
引用封送(MBR,MashalByRefObject):为对象创建代理,用于客户端远程访问。通过引用传递的需要对象继承扩展MarshalByRefObject。传递时须成功通过上下文边界、应用程序边界,通过每个边界时会占用一定的处理时间。
实现方法
一、传值方式
1.Windows Api 中FindWindow找到窗口,然后SendMessage通信(适用于有Windows的场景)
2.Socket通信
3.数据序列化存储在文件,内存当中
二、传引用方式
1.创建代理对象实现+Remoting。传递的对象须从System.MarshalByRefObject类继承
2.WCF
3.命名管道
我们知道每个进程都有独立的内存空间,两个不同进程的内存空间有相互的边界,是相互隔离的。一个进程不能直接访问另外一个进程的内存。如果要访问的话就涉及跨程序域通信。
跨程序域通信
在运行于不同进程中的对象建立通信,即为跨程序域通信。这种通信常见于分布式应用程序。要建立端到端之前的通信,需要了解通信流两端上的对象,低级别协议的宿主,应用程序编程接口,配置工具文件等。一般来说要实现跨程序域通信要传递可远程处理的对象。正常情况下某个程序中创建的对象只能在此程序中直接调用,如果要给其它程序域以外使用,则要经过一些特别的处理。程序域以外可以访问的对象即可远程处理的对象,可以使用代理在其应用程序域或上下文之外进行访问,也可以复制它们并且可以将这些副本传递到它们的应用程序域或上下文外。可远程处理的对象一种是通过引用传递,一种是通过值传递。
值封送(MBV,MashalByValue):对象被复制并从应用程序域传递。通过值传递的需要将对象序列化(实现ISerializable接口或者添加SerializableAttribute修饰通知系统自动序列化)。这种方式可以减少跨网络、进程和应用程序域边界的冗长而耗费资源的往返过程,非常高效。
引用封送(MBR,MashalByRefObject):为对象创建代理,用于客户端远程访问。通过引用传递的需要对象继承扩展MarshalByRefObject。传递时须成功通过上下文边界、应用程序边界,通过每个边界时会占用一定的处理时间。
实现方法
一、传值方式
1.Windows Api 中FindWindow找到窗口,然后SendMessage通信(适用于有Windows的场景)
2.Socket通信
3.数据序列化存储在文件,内存当中
二、传引用方式
1.创建代理对象实现+Remoting。传递的对象须从System.MarshalByRefObject类继承
2.WCF
3.命名管道
相关文章推荐
- 架构设计:系统间通信(6)——IO通信模型和Netty 上篇
- 【MPI学习3】MPI并行程序设计模式:不同通信模式MPI并行程序的设计
- 架构设计:系统间通信——MQ:消息协议
- Swing程序最佳架构设计—以业务对象为中心的MVC模式
- 架构设计:系统间通信(11)——RPC实例Apache Thrift 上篇
- 【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - 信号量通信机制 分类: Linux --- 应用程序设计 2014-11-13 11:08 70人阅读 评论(0) 收藏
- 由一个简单的客户端间TCP/UDP通信程序引发的关于设计模式的思考
- 架构设计:系统间通信(1)——概述从“聊天”开始上篇
- 架构设计:系统间通信(15)——服务治理与Dubbo 上篇
- 架构设计:系统间通信(9)——通信管理与RMI 下篇
- 架构设计:系统间通信(19)——MQ:消息协议(上)
- 架构设计:系统间通信(35)——被神化的ESB(下)
- 网游服务器通信架构的设计
- 一款SNS战略休闲游戏开发笔记01——分布式系统逻辑架构设计的补充与讨论
- web架构设计经验分享 (转自yizhu2000的专栏 )
- 博客园博客程序架构设计图初稿
- 架构设计:系统间通信(34)——被神化的ESB(上)
- 【MPI学习4】MPI并行程序设计模式:非阻塞通信MPI程序设计
- Xcode-程序开发设计-01UIKit 框架
- 安卓TCP通信程序客户端设计