浏览模式: 标准 | 列表
1月
08

PHPRPC 3.0 for ASP 发布

Beta 2:

修正了客户端得到返回错误结果时为 undefined 的 bug。
增加了服务器端输出重定向功能的支持。

Beta 1:

实现了 PHPRPC 3.0 协议升级描述中的内容。
实现了 PHPRPC 3.0 for ASP API Draft 中的所有接口。

下载地址请访问 PHPRPC 官方网站:http://www.phprpc.org

» 阅读全文

12月
14

Flash 照相 PHPRPC 上传

先给大家看个小例子:http://www.phprpc.org/samples/takePhoto/

用 Flash 照相很容易,但是最好是先将它编码为 JPEG 格式在上传比较节省带宽。网上已经有了 JPEG 编码的 AS3 类,不过需要修改才能使用。修改后的代码我会附到该文最后。

嗯,其实这不是重点,下面才是重点,因为在 Flash9 中我不知道怎么用 AS3 弹出提示框,Flash9 中的 AS3 控件太少了。没办法我最后用的是 Flash 跟 javascript 交互的方式来实现照相上传的。而 javascript 在这里唯一做的事情就是触发照相上传事件和显示上传后的返回信息。如果你打算完全用 Flex 来做,也许根本不需要这么麻烦。

先来看 Flash 怎么做吧。首先拖两个 UILoader 控件到 Flash 的第一帧中,大小设置为你要照的照片的大小,这两个 UILoader 是后面用来放摄像头视频和照片用的。我设置的大小是 120×160。

» 阅读全文

11月
12

PHPRPC Client 3.0 for Perl

这个 PHPRPC 客户端程序支持加密传输,引用参数传递等诸多特征,跟 PHP 版本的客户端的使用方法基本相同。不过因为 PHP 序列化反序列化的包用的是 CPAN 的 PHP::Serialization 这个包,这个包的实现本身有一些问题,比如对负数的反序列化错误,不支持递归引用的序列化和反序列化等,因此,对于某些调用可能会失败,等以后把 PHP::Serialization 完善一下就可以解决了。

PHPRPC Client 3.0 for Perl

不过暂时不再搞 Perl 版本了,接下来改继续做 PHPRPC 3.0 for .NET 啦,好多人都在等待,我都有点不好意思说了。

» 阅读全文

7月
08

PHPRPC 3.0 for Java Beta 5

Beta 5 Update:

增加了 getEncryptMode 方法。
将日期序列化和反序列化做了修改,使其跟 PHPRPC for PHP 中的 PHPRPC_Date 类兼容。
增加了对 PHP6 中字符串转义序列化的反序列化支持。
优化 Base64 encode 算法。
为服务器增加了 setEnableGZIP 方法,默认把 GZIP 输出设为关闭。
取消了不必要的同步操作。
完善了错误处理。
修正了在 Resin,JRun 和 Jetty 上运行的一些小问题。
修正了客户端对 chunked 编码处理的一些错误。
修改了对 java.util.Date 类型对象的序列化和反序列化,使其可以与其它语言中所对应的日期时间类型直接交换。

Beta 4 Update:

改进了序列化递归对象的算法。
对将转型代码单独写成了 Cast 静态类,提供了 getBytes、toString 和 cast 三个方法,可以方便的用于类型转换。
对 byte[] 和 String 的处理做了进一步优化,ArrayList 和 HashMap 中保存的 String 和 byte[] 类型的对象在反序列化后都会变为 byte[] 类型,如果需要字符串类型可以使用,Cast.toString 方法或者 Cast.cast 方法来转型。

Beta 3 Update:

对代码做了进一步优化。
修正了 byte[] 反序列化时的错误。
优化了 char[] 和 StringBuffer 对象的传输,它们都将作为字符串进行序列化传递。并且提供了它们与其它基本类型之间的转换。
当用户在定义远程方法时,如果参数表最后有 javax.servlet.http.HttpSession session 参数,则服务器自动传输 session 对象。
当用户在定义远程方法时,如果参数表最后有 javax.servlet.ServletContext application 参数,则服务器自动传输 application 对象。
以上两个参数也可以跟 PrintStream out 或 PrintWriter out 组合使用。

Beta 2 Update:

实现了通过给定远程过程调用的接口来返回该接口的服务代理对象实例,通过该实例可以直接调用服务器端的远程过程。
提供了更广泛的类型转换(例如可将 Boolean 型数据转换为数字类型),与弱类型语言(如 PHP)进行交互更加方便。
实现了对所有可序列化类型,包括内部类的支持。并且序列化后的类名包括包名,例如 java.util.Date 类序列化后的名称为 java_util_Date,其他不支持名空间的语言可以使用该名称的类。
服务器端输出重定向除了支持 PrintStream out 参数外,还增加了对 PrintWriter out 参数的支持。但只能使用其中之一。

Beta 1 Update:

实现了 PHPRPC 3.0 协议升级描述中的内容。
实现了 PHPRPC 3.0 for Java API Draft 中的所有接口。
支持 Java 1.4.2 及其更高版本。
服务器和客户端均支持 HTTP gzip 压缩传输。
服务器端实现了加密传输中 Cookie-less 会话支持。
支持 Keep-Alive 连接。
支持更多可序列化对象的传输。
对 byte[] 类型的传输做了优化。
对输出重定向功能做了优化,现在不在把 System.out 的内容重定向到客户端。当用户定义远程方法时,如果参数表最后有 PrintStream out 参数,则服务器自动传输该对象,通过该对象输出的内容将重定向到客户端。
对 URL 参数和 session 处理做了优化,当用户在定义远程方法时,如果参数表最后有 javax.servlet.http.HttpServletRequest request 参数,则服务器自动传输该对象,用户可通过该对象来获取 URL 参数和 session。
以上两个参数顺序任意,也可只写一个或没有,但必须在所有用户传入参数的最后。
与 PHPRPC 2.1、2.0、1.1 的服务器和客户端有条件兼容。

Download: phprpc_3.0_java_beta_5.zip

» 阅读全文

7月
08

PHPRPC 3.0 for ASP API Draft

Server API:

constructor PHPRPC_Server();
constructor PHPRPC_Server.create();

Create the PHPRPC Server object. To use create method create PHPRPC Server object in VBScript.

add(String funcname);
add(String funcname, Object obj, String alias);
add(Function func, Object obj, String alias);
add(String[] funcnames);
add(String[] funcnames, Object obj, String[] aliases);
add(Function[] functions, Object obj, String[] aliases);

Add global functions to the server. The functions can have aliases. If functions if typeof Functon, it must have aliases. The obj is the execute context of the functions. This method must be called before start().

start();

Start the PHPRPC server. This method usually be called at the end of page. This method can NOT be called twice or more in one page.

Client API:

constructor PHPRPC_Client();
constructor PHPRPC_Client(String serverURL);
constructor PHPRPC_Client(String serverURL, Array functions);
constructor PHPRPC_Client.create();
constructor PHPRPC_Client.create(String serverURL);
constructor PHPRPC_Client.create(String serverURL, Array functions);

Create PHPRPC Client object. The serverURL supports using username and password for the HTTP Basic Authorization, but it is NOT recommend. To use create method create PHPRPC Client object in VBScript.

If you hope that the PHPRPC Client initialize remote functions without connecting to the PHPRPC Server, you can use the parameter functions.

setProxy(String address);
setProxy(String host, String port);
setProxy(String host, String port, String username, String password);

Set the proxy server for the transfer. The address supports using username and password for the HTTP Basic Authorization, but it is NOT recommend. You can set the address to null to cancel the proxy server.

useService(String serverURL);
useService(String serverURL, String username, String password);
useService(String serverURL, String username, String password, Array functions);

Set the URL of the PHPRPC Server. The serverURL supports using username and password for the HTTP Basic Authorization, but it is NOT recommend. You’d better to set username and password alone.

If you hope that the PHPRPC Client initialize remote functions without connecting to the PHPRPC Server, you can use the parameter functions.

Boolean setKeyLength(Integer keyLength);

Set the key length for the key exchange. This method will return false when the key exchange already to be done.

Integer getKeyLength();

Get the key length. This method will return actual value when the key exchange being done. Otherwise, you will get the default length or which length you set.

setEncryptMode(Integer encryptMode);

Set the encrypt mode. 0 denotes no encrypting any data. 1 denotes encrypting arguments in the transfer. 2 denotes encrypting arguments and result. 3 denotes encrypting arguments, result and output of the server console.

Integer getEncryptMode();

Get the encrypt mode.

invoke(String funcname, Object[] args);
invoke(String funcname, Object[] args, Boolean byRef);

Invoke the server function with the function name and arguments array. if you want to transfer the arguments by reference, set byRef to be true.

remoteFunctionName(arg1, arg2, ..., argN);

Invoke the server function directly. You can’t transfer the arguments by reference in this mode.

String getOutput();

Get the output of the server console after invoke the server function.

PHPRPC_Error getWarning();

Get the warning of the server function after invoke the server function.

» 阅读全文