架构设计专栏01-跨程序域通信
来源:互联网 发布:linux命令chm 编辑:程序博客网 时间:2024/05/17 06:13
引子
我们知道每个进程都有独立的内存空间,两个不同进程的内存空间有相互的边界,是相互隔离的。一个进程不能直接访问另外一个进程的内存。如果要访问的话就涉及跨程序域通信。
跨程序域通信
在运行于不同进程中的对象建立通信,即为跨程序域通信。这种通信常见于分布式应用程序。要建立端到端之前的通信,需要了解通信流两端上的对象,低级别协议的宿主,应用程序编程接口,配置工具文件等。一般来说要实现跨程序域通信要传递可远程处理的对象。正常情况下某个程序中创建的对象只能在此程序中直接调用,如果要给其它程序域以外使用,则要经过一些特别的处理。程序域以外可以访问的对象即可远程处理的对象,可以使用代理在其应用程序域或上下文之外进行访问,也可以复制它们并且可以将这些副本传递到它们的应用程序域或上下文外。可远程处理的对象一种是通过引用传递,一种是通过值传递。
值封送(MBV,MashalByValue):对象被复制并从应用程序域传递。通过值传递的需要将对象序列化(实现ISerializable接口或者添加SerializableAttribute修饰通知系统自动序列化)。这种方式可以减少跨网络、进程和应用程序域边界的冗长而耗费资源的往返过程,非常高效。
引用封送(MBR,MashalByRefObject):为对象创建代理,用于客户端远程访问。通过引用传递的需要对象继承扩展MarshalByRefObject。传递时须成功通过上下文边界、应用程序边界,通过每个边界时会占用一定的处理时间。
实现方法
一、传值方式
1.Windows Api 中FindWindow找到窗口,然后SendMessage通信(适用于有Windows的场景)
2.Socket通信
3.数据序列化存储在文件,内存当中
二、传引用方式
1.创建代理对象实现+Remoting。传递的对象须从System.MarshalByRefObject类继承
2.WCF
3.命名管道
- 架构设计专栏01-跨程序域通信
- 架构设计专栏00--目录
- 异步通信架构设计
- 对架构设计的想法 - allun的学习专栏
- 架构设计检查表(转载自洋葱的专栏)
- 网游服务器通信架构设计
- 网游服务器通信架构的设计
- 网游服务器通信架构的设计
- 网游服务器通信架构的设计
- 网游服务器通信架构的设计
- 网游服务器通信架构的设计
- 网游服务器通信架构的设计
- 实时通信技术的架构设计
- NET程序架构的设计
- NET程序架构的设计
- 关于程序架构落地设计
- 数据库设计专栏
- 整理几个关于设计模式、架构的博客专栏和文章
- 计算几何求公式
- iPhone操作队列 VS Java线程池
- C/C++ 文件输入输出
- RHEL5无人值守安装
- UVa 311 - Packets
- 架构设计专栏01-跨程序域通信
- Struts2.0中的Cookie(实现自动登录)
- 劳教人员通过仪器戒赌 出狱后称看到扑克想撕
- 有情有义-----《鹿鼎记》刷完
- mysql管理
- 关于git 多人合作编程 实战记录
- Android 字体相关知识汇总
- 五种JSP页面跳转方法详解
- Emacs 编辑环境,第 2 部分: 学习 Emacs 的基本模式和编辑特性