High Performance Remote Object Service Engine

Related tags

Microservices hprose
Overview

Hprose

===============

Hprose is a High Performance Remote Object Service Engine.

It is a modern, lightweight, cross-language, cross-platform, object-oriented, high performance, remote dynamic communication middleware. It is not only easy to use, but powerful. You just need a little time to learn, then you can use it to easily construct cross language cross platform distributed application system.

It contains a semi-text serialization format, an RPC protocol and its implementation. The meaning of semi-text is all the data are represented as text, except the original binary data. The serialization format is very compact. It takes up very little space, and can be parsed very quickly in programming language. You can use this serialization format without hprose RPC protocol in other communications protocols, data storage, and more. If you want to know more, please read Hprose Specification(中文版).

Language support

Hprose 2.0.x:

hprose language or platform lastest-version documents
hprose-php Supported PHP versions: 5.3 .. 7.1 Packagist Documents
hprose-swoole Supported PHP versions: 5.3 .. 7.1 Packagist Documents
hprose-yii Supported PHP versions: 5.3 .. 7.1 Packagist Documents
hprose-symfony Supported PHP versions: 5.3 .. 7.1 Packagist Documents
hprose-psr7 Supported PHP versions: 5.3 .. 7.1 Packagist Documents
hprose-java Supported Java versions: jdk5-jdk8 Maven Central Documents
hprose-golang Supported Golang versions: 1.6+ GitHub release Documents
hprose-nodejs Supported Nodejs versions: all npm version Documents
hprose-js Supported JavaScript versions: es3-es2016 npm version bower version Documents
hprose-html5 Supported JavaScript versions: es5-es2016 npm version bower version Documents
hprose-wx Supported JavaScript versions: es5-es6 GitHub release Documents
hprose-delphi Supported Delphi versions: delphi6-delphi10.1 Supported FreePascal versions: freepascal2-freepascal3 GitHub release Documents Documents
hprose-objc Platform Version Documents
hprose-swift Platform Version Documents

Hprose 1.x.x:

hprose language or platform lastest-version documents
hprose-dotnet Supported .NET versions: All Supported Mono versions: All Supported Unity versions: All Supported .NET CF versions: All Supported .NET MF versions: All Supported SliverLight versions: 2+ NuGet NuGet Documents
hprose-python Supported Python versions: 2.3~3.5 PyPI Documents
hprose-ruby Supported Ruby versions: 1.8.5+ Gem Documents
hprose-as2 Supported Ruby versions: 2 GitHub release Documents
hprose-as3 Supported Ruby versions: 3 GitHub release Documents
hprose-asp Supported ASP versions: all GitHub release Documents
hprose-j2me Supported J2ME versions: all GitHub release Documents

License

Hprose is free software, available with full source. You may use hprose under the terms of the MIT License.

The MIT License is simple and easy to understand and it places almost no restrictions on what you can do with hprose.

You are free to use hprose in commercial projects as long as the copyright header is left intact.

Comments
  • value of field java.sql.Date mismatch

    value of field java.sql.Date mismatch

    1. Create an object with a java.sql.Date field, as below,
    2. set this field use time stamp 1382074523548
    3. run test
    4. receive the object in server side, and value of this field is 1382086742676

    in java5 edition, I run this test in windows7, JDK1.6, Tomcat7. All of them are 64-bit.

    opened by bradwoo8621 3
  • There is a serious unserialize bug in Java version.

    There is a serious unserialize bug in Java version.

    in HproseReader.readClass:

    Type type = HproseHelper.getClass(className);
    Object key = (type == null) ? new Object() : type;
    

    the type == null should be instead of type == void.class.

    Thanks.

    opened by dsonet 3
  • How to client can Hprose use https?

    How to client can Hprose use https?

    HproseHttpClient client = new HproseHttpClient(); client.useService("https://192.168.0.250:8443/HelloServer/Hello"); String result = (String) client.invoke("sayHello", new Object[] { "Hprose" });

    Tihs method is can't use.

    opened by linuxcjh 1
  • Hprose for python2,字典参数有问题

    Hprose for python2,字典参数有问题

    远程调用的方法参数中,只要存在字典类型,那么就可能存在问题,不仅仅datetime string 字典/list嵌套,而int类型都可能存在问题

    python client例子(官方例子修改):

    from hprose.httpclient import HproseHttpClient client = HproseHttpClient("http://127.0.0.1:8181/") args = [{"Mon": 1, "Tue": 2, "Wed": { "i1": 4, "i2": 5} }] print "1 args=",args result = client.invoke("send_data", args, byref = True) print "2 args=",args print "3 result=",result

    问题: 运行结果中,服务器接收到的字典缺失 1 args= [{'Wed': {'i1': 4, 'i2': 5}, 'Mon': 1, 'Tue': 2}] 2 args= [{'Wed': 2}] 3 result= True


    python server例子:

    import time,datetime import hprose

    def send_data(data): print "RECV : ",data return True

    server = hprose.HttpServer(port = 8181) server.debug = True server.addFunction(send_data) server.start() 运行结果:

    RECV : {'Wed': 2} <--------------这里明显错误

    经过测试,不管是否用invoke的底层方法,也不管是否采用dyref方式,服务器接收到的数据都存在问题。 尽管用官方手册中的"swapKeyAndValue"例子,都一样存在问题。

    opened by nhmice 1
  • hprose java 方法发布或存问题(访问不到)

    hprose java 方法发布或存问题(访问不到)

    andot,在使用hprose中存在一些问题(看是否我配置存在问题)

    1. 我通过tomcat或jetty发布了一个基于hprose的服务(继承HproseServlet) 使用methods.addInstanceMethods()方式将instance(对应一个接口实现) 涉及所有public方法均发布出来(可以在访问地址中看到)
    2. 我在客户端使用HproseHttpClient 使用invoke(方法,参数)的形式访问, 其中当业务是A情况时绑定方法1(对应其特定的hproseHttpClient)
    3. 但测试过程发现,如果我随机选择一个客户端(根据业务类型)去访问,很惊讶 发现在服务端收到的请求(即instance对应的实例)涉及的方法竟然不是我约定 发布的方法

    所以请老大看一下,是否我这种方式存在问题,还是其他。

    opened by bwzhang2011 1
  • Value of Character cannot be null

    Value of Character cannot be null

    1. Create an object with field type is java.lang.Character and default value is null,
    2. send this object to server side,
    3. exception raised as below Exception in thread "main" java.lang.reflect.UndeclaredThrowableException at com.sun.proxy.$Proxy1.hello(Unknown Source) at test.rpc.client.HproseClient.sayHelloToServer(HproseClient.java:22) at test.rpc.client.AbstractClient.sayHello(AbstractClient.java:35) at test.rpc.client.ClientTest.main(ClientTest.java:11) Caused by: hprose.common.HproseException: hprose.common.HproseException: Null can't change to char at hprose.client.HproseClient.doInput(HproseClient.java:331) at hprose.client.HproseClient.invoke(HproseClient.java:271) at hprose.client.HproseClient.invoke(HproseClient.java:227) at hprose.common.HproseInvocationHandler.invoke(HproseInvocationHandler.java:92) ... 4 more

    in window7, jdk1.6, tomcat7. all of them are 64-bit.

    opened by bradwoo8621 1
  • How to use the hprose for cpp?

    How to use the hprose for cpp?

    The development tools : visual studio 2010

    The operating system : window7 64

    boost: 1.47

    The service side : Java development

    The client :C++ development

    Function is introduced :I need to upload COM component in c + + development , Hprose as RPC ,Frameworks are firebreath1.6 implementation npapi interface.I put the source code has been integrated into the framework .

    I use:

    hprose::asio::httpclient client("http://192.168.112.86:9099/dssp/HproseRPC"); std::string arg="kevin"; std::list ret; client.invokestd::list<UploadTask,std::string>(ret,"getUploadTaskList",arg);

    error:

    error C2338: Require [BytesType, ListType] D:\firebreath-1.6\src\libs\hprose\hprose\io\writer.hpp 347

    Could you tell me how to solve? Are there any other way invokes the Java interface?

    If you have the latest version a, please . My email is [email protected]

    opened by bluemoon1982 0
Owner
小马哥
Hprose project lead. I have been developing open source software since 2002.
小马哥
Kitex byte-dance internal Golang microservice RPC framework with high performance and strong scalability, customized extensions for byte internal.

Kitex 字节跳动内部的 Golang 微服务 RPC 框架,具有高性能、强可扩展的特点,针对字节内部做了定制扩展。

CloudWeGo 5.4k Jan 9, 2023
Nano - Lightweight, facility, high performance golang based game server framework

Nano Nano is an easy to use, fast, lightweight game server networking library fo

Lonng 2.2k Jan 1, 2023
MadeiraMadeira boilerplate project to build scalable, testable and high performance Go microservices.

MadeiraMadeira boilerplate project to build scalable, testable and high performance Go microservices.

Madeira Madeira 11 Sep 21, 2022
CudeX: a cloud native intelligent operation and maintenance engine that provides service measurement, index quantification

简介 CudgX是星汉未来推出的面向云原生时代的AIOps智能运维引擎,它通过各类服务的多维度、大数据量的数据收集及机器学习训练分析,对各种服务进行指标化、数字

Galaxy-Future 66 Oct 13, 2022
Collection of personal Dapr demos (bindings, state, pub/sub, service-to-service invocation)

Dapr demos Collection of personal Dapr demos. Note, some of these demos require latest version of Dapr, Ingress gateway, Observability components, or

Mark Chmarny 160 Dec 10, 2022
Gorpsy. Remote procedure call for local linux hosts written in Go.

GoRPC Gorpsy. Remote procedure call for local linux hosts written in Go. GoRPC is built with the filesystem in mind.

Kris Nóva 3 Jul 31, 2022
Fast HTTP microservice written in Go for high-level image processing backed by bimg and libvips.

imaginary Fast HTTP microservice written in Go for high-level image processing backed by bimg and libvips. imaginary can be used as private or public

null 0 Nov 23, 2021
Zeebe.io - Workflow Engine for Microservices Orchestration

Distributed Workflow Engine for Microservices Orchestration

null 2.6k Jan 2, 2023
Fast, intuitive, and powerful configuration-driven engine for faster and easier REST development

aicra is a lightweight and idiomatic configuration-driven engine for building REST services. It's especially good at helping you write large APIs that remain maintainable as your project grows.

xdrm-brackets 8 Oct 19, 2022
Micro-service framework in Go

Kite Micro-Service Framework Kite is a framework for developing micro-services in Go. Kite is both the name of the framework and the micro-service tha

Koding, Inc. 3.2k Jan 9, 2023
NewSQL distributed storage database based on micro service framework

QLite 是基于微服务的 NewSQL 型数据库系统,与传统的一体化数据库不同,该系统将本该内置的多种数据结构(STL)拆分成多个服务模块,每个模块都是独立的一个节点,每个节点都与其主网关进行连接,从而形成分布式存储结构。

null 36 Jun 19, 2022
Kubernetes as a Service

Go Report Travis CircleCI Azure Test Azure Release License oneinfra oneinfra is a Kubernetes as a Service platform. It empowers you to provide or cons

null 881 Dec 28, 2022
🔥 Kubernetes multi-cluster deployment automation service.

Beetle Kubernetes multi-cluster deployment automation service ?? Check out the demo! Application deployment and management should be automated, audita

Ahmed 163 Dec 11, 2022
Tiny service health dashboard written in Go

GreenWall Status: Done (waiting for feedback) Description GreenWall is a tiny service health dashboard written in Go (with frontend prepared in Bootst

Marcin Tojek 291 Nov 29, 2022
Automatic Service Mesh and RPC generation for Go micro services, it's a humble alternative to gRPC with Istio.

Mesh RPC MeshRPC provides automatic Service Mesh and RPC generation for Go micro services, it's a humble alternative to gRPC with Istio. In a nutshell

AstraNet Toolkit 69 Aug 22, 2022
Check if an IP address is part of an Azure Service Tag

Cloud IP Checker This service will help you determine whether an IP address is within one of the Azure Service Tag network ranges. If it is found, it

Dean Bryen 26 Nov 13, 2022
🦄🌈 YoyoGo is a simple, light and fast , dependency injection based micro-service framework written in Go.

???? YoyoGo is a simple, light and fast , dependency injection based micro-service framework written in Go. Support Nacos ,Consoul ,Etcd ,Eureka ,kubernetes.

YoyoFx 558 Jan 4, 2023
Another excellent micro service framework

xservice [WIP] Another excellent micro service framework Features RESTful API (base on echo/v4) gRPC & gRPC gateway service & Swagger document generat

新片场 9 May 28, 2022
EaseMesh is a service mesh that is compatible with the Spring Cloud ecosystem.

A service mesh implementation for connecting, control, and observe services in spring-cloud.

MegaEase 443 Jan 4, 2023