C#Remoting详解远程对象.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C#Remoting详解远程对象.doc

近来在项目中 因为要涉及到 客户端和服务端的数据交互; 我们的项目中 的通讯组件 是我们的项目经理(彬哥)自己写的; 我有点看不懂,彬哥说要弄懂这块代码,要学会 Rmoting; 于是在 网上百度 关于 C# 的 Remoting代码; 最后找到了代码,并且在代码上加上了自己对代码的理解并且验证成功!! 我们先看 程序实现的功能: 客户端程序 和 服务端程序;(两个程序) 在服务端存在一个 单例对象, 客户端 从远程服务端获得了 这个对象,并且修改了 这个对象的值,结果 服务端 的这个值 被发现改变了…. ——即,客户端 和 服务端 两个程序 ,在同时操作了 一个内存对象; 启动 服务端,点击 按钮:对象值是 “哈哈” 启动客户端, “获取远程对象” 得到值 “哈哈” 点击“修改远程对象” 再来获取远程对象 得到“花开花落” ——“花开花落”有没有 到达服务端,我们查看服务端的 值: ——即,达到了我们想要远程对象的目的!! System.MarshalByRefObject 假如一个数据被序列化传递到了 客户端——那么,客户端接收到的,就是 一个 拷贝的副本; ——这时 修改客户端的对象的值,服务端将不会被影响; (序列化的过程将 对象转换了一种格式,便于传输,到了客户端之后,再将便于传输的格式还原,这时还原的 对象和 服务端的对象 只是两个一摸一样的 不同对象); (传输的是实际数据,所以要求传输对象[Serializable]) 假如选择后者,那么 服务端的对象 将会 将这个对象的 引用(指针) 序列化传输到客户端,客户端反序列化得到了这个 指针,这个指针指向的是 服务端的对象; 所以客户端修改这个对象将会 修改到 服务端 ——当然,Remoting 的方式绝不是我说的 “远程指针”这么简单,我的这种说法只是便于理解; (传输的是 指针,所以和传输对象是不是 [Serializable] 没有关系) 验证: 为了验证我做了以下实验: 这是服务端和客户端传递数据的实体类 [Serializable] public class TestModel : System.MarshalByRefObject { public string Name { get; set; } } [Serializable] public class TestModel : System.MarshalByRefObject { public string Name { get; set; } } 时,发现 客户端 的修改会影响 服务端(即 服务端和客户端公用的一个对象) [Serializable] public class TestModel // : System.MarshalByRefObject { public string Name { get; set; } } 时,客户端修改之后,弹出的信息是“花开花落”,服务端却 依然是 “哈哈”(即,客户端只是得到了一个副本,客户端的修改没有影响服务端) //[Serializable] public class TestModel // : System.MarshalByRefObject { public string Name { get; set; } } 时,程序报异常,说,传递的对象必须可以序列化之类; 好了,其余的都不再多说,我就直接将程序的源代码 嵌入到这个 Word文档中, 下载该文档, 点击 下面的 文件 Remoting.rar,即可提取出程序的源码: 下面,还是将 程序的源码堪出来(不过,很难看,还是下载该文档比较好): 客户端和服务端的 公共类(服务端和客户端都必须有的类) using System; using System.Collections.Generic; using System.Text; namespace ClassLibrary { //注意,一个普通的类如果想使其能够提供远程服务,必须继承 System.MarshalByRefObject //Form 类则已经继承了该类 //程序集跟新以后,提供服务的服务器端和需要远程服务的客户端,由于添加了对其的引用,必须先运行,重新装载 [Serializable] public class Class1 : System.MarshalByRefObject { //定义一个方法,供客户端调用 //该方法返回一个字符串给调用它的客户端程

文档评论(0)

dmz158 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档