Tag: .net remoting

.Net Remoting:指示用于连接到一台服务器的本地接口

我们有一台服务器,我们用.Net远程连接。 服务器在两个网络上,客户端在两个网络上。 客户端和服务器只有一个共同的网络: 使用发现,我们找到服务器的IP(在这种情况下:10.10.10.110)。 我们创建TcpChannel并连接到服务器。 服务器接收呼叫,但是当它尝试将一些信息发送到客户端接收器时。 我们得到一个例外,说我们试图将数据发送到不可缓存的IP(10.12.10.100)。 所以服务器正确地宣布了他的地址,但是我们怎样才能指示客户端使用具有特定IP的网络接口? 一些代码: 客户端,初始化: IDictionary tcpChannelConfiguration = new Hashtable(); string instanceName = “RemotingClient” + Utils.GenerateRandomString(5); tcpChannelConfiguration[“name”] = instanceName); tcpChannelConfiguration[“port”] = 0; tcpChannelConfiguration[“machineName”] = m_interfaceToHost;//This is containing the local interface to use tcpChannelConfiguration[“bindTo”] = m_interfaceToHost; IClientChannelSinkProvider formatClient = new BinaryClientFormatterSinkProvider(tcpChannelConfiguration, null); IClientChannelSinkProvider identityFormatClient = new IdentityClientSinkProvider{Next = formatClient}; BinaryServerFormatterSinkProvider formatServer […]

获取对象的AppDomain

有没有办法确定哪个AppDomain是对象或ObjectHandle实例创建的?

MarshalByRefObject即使在赞助时也会“在服务器上断开连接”

我正在编写一个支持mods的游戏,为了安全起见,我将mods沙盒化为游戏引擎中的单独AppDomain(因此我可以将mods的function与引擎分开限制)。 但是,脚本域中的对象引擎保持引用以便过早收集垃圾并且我得到如下的exception: 对象’/30b08873_4929_48a5_989c_e8e5cebc601f/lhejbssq8d8qsgvuulhbkqbo_615.rem’已断开连接或在服务器上不存在。 在服务器端,我正在创建这样的对象(使用AppDomainToolkit : // Take in a “script reference” which is basically just the name of a type in the scripting domain public Reference Dereference(ScriptReference reference) where T : MarshalByRefObject { // Create a remote instance of this type T instance = (T)RemoteFunc.Invoke(_pluginContext.Domain, reference, r => { var t = Type.GetType(r.TypeName, true, false); […]

c#远程事件

我正在尝试使用c#进行服务器客户端应用程序以了解有关远程程序的更多信息。 结构很简单。 我有一个服务器,当调用函数updateInventory并且每个客户端向事件注册一个函数(使用委托)时触发事件。 因此,当任何客户端更新库存时(通过调用updateInventory函数),所有客户端都会通过事件的方式向其发出警告。 现在的问题是它根本不起作用,当客户端调用updateInventory函数时,服务器中的那个不会被激发。 该计划有以下4个组成部分: inventoryChangedArgs 哪个是Serializable,并作为事件触发的函数的参数。 我将其编译为.dll并通过“添加引用…”在服务器和客户端上使用: using System; [Serializable] public class InventoryChangeArgs:EventArgs { private string pno; public string Pno { get { return pno; } set { pno = value; } } private int change; public int Change { get { return change; } set { change = value; } } public […]

当一个对象派生自MarshalByRefObject并且还标记为时会发生什么?

我正在研究我的第一个使用AppDomains的项目,我想知道当一个对象派生自MarshalByRefObject并且还标记为[Serializable]时会发生什么? 例如: [Serializable] public class DummyClass: MarshalByRefObject { }

COM Interop,RPC服务器在c#中不可用

我正在使用COM Interop,我正在从interop dll实例化COM类对象所以,几次对象被成功实例化并进行远程过程调用没有任何问题,但有时它抛出一个exception,如RPC Server是不可用的。 我正在使用的COM组件是用VB编写的,我在c#中使用该组件。 那么,任何人都可以告诉我问题的可能原因(RPC服务器不可用)和解决此问题的方法。 我现在对这个问题很无奈。 所以,如果你能帮助我,请转发

Serializable和MarshalByRefObject之间的区别

我对.NET Remoting中的 [Serializable]和:MarshalByRefObject属性非常困惑。但是我读了很多文章。 如果我使用[Serializable]属性,那么所有方法都完全在调用者域中执行,这意味着不同的调用者应该在自己的域上拥有不同方法的副本,并且一个调用者所做的任何更改都不应该反映在其他调用者身上。但是当它们相同时我在我的程序中实现的东西,我没有得到理想的结果。

WCF真的取代了.NET Remoting吗?

我可以理解WCF通常比Remoting更好,但两者看起来与我完全不同。 MS制作这张漂亮的照片,以显示WCF有多棒(或者其他技术人员每次仅检查一个盒子的差距): alt text http://sofzh.miximages.com/c%23/IC371617.jpg 但是,WCF以SOA为中心,我认为假设每个联网应用程序都希望公开服务是不正确的。 在我的情况下,我正在寻找在不同PC上的两个服务器应用程序实例之间复制对象的方法。 WCF似乎只是提供了一个现代版本的COM …获取一个对象并调用方法,它神奇地调用另一台PC上的版本。 但Remoting似乎做了一些完全不同的事情,我不清楚为什么它被弃用而不被类似的技术取代。 那么,MS甚至声称Remoting已经死了吗? 或者他们是否仍然支持它,承认它与 WCF 并列 ?

EasyHook,.NET Remoting客户端和服务器之间的共享接口?

IPC客户端和IPC服务器如何调用共享远程处理接口(inheritanceMarshalByRefObject的类)进行通信,而不必将接口类放在注入应用程序中? 例如,如果我将接口类放入注入的库项目中并注入到我的目标进程中,那么我的注入应用程序就无法引用该接口。 编辑:我已经回答了下面的问题。

Web服务和远程处理有什么区别?

我知道Web服务并且对远程处理有一定的了解。 这两个概念都在客户机上调用方法,所以区别在哪里? 通过远程处理我们也可以在远程机器上执行该方法,同样的function也可以通过Web服务实现。 如果这是一个明显的问题,请原谅我..