Tag: remoting

WebService和Remoting之间的区别

我将Web服务与Remoting从性能和互操作性角度进行了比较,并对此有所怀疑。 1)由于Remoting支持TCP和HTTP通道,因此在使用TCP通道时它使用二进制格式化,当HTTP,SOAP格式化时 2)我们可以在Remoting中使用TCP协议和HTTP / Soap格式化使用二进制格式化 3)由于Remoting支持任何技术和平台普遍接受的XML / SOAP格式,因此它应该提供任何技术/平台的服务器/客户端应用程序之间的互操作性,如果提供什么是Web服务的使用。 据我所知,Webservice相对于远程处理的主要优点是互操作性。 4)如果我使用Remoting与SOAP和HTTP,它是否被互联网防火墙绕过与Web服务相同的方式,或者仍然受到防火墙的限制。 5)如果在HTTP上使用SOAP格式进行远程处理,而在Web服务上使用SOAP格式通过Http进行远程处理,是否仍存在任何性能变化。 6)webservice是否支持二进制格式化和TCP协议,根据我的理解webservice只支持http prtocol但是根据一些程序员的意见,堆栈溢出webservice独立于传输协议,所以它是否像asp.net webservice只适用于http和web服务在其他技术中开发的支持TCP和HTTP。 此致,Arun Patil

远程处理 – 有关客户的信息。 C#

在.net 2.0上使用远程处理时,是否可以找到/获取有关连接客户端的一些信息? 我想知道在服务器端获取有关连接客户端的一些信息,所以我可以采取相应的行动吗? 这是一个小型且非常本地化的应用程序,永远不会有超过10个同时连接/请求客户端。 在每个函数中传递客户端引用? (或一些标识符)? 我可以这样做,但我更愿意从请求/连接客户端获取信息。 IP地址或类似地址会很好。 问候

获取对象的AppDomain

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

将序列化对象迁移到新版本

我想将以前在数据库中序列化的对象迁移到新架构。 我以前的目标。 Public interface MyReport { string Id { get; set;} string Name { get; set;} Dictionary PropColl { get; set;} } 但由于某些原因,我们不得不进行界面更改 Public interface IMarkme { } Public interface MyReport where T : Imarkme { string Id { get; set;} string Name { get; set;} T ExtendedProp { get; set;} } Public NewProp : […]

Akka.net:访问群集中的远程Actors

在集群环境中,我有一个种子节点和node1和node2。 从node1我想发送一条消息给在node2上创建的Actor。 node2上此节点的本地路径是akka:MyAkkaSystem / user / AnActor。 现在我想通过使用如下的ActorSelection从一个Actor从node1向这个特定的actor发送一条消息: var actorSystem = ActorSystem.Create(“MyTestSystem”); var c = actorSystem.ActorSelection(“/user/ConsoleReceiver”); c.Tell(“Hello World”); 在node2上,actor已经像这样创建: var actorSystem = ActorSystem.Create(“MyTestSystem”); var r = actorSystem.ActorOf(Props.Create(), “ConsoleReceiver”); Console.WriteLine(r.Path); Console.ReadLine(); actorSystem.Terminate().Wait(); 不幸的是,由于尝试以死信结束,因此无效。 node2上的HOCON配置如下所示: akka { actor { provider = “Akka.Cluster.ClusterActorRefProvider, Akka.Cluster” deployment { } } remote { log-remote-lifecycle-events = DEBUG log-received-messages = on helios.tcp { […]

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

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

使用属性或MarshalByRefObject的子类化?

我想在AppDomains中使用一个对象。 为此我可以使用[Serializeable]属性: [Serializable] class MyClass { public string GetSomeString() { return “someString” } } 或MarshalByRefObject的子类: class MyClass: MarshalByRefObject { public string GetSomeString() { return “someString” } } 在这两种情况下,我都可以使用这样的类: AppDomain appDomain = AppDomain.CreateDomain(“AppDomain”); MyClass myObject = (MyClass)appDomain.CreateInstanceAndUnwrap( typeof(MyClass).Assembly.FullName, typeof(MyClass).FullName); Console.WriteLine(myObject.GetSomeString()); 为什么两种方法似乎都有相同的效果? 两种方法有什么不同? 什么时候我应该赞成一种方法而不是另一种呢? 编辑:从表面上看,我知道两种机制之间存在差异,但如果有人跳出丛林并问我这个问题,我无法给他一个正确的答案。 问题是非常开放的问题。 我希望有人可以比我能做的更好地解释它。

是否可以通过.net应用程序以编程方式关闭“远程PC”?

我想知道,是否可以通过.net应用程序以编程方式关闭远程PC? 如果是的话,怎么样?

如何在AppDomains中将引用作为方法参数传递?

我一直在尝试使用以下代码(所有内容都在同一个程序集中定义): namespace SomeApp{ public class A : MarshalByRefObject { public byte[] GetSomeData() { // } } public class B : MarshalByRefObject { private A remoteObj; public void SetA(A remoteObj) { this.remoteObj = remoteObj; } } public class C { A someA = new A(); public void Init() { AppDomain domain = AppDomain.CreateDomain(“ChildDomain”); string currentAssemblyPath = […]

如何在没有IDL或后期绑定调用远程处理方法的情况下访问CORBA接口

我们一直在使用SAP“COM许可证桥”来访问其许可证服务器并以编程方式查询系统的硬件密钥(以重复使用自己的许可)。 这在SAP Business One版本2007A,2007B和8.8上运行良好,但是在8.81中它们似乎更新了它们的CORBA接口而没有更新COM包装器,因为我们现在在尝试调用GetHardwareKey函数时获得内存exception。 所以我下载了IIOP.NET并开始尝试编写自己的界面。 无论如何我从来都不喜欢COM包装器。 但是我遇到了我的旧远程.NET远程控制 – 无法在服务器和客户端都没有定义公共接口的情况下调用远程方法。 我尝试使用IIOP.NET附带的IDL到CLS编译器,但我继续得到关于接口beign不兼容的错误(SAP没有提供IDL文件)。 我不知道IIOP和CORBA如何确定接口是否兼容。 但我甚至尝试调试IIOP.NET代码并强制它执行该方法尽管不兼容,但收到一个空字符串而不是我想要的硬件密钥。 我的下一步是尝试实现虚假的许可证服务器并检查来自生产客户端的请求,以期确定它们应该是什么样子,但考虑到我遇到的困难,我并不指望取得多大的成功。深入了解.NET远程的内容。 我真正的问题是如何获取或生成SAP Business One硬件密钥,但由此产生的问题包括: 如何反思或查询有关CORBA接口的信息? 我可以使用NamingContext类的list方法来检索可用对象的列表,但我不知道是否有办法查询对象上的可用方法。 我可以在没有接口的情况下动态调用.NET远程处理方法吗? 我看到有一个叫做DII的东西用于动态调用CORBA,但是我没有看到如何在IIOP.NET中使用它。 我可以仅使用委托或不完整的接口来调用.NET远程处理方法吗? 我尝试使用dynamic关键字,但它无法在我的MarshalByRef远程对象上调用一个方法……我认为它说我的MarshalByRef实例上不存在该方法。 我只是通过IIOP.NET尝试过这个(我想知道它是否适用于普通的.NET远程处理)。 如何在.NET远程处理框架中创建或检查Message实例? 我是否可以直接发送或检索远程处理消息,绕过底层代理? 编辑:我设法通过应用RepositoryID属性使IIOP.NET / CORBA相信我有一个兼容的接口: [Ch.Elca.Iiop.Idl.InterfaceType(Ch.Elca.Iiop.Idl.IdlTypeInterface.ConcreteInterface)] [Ch.Elca.Iiop.Idl.RepositoryID(“IDL:LicenseInfo:1.0”)] public interface ILicenseInfo : Ch.Elca.Iiop.Idl.IIdlEntity { void GetHardwareKey(out string hwKey); } 但我仍然得到一个空字符串结果。 编辑2:经过一些更多的实验和调试,我发现响应消息确实包含我正在寻找的数据,但是没有正确地解析成客户端值,可能是因为我的接口定义不好。 希望进一步调试响应处理将帮助我弄清楚如何纠正我的界面。 奇怪的是,它从响应中解析的第一件事是一个空的盒装值,这似乎不适合“out string”参数。 编辑3:我发现我需要将字符串属性应用于这样的参数,以防止它们被视为盒装值: void GetHardwareKey([StringValue(), WideChar(true)] out string hwKey); 但是,尽管有WideChar属性,我对CodeSet不支持WChar或其他东西的错误。 我已经非常接近搞清楚了。 […]