.Net Remoting 部分总结

本文深入讲解了Remoting技术,包括服务端与客户端的配置过程,远程对象的激活方式,以及如何通过代理调用远程对象的方法。详细介绍了TcpChannel和HttpChannel的使用,以及WellKnownServiceType和ActivatedServiceTypeEntry的注册方法。

学习remoting的一部份总结

服务端:

一.可远程化对象 (继承MarshalByRefObject),注意:不能远程处理私有方法;
二.数组应用程序(远程对象服务器),监听客户端请求:
  1)注册通道/信道
    TcpChannel chan=new TcpChannel(8085);
    HttpChannel chan=new HttpChannel(8085);

  2)注册激活远程对象 (两种激活方式:服务端(singlecall,singleton),和客户端)
    RemotingConfiguration.RegisterWellKnownServiceType(Type type,string url,WellKnownObjectMode mode)
   -------------------------------------------------------------------------------------------
  例: //注册通道,确定对象服务器在哪个通道上的哪个端口进行监听
   TcpChannel chan=new TcpChannel(863);
   ChannelServices.RegisterChannel(chan);

   //激活方式
   WellKnownServiceTypeEntry a=new WellKnownServiceTypeEntry(
    typeof(ServerClass.UserData),
    "testserver",//客户端调用远程对象时将使用此uri
    WellKnownObjectMode.Singleton//激活模式
    );
   RemotingConfiguration.ApplicationName="servername";//应用程序名
   RemotingConfiguration.RegisterWellKnownServiceType(a);

   Console.WriteLine("server started ! press<enter>exit");
   Console.ReadLine();

客户端使用uri:ProtocolScheme://ComputerName:Port/PossibleApplicationName/ObjectUri
   ------------------------------------------------------------------------------------
  客户端激活方式:
------------------------------------------------------------
  TcpChannel chan=new TcpChannel(8085);
  ChannelServices.RegisterChannel(chan);
RemotingConfiguration.ApplicationName="hello";//相当于该对象的uri
RemotingConfiguration.RegisterActivatedServiceType(Type.GetType("ffff"));
Console.WriteLine("server started ! press<enter>exit");
Console.ReadLine();

ActivatedServiceTypeEntry ASTE =  new ActivatedServiceTypeEntry(typeof(WiseOwl.Calculator)); RemotingConfiguration.RegisterActivatedServiceType(ASTE);
......

客户端使用uri:ProtocolScheme://ComputerName:Port/PossibleApplicationName
---------------------------------------------------------

  3)等待客户链接


客户端:

一.注册信道
TcpChannel chan=new TcpChannel()或HttpChannel
不用指明端口号,因为只用着客户端信道,不在任何端口上侦听.
在客户端注册信息不是必需的,如果客户端示注册信道,则远程处理系统将使用在machine.config中指定默认信道之一自动选择或创建一个信道以发出请求.
二.生成远程服务对象的代理
Activator.GetObject(Type type,string url)
并不会在服务端创建远程对象的实例,它仅在客户端根据"远程对象的类型信息"创建对应于"远程对象的本地代理".

另可以用new 生成远程对象的本地代理,必须首先用RegisterWellKnownClientType()在客户端注册该已知对象类型,调用向远程处理基础结构提供远程对象的位置.
如:RemotingConfiguration.RegisterWellKnownClientType(typeof(hello),url);//客户端激活的用RemotingConfiguration.RegisterActivatedClientType(typeof(fff),uri);
hello obj =new hello();
三.通过代理调用远程对象的方法
通过代理第一次调用远程对象时,"远程对象服务器"将调用默认的构造函数生成远程对象实例.

注:通过客户端激活的对象则用以下方法取得远程对象代理
Server obj=(Server)Activator.CreateInstance(.......)[.Unwrap()];
 如:object[] att=new object[]{new UrlAttribute(url)};
   Object a=Activator.CreateInstance(typeof(ServerClass.UserData),null,att);

转载于:https://www.cnblogs.com/ylwlf/archive/2004/11/14/63810.html

内容概要:本文围绕“基于纳什博弈的多微网主体电热双层共享策略”展开研究,通过构建电热联合系统的双层优化模型,结合纳什博弈理论实现多个微网主体间的能量共享与利益分配。上层采用博弈论优化各微网的能源交互策略,下层考虑电、热负荷的耦合关系与设备运行约束,实现系统整体经济性与能效的提升。研究通过Matlab代码实现仿真验证,复现SCI论文中的核心算法与建模思路,涵盖YALMIP工具包调用、优化模型搭建与求解流程,具有较强的可操作性与科研参考价值。; 适合人群:电力系统、能源互联网、微电网优化等领域的研究生、科研人【SCI复现】基于纳什博弈的多微网主体电热双层共享策略研究(Matlab代码实现)员及具备一定Matlab编程基础的工程技术人员;熟悉优化建模与博弈论者更佳。; 使用场景及目标:①学习并复现SCI级多微网协同优化论文的核心方法;②掌握基于纳什博弈的双层优化建模技巧;③深入理解电热综合能源系统的协同调度机制与数学建模过程;④借助提供的代码资源开展二次开发或对比实验。; 阅读建议:建议结合文档中提供的网盘资源(含YALMIP-develop.zip等工具包与完整代码)同步运行与调试,按照目录顺序逐步学习,重点关注模型构建逻辑与Matlab实现细节,同时可延伸至其他优化问题如储能配置、需求响应等方向的应用拓展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值