社区
C#
帖子详情
如何对远程对象进行本地访问
babysloth
2004-02-02 02:13:39
通过RemotingServices.Marshal可以为一个对象注册一个URI,
供远程或者跨AppDomain通过代理对象访问。有没有办法根据
URI进行本地访问呢(不通过代理对象,不进行参数Marhsal)?
谢谢。
...全文
190
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_API1.6文档(中文)
javax.management.remote 对 JMX MBean 服务器
进行
远程
访问
使用的接口。 javax.management.remote.rmi RMI 连接器是供 JMX Remote API 使用的一种连接器,后者使用 RMI 将客户端请求传输到
远程
MBean 服务器。 ...
EJB
远程
访问
和本地
访问
方式
EJB支持两种客户端的
访问
,一种是
远程
客户端
访问
,以及客户端与其调用的EJB
对象
不在一个JVM进程中,另外一种就是本地
访问
,和第一种相反,客户端和EJB
对象
同在一个JVM进程中。首先我们要知道最基础的知识,
远程
...
开源
对象
存储服务器MinIO本地部署并结合内网穿透实现
远程
访问
管理界面
MinIO是一个开源的
对象
存储服务器,可以在...MinIO是一个开源的软件,可以免费使用,还可以在普通硬件上运行,降低了存储成本,下面介绍在本地Docker中部署 MinIO 服务,并实现
远程
访问
管理界面,节约云服务器运行成本.
代理模式——
远程
代理(一)
远程
代理,帮助我们控制
访问
远程
对象
:
远程
代理可以作为另一个JVM上
对象
的本地代表。调用代理的方法,会被代理利用网络转发到
远程
执行,并且结果会通过网络返回给代理,再由代理将结果转给客户。 虚...
【EJB基础】
远程
调用和本地调用
本篇博客讲解一下
远程
调用和本地调用。首先要先了解一下几组概念。
远程
客户端和本地客户端
远程
客户端:客户端与其调用的JEB
对象
...为了创建一个能够被本地
访问
的企业Bean,你必须用@Local注解来定义这些Bean。
C#
110,529
社区成员
642,571
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章