.net Remoting 示例代码
来源:互联网 发布:java自带线程池 编辑:程序博客网 时间:2024/05/22 13:27
最近一个项目用到这个东西,就整理了下写了示例,仅供新手参考,如有不当之处请大侠指点一二;
首先要说明Remoting是个什么东西了,它是microsoft结合.net的基础上延伸出来的采用分布式编程的一种技术,Remoting主要用于管理跨应用程序域的同步和异步RPC 会话。在默认情况下,Remoting使用 HTTP 或 TCP 协议,并使用 XML 编码的 SOAP 或本机二进制消息格式进行通信。.NET Remoting 提供了非常灵活和可扩展的编程框架,并且他可以管理对象的状态。 Remoting还支持IPC信道,IPCChannel是.NET Framework 2.0 里面新增的,它使用 Windows 进程间通信 (IPC) 系统在同一计算机上的应用程序域之间传输消息。在同一计算机上的应用程序域之间进行通信时,IPC 信道比 TCP 或 HTTP 信道要快得多。但是IPC只在本机应用之间通信。所以,在客户端和服务端在同一台机器时,我们可以通过注册IPCChannel来提高Remoting的性能,否则只能是tcp信道或http信道;
下面请看示例:
一、创建远程对象
public interface IPowerService { string WriteLog(); } public class UserService : MarshalByRefObject,IPowerService { public DataTable GetUserList() { string sql = "select * from BAS_USER "; return new UserData().GetUserList(sql); } public string WriteLog() { return "系统日志记录时间是:" + DateTime.Now.ToLocalTime() ; } }
二、创建一个宿主程序,这个程序可以是控制台应用程序,也可以是winforms程序,还可以是web应用程序让IIS承载;创建宿主程序的步骤 1定义并注册通道 2注册服务器激活的远程对象
try { HttpServerChannel server = new HttpServerChannel(9000); //TcpServerChannel server = new TcpServerChannel(9001); ChannelServices.RegisterChannel(server, false); RemotingConfiguration.RegisterWellKnownServiceType(typeof(UserService), "UserService.rem", WellKnownObjectMode.Singleton); Console.WriteLine("服务启动成功!"); Console.WriteLine("----------------------------------------------------------------"); Console.ReadLine(); } catch (Exception ex) { Console.WriteLine("服务启动失败:" + ex.Message); Console.WriteLine("----------------------------------------------------------------"); Console.ReadLine(); }
三、客户端调用程序
IPowerService obj = null; try { //ChannelServices.RegisterChannel(new System.Runtime.Remoting.Channels.Http.HttpClientChannel(), false); ChannelServices.RegisterChannel(new System.Runtime.Remoting.Channels.Http.HttpClientChannel(), false); } catch (Exception ex) { Response.Write(ex.Message.ToString()); } //obj = (IPowerService)Activator.GetObject(typeof(IPowerService), "tcp://192.168.2.102:9001/UserService.rem"); obj = (IPowerService)Activator.GetObject(typeof(IPowerService), "http://192.168.2.102:9000/UserService.rem"); if (obj != null) { var us = (obj as UserService); var dt = us.GetUserList(); StringBuilder sb = new StringBuilder(); if (dt != null) { foreach (DataRow item in dt.Rows) { sb.Append(item["Login_Name"] + "<br />"); } } sb.Append("-------------------tcp or http demo-----------------" + us.WriteLog()); Literal1.Text = sb.ToString(); } else { Literal1.Text = "与服务器连接失败!"; }
注意:当服务器端定义的是如http信道,那么客户端调用的必须也是http信道;
0 0
- .net Remoting 示例代码
- .Net Remoting解析,示例
- .NET Remoting 最简单示例
- .NET Remoting 最简单示例
- .NET Remoting 最简单示例
- .NET Remoting 最简单示例
- C# .NET Remoting 简单应用示例
- .Net Remoting服务端与客户端调用示例
- [VB.NET]设置remoting超时timeout代码
- [Remoting] 一:.NET Remoting
- [Remoting] 一:.NET Remoting
- .Net Remoting Hello world 示例(接口版)
- 基于.Net Remoting 的智能客户端架构示例
- 简要地写出一个.NET Remoting的示例
- 简要地写出一个.NET Remoting的示例
- 分布式编程->Remoting的一个代码示例(借助Remoting实现发送信息功能)
- Remoting的一个代码示例(借助Remoting实现发送信息功能)
- 分布式编程->Remoting的一个代码示例(借助Remoting实现发送信息功能)
- 第十六周项目三:用函数指针调用函数
- C++ primer plus(第六版)学习笔记、习题答案(4)
- python中模块引用导致python模块不能直接执行问题的解决
- 循环引用
- android 内存和性能优化汇总
- .net Remoting 示例代码
- Nginx 核心模块、HTTP模块、邮件模块解析
- android PowerManager分析
- 上发斯蒂芬斯蒂芬斯蒂芬是电风扇的发斯蒂芬水电费萨法水电费十多个少废话是大富豪快干胶他姐夫欧普圣诞节费啥破地方可破是肯定平【水电费是的【佛山丹佛i就搜房教科书了哈弗is恢复
- 白话经典算法系列之三 希尔排序的实现
- 如何判断指定的文件是否存在
- Android APIDemos 研读之二:android.graphics.Camera
- php的重载
- IO——File类