社区
C#
帖子详情
如何对远程对象进行本地访问
babysloth
2004-02-02 02:13:39
通过RemotingServices.Marshal可以为一个对象注册一个URI,
供远程或者跨AppDomain通过代理对象访问。有没有办法根据
URI进行本地访问呢(不通过代理对象,不进行参数Marhsal)?
谢谢。
...全文
306
27
打赏
收藏
如何对远程对象进行本地访问
通过RemotingServices.Marshal可以为一个对象注册一个URI, 供远程或者跨AppDomain通过代理对象访问。有没有办法根据 URI进行本地访问呢(不通过代理对象,不进行参数Marhsal)? 谢谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
27 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
elite2018
2004-02-03
打赏
举报
回复
同意楼上, 关注!!
babysloth
2004-02-03
打赏
举报
回复
2 ajex
多谢。按那个意思,意味着代理和对象实现都在本地时,即使使用远程访问,也不会进行serialization产生requestMessage?这个得验证一下。
jimmyzhang
2004-02-03
打赏
举报
回复
remoting的目的就是访问远程对象.
如果在本机上,直接用本地啊,这样性能可能會好一些
即使达到了不serialization,我觉得意义也不大.
別可以到ms社區里面找找看,應有這方面回答的,
噯卟釋手
2004-02-03
打赏
举报
回复
up~~~~~~~~~~~~~`
googman
2004-02-03
打赏
举报
回复
接上
persist其实就是远程对象,但在这里我们丝毫感觉不到他是,
因为得到它的方法是bcHome.GetBSO("DomainX.BusinessComponents.ShippersBSO");
那么bcHome又是什么呢?它其实也是一个远程对象,只不过它提供了对其他应用级的远程
对象的统一管理的功能。
当然这里所写的紧紧是客户端代码而已,对于这个模型,还需要服务端的部署,
和服务端应用程序的支持。
googman
2004-02-03
打赏
举报
回复
在我给公司搭建的与领域无关的企业应用开发核心程序里
对于remoting我就做到了远程对象的位置透明性,
即把远程对象做本地化调用,减轻了普通程序员(可能不清楚.net原理)在
理解remoting机制上觉得困难的问题。
请看一下调用代码:
BusinessComponentsRuntimeHome bcHome=new BusinessComponentsRuntimeHome();
IPersist persist=(IPersist)bcHome.GetBSO("DomainX.BusinessComponents.ShippersBSO");
if (persist!=null)
persist.Save(this.shippers);
lyhold
2004-02-03
打赏
举报
回复
关注!!
turnmissile
2004-02-03
打赏
举报
回复
Remoting的作用就是产生一个远程调用的借口,所有remote object上的调用都可以直接写成本地调用的方式_RO.SomeCall().但是事实上这些操作的具体位置是在远端上的,本地只是对这个remote object上一个函数的调用。如果这个调用被实现为同步的,则会等到该远程调用结束,然后接受返回值,如果这个调用是不同步的,则直接返回。
至于在没有code的情况下,希望通过remoting实现本地调用,似乎是不可能的。
我做过测试,即使你拥有远端对象的dll,而不是仅仅有一个interface,你还是不能实现本地调用,除非你在本地重新new一个新的object,调用这个object的method.这样做似乎比较麻烦,但肯定是可行的。
babysloth
2004-02-03
打赏
举报
回复
2 googman
您的意思是自己在remoting的uri方式外面再包装一层,是吧?可行:-)只是想看看有没有比较简单的方式。不过这样也足够了。多谢!
moznan
2004-02-03
打赏
举报
回复
使用remoting,在局域网内,使用TCP协议,访问本机和局域网内其他机器是一样的,对象不需要序列化
peng_dw
2004-02-03
打赏
举报
回复
在wrox的红宝书中介绍过两种办法:一种是在iis中设置时,选中目录浏览,在客户端就可以通过uri访问,但是我试过了,好象不行;
另一种办法是在服务器端将文件转换成流,传送到客户端内存中运行。
1979xt
2004-02-02
打赏
举报
回复
学习
ajex
2004-02-02
打赏
举报
回复
哪种方式active,只是对远程对象的实例的生存周期不同,而非serialization的不同.
elite2018
2004-02-02
打赏
举报
回复
In Remoting , client-actived Techique is likely to match your Demand
ajex
2004-02-02
打赏
举报
回复
在MS的网站上找到:
通过从 MarshalByRefObject 导出对象,您可以使任一对象变为远程对象。当某个客户端激活一个远程对象时,它将接收到该远程对象的代理。对该代理的所有操作都被适当地重新定向,使远程处理基础结构能够正确截取和转发调用。尽管这种重新定向对性能有一些影响,但 JIT 编译器和执行引擎 (EE) 已经优化,可以在代理和远程对象驻留在同一个应用程序域中时,防止不必要的性能损失。如果代理和远程对象不在同一个应用程序域中,则堆栈中的所有方法调用参数会被转换为消息并被传输到远程应用程序域,这些消息将在该远程应用程序域中被转换为原来的堆栈帧,同时该方法调用也会被调用。从方法调用中返回结果时也使用同一过程。
在代理和远程对象驻留在同一个应用程序域中时,MS已经作了优化,是不是说可以不经过serialization?
babysloth
2004-02-02
打赏
举报
回复
2 ajex
不是需要new一个呀,而是已经new出来了,维护着若干的状态,需要随时通过URI来获取这个对象
速马
2004-02-02
打赏
举报
回复
还是不明白楼主的意图...
COM,COM+的管理也很方便啊
ajex
2004-02-02
打赏
举报
回复
实在不行就自定义一个类,判断url是不是本地,如果是本地就直接new一个,如果不是Activator.GetObject(......).
呵呵.
babysloth
2004-02-02
打赏
举报
回复
因为要做到组件的位置透明管理呀,呵呵。管理组件的时候,希望统一地通过一个URI来管理组件,而这些组件有的在本机,有的在远程。在本地的组件,有时候希望能在同一appdomain中访问,获得高效率。
ajex
2004-02-02
打赏
举报
回复
我觉得remoting的目的就是访问远程对象.
如果在本机上,干嘛不直接引用.直接用.何必用remoting呢,这样性能不是最好吗?
即使达到了不serialization,我觉得意义也不大.等待高手来解答.
加载更多回复(7)
用 Java
访问
Domino 的
对象
(一)
使用 Java 可以
访问
Domino 中的
对象
,如数据库、视图、文档等。本文简述了用 Java
访问
Domino
对象
的基本编程方法。本文中的内容主要是根据 Lotus Domino/Notes 6 编写的,使用 R5 时会略有不同。 Java 对 Domino
对象
的
访问
是通过调用 lotus.domino 包来
进行
的。在运行环境中,lotus.domino 包中的接口是通过两个包来实现
代理模式——
远程
代理(一)
代理模式定义 为另一个
对象
提供一个替身或占位符以控制对这个
对象
的
访问
。使用代理模式创建代表
对象
,让代表
对象
控制对某
对象
的
访问
,被代理的
对象
可是
远程
的
对象
、创建开销大的
对象
或需要安全控制的
对象
。 代理分三种:
远程
代理,帮助我们控制
访问
远程
对象
:
远程
代理可以作为另一个JVM上
对象
的本地代表。调用代理的方法,会被代理利用网络转发到
远程
执行,并且结果会通过网络返回给代理,再由代理将结果转给客户。 虚...
JAVAF
访问
LOTUS
对象
使用 Java 可以
访问
Domino 中的
对象
,如数据库、视图、文档等。本文简述了用 Java
访问
Domino
对象
的基本编程方法。本文中的内容主要是根据 Lotus Domino/Notes 6 编写的,使用 R5 时会略有不同。 Java 对 Domino
对象
的
访问
是通过调用 lotus.domino 包来
进行
的。在运行环境中,lotus.domino 包中的接口是...
rmi学习笔记
rmi作为j2EE应用的主要技术之一,在分布式领域有着极强的生命力。正是因为rmi在分布式的应用能力,才让java渗透到除企业级应用的一些关键领域。比如云计算,hadoop的成功就是一个明显的例子。 首先需要明白的是rmi的主要目标:rmi就是为非分布式程序的开发者设计了一套编写分布式程序的接口,方法。说白了,就是简化了编写分布式程序的步骤,降低了编写分布式程序的门槛。 学习一个新的技术,就得学习他的新的特点,那么分布式编程与单机编程到底有什么样的区别,在哪些方面
Python代理模式——控制
对象
的
访问
一
理解代理模式 代理通常就是一个介于寻求方和需求方之间的中介系统。寻求方是发出请求的一方,而提供方是根据请求提供资源的一方。在Web世界中,它相当于代理服务器。客户端在向网站发出请求时,首先连接到代理服务器,然后向它请求诸如网页之类的资源。代理服务器在内部评估此请求,将其发送到适当的服务器,当它收到响应后,就会将响应传递给客户端。因此代理服务器可以封装请求、保护隐私,并且非常适合在分布式架构中运行...
C#
111,129
社区成员
642,535
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章