实现远程调用对象,跨进程访问对象,可实现分布式

首先给服务端和客户端 nuget Hprose

可使用tcp和http两种调用方式

服务端

using Hprose.Server;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace rpc
{
    class TestService
    {
        public string Hello(string name)
        {
            return "Hello " + name + "!";
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            // HproseHttpListenerServer server = new HproseHttpListenerServer("http://localhost:2012/");
            Hprose.Server.HproseTcpListenerServer server = new HproseTcpListenerServer("tcp://localhost:2012");
            TestService ts = new TestService();
            server.Add("Hello", ts);
            // server.IsCrossDomainEnabled = true;
            //server.CrossDomainXmlFile = "crossdomain.xml";
            server.Start();
            Console.WriteLine("Server started.");
            Console.ReadLine();
            Console.WriteLine("Server stopped.");
        }
    }
}

  客户端

using Hprose.Client;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace client
{
    public interface ITestService
    {
        string Hello(string name);
    }
    class Program
    {
        static void Main(string[] args)
        {
            //HproseHttpClient client = new HproseHttpClient(" http://localhost:2012/");
            HproseTcpClient client = new HproseTcpClient("tcp://localhost:2012/");
            //client.KeepAlive = true;
            Console.WriteLine(client.Invoke("Hello", new Object[] { "bbbb" }));
            Console.WriteLine(client.Invoke("hello", new Object[] { "cccc" }));
            //接口方式调用
            ITestService testService = client.UseService<ITestService>();
            Console.WriteLine(testService.Hello("这是接口方式调用"));
            //
            Console.ReadLine();
        }
    }
}

  

.Net 之 RPC 框架之Hprose(远程调用对象)的更多相关文章

  1. RPC框架Thrift例子-PHP调用C++后端程序

    更新 2016-02-22: Response对象不用主动创建. 前言 前段时间用了一下Facebook的开源RPC框架Thrift,做PHP客户端调用C++后端程序,真心觉得Thrift不错! 本文 ...

  2. RPC框架基本原理(三):调用链路分析

    本文主要阐述下RPC调用过程中的寻址,序列化,以及服务端调用问题. 寻址 随机寻址 从可用列表中,随机选择地址 一致性寻址 可用服务地址一致性hash管理:根据可服务的地址,构造treemap,计算c ...

  3. c# 实现RPC框架的思路

    RPC框架,就是远程调用一个方法就像是本地调用一样. 用于网络消息的话,那么你的收发消息通过异步方法可以写在一起,很方便 核心代码 using System; using System.Collect ...

  4. 远程调用RPC

    一.简介 RPC,就是Remote Procedure Call的简称呀,翻译成中文就是远程过程调用. 本地调用,就好比你现在在家里,你要想洗碗,那你直接把碗放进洗碗机,打开洗碗机开关就可以洗了.这就 ...

  5. 这次我设计了一款TPS百万级别的分布式、高性能、可扩展的RPC框架

    作者:冰河 博客地址:https://binghe001.github.io 大家好,我是冰河~~ 没错,这次冰河又要搞事情了,这次准备下手的是RPC框架项目.为什么要对RPC框架项目下手呢,因为在如 ...

  6. 简单Tomcat HTTP RPC框架

    RPC基础知识 什么是RPC? RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议. ...

  7. (转载)spring 之间的远程调用-Spring Http调用的实现

    原文:https://www.cnblogs.com/lewisat/p/6132082.html 1:Spring Http设计思想 最近在研究公司自己的一套rpc远程调用框架,看到其内部实现的设计 ...

  8. 带你手写基于 Spring 的可插拔式 RPC 框架(一)介绍

    概述 首先这篇文章是要带大家来实现一个框架,听到框架大家可能会觉得非常高大上,其实这和我们平时写业务员代码没什么区别,但是框架是要给别人使用的,所以我们要换位思考,怎么才能让别人用着舒服,怎么样才能让 ...

  9. 一文带你实现RPC框架

    想要获取更多文章可以访问我的博客 - 代码无止境. 现在大部分的互联网公司都会采用微服务架构,但具体实现微服务架构的方式有所不同,主流上分为两种,一种是基于Http协议的远程调用,另外一种是基于RPC ...

随机推荐

  1. Ubuntu 18.04中截图工具Shutter的编辑按钮不可用的解决办法

    Shutter是一个由第三方提供的在Ubuntu上运行的截图工具,相对于系统自带的截图工具(默认可通过Ctrl + Shift + Print快捷键启动截图),最大的优点就是可以即时对图片进行编辑,在 ...

  2. java 易错选择题 编辑中

    1 System.out.println(int(a+b)); 编译错误  应该是(int)(a+b) 2 String s="john"+3; 是正确的,结果就是 john3 3 ...

  3. Linux 系统假死的解决方案

    Linux 系统有时因为软件不兼容或未知 bug,导致系统假死.比如我的 Ubuntu 14.04 最近使用 vscode 时偶尔会导致系统假死,即鼠标可以移动,但点击无反应. 此时可试试如下解决方案 ...

  4. ssrfme 复现

    这道题搞了我很长时间,主要太菜了,开始复现吧 <?php     $sandbox = "sandbox/" . md5("orange" . $_SER ...

  5. codeblocks-17.12mingw-nosetup(mingw编译,绿色免安装版)的下载、安装及设置一

    一.先进入网址:http://www.codeblocks.org/downloads/,选择Download the binary release. 二.转换网页后,选择codeblocks-17. ...

  6. iis设置默认文档,提示web.config配置xml格式不正确

    网站上传后,配置默认文档,提示web.config配置xml格式不正确,几经尝试,发现是sqlserver密码中的“&”符号惹的祸,web.config文件中不能使用该字符.分享出来,大家遇到 ...

  7. C#-之属性(1)

    1. 属性定义方式与字段类似,但还包括Set和Get两个访问器,其格式如下: public/private <type> Name { get { return variable:    ...

  8. Jira安装过程

    一.下载jira jira下载路径:https://www.atlassian.com/software/jira/download 二.安装 jira安装一直下一步下一步即可 三.破解 E:\JIR ...

  9. 记录BigInteger犯过的一个错误

    2019年4月18号,面试遇到的面试题,当时做错了,纪念下. public class StrTest { public static void main(String[] args) { BigIn ...

  10. 2019-04-28 Mybatis generator逆向工程生成的Example代码分析

    今天主要对Mybatis generator生成的DAO层等进行分析,讲解Example类的使用和扩展 1.先在数据库建表 CREATE TABLE `department` ( `fid` ) NO ...