这个可以算是所有语言中完成最快的一个版本了,但是因为 Python 本身每个版本差异比较大,所以目前的实现仅支持在 2.5 和 2.6 版本的 Python 上运行。不过恰好 Google App Engine 是使用的 Python 2.5,所以这个版本是支持 Google App Engine。但是 Google App Engine 是不支持 httplib 模块的,所以专门为 Google App Engine 提供的客户端的特别实现,使用的是 urlfetch 模块。它与非 Google App Engine 的客户端相比,只是去掉了代理服务器的支持,其它的功能和用法完全一致。服务器端对加密传输的支持需要用到 Session,目前只对 flup 0.5 中的 Session 中间件做了测试,并且顺利通过。其它的 Session 中间件未做测试,不过只要是 WSGI 的 Session 中间件实现,应该都是可以支持的。
下载可以在 http://www.phprpc.org 的官方站点上下载,也可以到 http://pypi.python.org/pypi/phprpc/3.0.0 上下载。不过我没有做成 eggs 包。因为完全用 python 语言编写,所以采用拷贝安装的方式即可。
另外安装时注意,dhparams 目录是放在你发布服务器端应用程序的目录下的,不要拷贝到 python 的库目录下。
至于文档,我会在 phprpc 官方网站上以 wiki 的形式来提供,包括其它语言版本的文档。接下来,就是忙文档了。
» 阅读全文
今天有人问 PHPRPC for .NET服务器端的 AddGlobal 方法是做什么用的,这个方法是最近的版本中新加的。它的主要作用就是提高服务器端的效率。它的作用跟原来的 Add 方法类似,但是 Add 方法是为每一个 PHPRPC_Server 的实例对象添加发布方法的,而 AddGlobal 是给整个 PHPRPC_Server 添加发布方法的。也就是说用 AddGlobal 添加一次后,所有的 PHPRPC_Server 对象实例中都可以直接发布这些方法,而不需要每次实例化后再添加,这样就可以提高服务器的处理效率了。AddGlobal 方法一般用在 Global.asax 中,它的用法如下,下面以 ASP.NET 2.0 为例,首先在你的站点下建立这个文件 Global.asax,内容如下:
Global.asax 代码
- <%@ Application Language="C#" CodeBehind="Global.asax.cs" Inherits="Global" %>
然后在 App_Code 目录下建立 Global.asax.cs 文件,内容如下:
Global.asax.cs 代码
- using System;
- using org.phprpc;
-
- public class Test {
- public double add(double a, double b) {
- return a + b;
- }
- public string add(string a, string b) {
- return a + b;
- }
- public int sub(int a, int b) {
- return a - b;
- }
- public int inc(ref int n) {
- return n++;
- }
- public static string hello(string name, System.IO.TextWriter output) {
- string result = String.Concat("hello ", name);
- output.Write("output: " + result);
- return result;
- }
- };
-
- public class Global: System.Web.HttpApplication {
- protected void Application_Start(Object sender, EventArgs e) {
- PHPRPC_Server.AddGlobal(new string[] { "add", "sub", "inc" }, new Test());
- PHPRPC_Server.AddGlobal("hello", typeof(Test));
- }
- }
这样就给全局的 PHPRPC_Server 类添加上了 add, sub, inc 和 hello 方法了。接下来发布的网页就简单多了,比如发布的网页是 index.aspx 的话,那么它的内容只需要这么点就够了:
index.aspx 代码
- <%@ Page Language="C#" %>
- <% new org.phprpc.PHPRPC_Server().Start(); %>
是不是很简单啊?
» 阅读全文
该版本支持 Ruby 1.8.5 及其更高版本。包括客户端和服务器的实现。服务器除了支持以 cgi、fcgi、scgi、lsapi 方式运行外,还支持以独立服务器 ( mongrel、thin、ebb 或 webrick ) 方式运行。
服务器开发接口统一,不管以什么方式运行,程序写法都是一模一样的。这里推荐以 mongrel 或 thin 独立服务器方式运行,因为这两种运行方式相比其他方式来说要快速稳定。
下载:http://www.phprpc.org
» 阅读全文
PHPRPC 3.0 for Delphi 断断续续的开发了都快近 1 年了,不过今天终于全部完成,并发布了!
PHPRPC 3.0 for Delphi 是在 Delphi 7 环境下开发的,采用 CLX 方式开发,核心部分全部使用 RTL 编写,通讯部分使用了 Indy 库(Indy 库也是跨平台的开源库),没有用到任何 VCL 控件,并且 PHPRPC_Client 本身也做成了 CLX 控件,不但使用非常简单,而且还支持 Kylix。也就是说,不但可以支持 Win32 原生程序开发,而且还支持 Linux 程序开发。
其它版本的 Delphi 是否支持尚未测试。另外,文档也需要过些日子才会发布。在这之前,还需要完成 Java 和 .NET 版本的升级,并且补充完整其它版本的文档。
这些工作完成后,就开始计划中的下一个语言版本:PHPRPC for Ruby !
下载地址:http://www.phprpc.org/
2008 年 9 月 14 日更新(中秋节版)
增加了对 Delphi 2009 的 Windows 原生程序开发的支持。
» 阅读全文
PHPRPC 3.0 for .NET 可能让大家期待太久了。不过今天终于完成了。
这个版本支持 .NET Framework 1.0、1.1、2.0、3.5,.NET Compact Framework 1.0、2.0、3.5 和 Mono。也就是说,支持目前所有版本的 .NET。支持所有基本类型、大部分容器类型(如ArrayList、Hashtable、数组等)、自定义可序列化对象类型的传递。可以与其它语言的 PHPRPC 服务器和客户端进行完美交互。
下载地址请访问 PHPRPC 官方网站:http://www.phprpc.org
2008 年 2 月 24 日更新:
对于动态代理对象增加了引用参数传递的支持。
对于服务器端发布的方法也增加了引用参数传递的支持。
对客户端和服务器端传递包含大量自定义对象的容器(数组、ArrayList、Hashtable 等)进行了一些优化。
2008 年 7 月 9 日更新:
修正了对象反序列化的一个 bug,该问题会影响传递对象数组或者传递带有对象的 ArrayList、Hashtable 等容器的正常传递。
2008 年 8 月 17 日更新:
增加了发布全局方法的功能,进一步提高了服务器性能。
修正了大整数右移位运算的 bug。
2008 年 8 月 23 日更新:
修正 Cookieless Session 情况下 URL 重定向的错误。
修正 Session Cookie 被错误清除的问题。
服务器端返回时增加了 Content-Length 头,避免响应信息被 chunked 编码。
修正了 UTF-8 编码时,输出重定向和序列化字符串被添加 UTF-8 BOM 头的问题。
Mono的二进制版本重新用 1.2.6 版本的 Mono 编译,1.9.2 版本 Mono 编译器存在错误,编译出的二进制版本无法正确执行。
» 阅读全文