GithubHelp home page GithubHelp logo

hprose's Introduction

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.

hprose's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hprose's Issues

Request support for unix socket

Unix Socket Domain as transport layer would be a killer feature in my case , particularly in Golang if possible. Thank you.

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

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

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

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

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"例子,都一样存在问题。

请问这个与phprpc的区别?

马哥,那个phprpc貌似也是你做的,膜拜啊,几乎把常用的语言都实现了,在python等动态语言里使用起来真的太简单了。请问这个hprose与phprpc有什么区别?是升级版还是全新的?是不是建议放弃phprpc,改用hprose?谢了。

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.

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]

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.