zoukankan      html  css  js  c++  java
  • 一个关于Remoting的简单例子

    前言

    今天在整理以前写的一些demo,看到一个关于remoting的例子。好久不用remoting了,果断记录一下。

    什么是Remoting

    简单回顾下:

    1.Remoting是一种远程通信,或者说跨应用程序(域)通信的技术,在C/S架构的程序中应用较多。

    2.支持协议:TCP和HTTP。

    3.激活方式:服务器端激活(WellKnow)和客户端激活。其中服务端激活又包含了SingleTon模式和SingleCall模式

    HelloRemoting示例

    一个完整的远程通信程序基本上包括以下几部分:

    1.定义远程对象。Remoting传递的对象是以引用的方式,因此所传递的远程对象类必须继承MarshalByRefObject;

    2.服务端,主要是注册通道、注册远程对象、注销通道;

    3.客户端,主要完成注册通道、获取远程对象。

    第一步:

    创建一个solution(HelloRemoting.sln)。然后按照上面描述的分别建立三个project:RemoteClient,RemoteObject,RemoteServer,如下图所示:

    image

    说明:我这里的使用的VS2008创建的,其中Client和Server是Winform程序,RemoteObject是类库。

    第二步:

    定义远程对象。Remoting的远程对象必须继承自:MarshalByRefObject。我们这里创建一个HelloRemote类,包含有求和运算。

    View Source

    第三步:

    创建服务,注册通道、远程对象。本示例使用服务端激活,TCP通道注册远程对象。具体如下:添加一个Form窗体,简单设置UI如下:

    image

    分别添加启动服务和关闭服务的按钮点击事件。代码如下(代码中已经有详细注释):我们把服务注册到10086端口上

    View Source

     第四步:

    创建客户端(Client),获取远程对象。同Server一样,在RemoteClient中添加一个Form如下:

    image

    在【点击计算】按钮上添加点击事件,完成注册通道,获取远程对象,以及调用远程对象计算并返回结果。代码如下:

    View Source

     通过上面的几步我们就创建了一个远程通信的示例,我们看一下运行结果,分别启动Server和Client,并输入10,20点击提交:

    服务端:

    image

    客户端:

    image

    结果为30,说明我们成功的创建了一个使用Remoting的分布式应用程序。

    源码如下:HelloRemoting.rar

  • 相关阅读:
    ESP8266 SDK开发
    硬件基础知识和典型应用-Altium Designer 加载SETP文件设置3D封装
    Golang 协程控制关闭
    Redis主从集群切换数据丢失问题
    Goroutine(协程)的理解
    堆和栈的概念和区别
    golang goroutine实现_golang中的Mutex设计原理详解(一)
    OpenCV cv::Mat.type() 以及各类型数据转换
    python 处理json
    python 文件|路径 常用方法
  • 原文地址:https://www.cnblogs.com/pszw/p/2495102.html
Copyright © 2011-2022 走看看