各种App Engine的简单比较

前段时间想要申请看一下新版的ACE,但是ACE的工程师不给我邀请码,说等到正式公开测试的时候亲自给我邀请码,然后我就信了~~~

但是,看到新版的ACE上面明明写的可以发邮件申请嘛~于是就发了封邮件;

下面简单的对比一下GAE和国内各种App Engine的特点;

GAE:GAE近来刚加入对PHP的支持,可以自行配置PHP.INI,有少量的禁用函数,相对来说使用起来还是非常灵活的。GAE的SQL是GOOGLE自己的CLOUD SQL,使用起来也比较方便;GAE PHP提供一定量的免费配额,CLOUD SQL是收费的。同时GAE PHP也继续支持了java所支持的TASKQUEUE memcache等,使用起来都比较方便,只是在国内需要绑定域名才能正常访问。
SAE:国内发展较早的APP ENGINE,开始的时候基本模仿GAE的一些特性,率先支持PHP;支持PHP是走在了GAE的前面,非常的不错。继承有来自GAE的特性如:MC,TASKQUEUE,CRON等也有自己的许多特色服务比如KVDB;而且支持mysql(RDC),这是GAE所未支持的
BAE:虽然走在了SAE的后面,但也是发展迅速,从正式对外公测到现在将近一年半的时间,发展成为一个较为不错的app engine;拥有memcache,taskqueue,消息服务,mysql(RDS),等等;还有BAE周边的一些服务,比如BCS,这个相对于SAE的Storage来说还是较为强大的
ACE:之前先是公测,后来不知道为什么改为了内测,现在还是内测;现在拿到了邀请码,发现功能还不是非常多,可能还正在进一步的开发和测试中吧。
上面的GAE,SAE,BAE都对本地写有限制,SAE做出了一个云商店,支持本地写,BAE做了一个类似远程磁盘(NFS)的解决方案,支持本地暂时写和永久写,但是都不是非常好的解决方案,也很期待ACE能够在本地写上面有一个非常好的解决方案。

BAE(百度云)消息推送实体机演示

这篇文章主要是演示百度云推送,从服务端到客户端,包含基本的流程。详细的当然还是需要亲临测试了的呢~

首先到百度云后台,进入应用设置页面,找到推送设置。填写包名,并下载Sdk,然后使用Eclipse For Android导入下载的SDK(这个Sdk中已经包含源代码,所以直接从源代码创建工程即可)

push-1

 

先推送一个富文本消息吧

首先要把Sdk编译成可以安装的APK文件,或者使用Eclipse For Android联机调试实体设备(当然,用模拟器也可以,我用的是平板电脑),安装到设备之后打开应用,并选择无账号初始化。

pushDemo

 

初始化完成之后到后台推送消息,以富文本消息为例子:

1.进入富文本消息推送,选择一个模版

push-2

 

2.填写富文本消息的主题

push-3

 

3.点击下一步按钮

push-4

 

4.选择发送即可推送到安卓设备;

发送之后可以在通知栏看到相应的通知,打开之后就是下面的富文本消息了

pushmsg

BAE(百度云)安卓云推送服务

关于云推送服务,SAE很早就开始做移动云,并提供了IOS的云推送服务。这次百度也出了自己的云推送服务,而且支持对安卓系统的云推送,可谓是一大惊喜。

BAE 百度推送服务,主要提供下面的三个加上一个自定义的功能(需写代码实现):

bae-push-control

1.面向TAG客户端的推送

这种方式的推送,支持三种客户类型:一种是所有的安卓客户端用户(当然要是自己开发的了),这样消息就可以发送给自己的所有客户端;另一种是发送给拥有特定TAG的用户。还有一种是指定特定的用户USER_ID进行的推送(因为一个用户可能同时拥有多台安卓设备,所有在指定user_id的同时,可以同时指定channel_id这样就可以指给用户的特定设备发送通知,也可以不指定,这样通知就会发送到该用户的所有设备);

bae-push

下面来详细说明一下发送到特定TAG用户:

百度云设计的这个TAG服务是一个非常有趣的服务,我想这种设计一定是来自于之前设计的消息队列的订阅。我们可以这样来使用这个服务,在客户端应用程序中给予不同用户需求给予不同的通知:比如,我们可以来做这样一个应用,应用内提供股票和天气预报两项服务,传统的方法是我们在服务器端来记录不同用户的需求,这样就可以来针对不同的用户推送不同的通知;但是有了TAG之后,我们可以在客户端做设置,设置不同的TAG,当服务器端推送通知的时候可以选择给不同TAG的用户推送不同的通知,即,给订阅天气预报的用户推送天气通知,给订阅股票的用户推送股票信息通知;这样我们就可以很方便的使用TAG来进行推送操作,而不需要存储用户的特定需求了。

同时,在上面的控制台推送图中,我们看到了,百度云推送还提供了对该通知的处理操作,包括点击通知打开应用或网页,以及其它的高级设置。当然客户端也就对应着相应的接口,这些大家可以到SDK里的文档中查询,可以说百度云的文档还是比较健全的,而且有比较好的SDK,开发起来还是非常方便的。

2.推送任意消息

百度云推送除了可以推送通知,也可以推送任意消息,同样支持TAG用户的区分。其实在下面的自定义消息中,可以发现,在SDK中其实也是使用的相同的方法,只是传入的参数不同而已。只要在Option里面做出相应的设置即可,包括下面的推送富文本信息也是如此。只不过百度云给我们已经做好了一些可视化的用户界面,可以直接使用。但是像这样的应用,大多数也是需要专人维护的,将这个推送接口放到开发者中心其实在时间的生产环境中意义不是很大,倒是可以方便开发者调试。笔者认为真正的使用,还是需要开发者自定义接口,来提供给应用维护人员来使用的。

	/**
	 * pushMessage
	 * 用户关注: 是
	 * 根据pushType, messages, message_type, [optinal] 推送消息
	 * @access public
	 * @param int $pushType 推送类型 取值范围 1-4, 1:单人,2:一群人tag, 3:所有人, 4:设备
	 * @param string $messages 要发送的消息,如果是数组格式,则会自动做json_encode;如果是json格式给出,必须与$msgKeys对应起来;
     * @param array $optional 可选参数,如果$pushType为单人,必须指定Channel::USER_ID(例:$optional[Channel::USER_ID] = 'xxx'),
	 *		如果$pushType为tag,必须指定Channel::TAG,
	 * 		其他可选参数:Channel::MSG_KEYS 发送的消息key,如果是数组格式,则会自动做json_encode,必须与$messages对应起来;
	 *		Channel::MESSAGE_TYPE 消息类型,取值范围 0-1, 0:消息(透传),1:通知,默认为0
	 *		还可指定Channel::MESSAGE_EXPIRES, Channel::MESSAGE_EXPIRES, Channel::CHANNLE_ID等
	 *
	 * @return 成功:PHP数组;失败:false
	 * @version 2.0.0.0
	*/
	//public function pushMessage($pushType, $messages, $msgKeys, $optional = NULL)
function test_pushMessage ($user_id)
{
    global $apiKey;
	global $secretKey;
    $channel = new Channel ( $apiKey, $secretKey ) ;
	$push_type = 1; //推送单播消息
	$optional[Channel::USER_ID] = $user_id;
	$message = "hello wold";
	$message_key = "msg_key";
    $ret = $channel->pushMessage ( $push_type, $message, $message_key, $optional ) ;
    if ( false === $ret )
    {
        error_output ( 'WRONG, ' . __FUNCTION__ . ' ERROR!!!!!' ) ;
        error_output ( 'ERROR NUMBER: ' . $channel->errno ( ) ) ;
        error_output ( 'ERROR MESSAGE: ' . $channel->errmsg ( ) ) ;
        error_output ( 'REQUEST ID: ' . $channel->getRequestId ( ) );
    }
    else
    {
        right_output ( 'SUCC, ' . __FUNCTION__ . ' OK!!!!!' ) ;
        right_output ( 'result: ' . print_r ( $ret, true ) ) ;
    }
}

bae-push-msg

 

3.富文本推送

富文本推送提供了非常友好的用户界面,百度云提供了不同的模板,而且可以使用HTML代码自定义。当然客户端也需要开发者去花费一点心思。下面是富文本推送界面一个模板的截图。

bae-push-media

 

百度云推送目前只提供了安卓系统的jar包,但从百度云推送的文档一些解释和说明中,曾提到,如果是IOS和WinPhone开发者,(可以如何如何去做…..),我们相信百度云很快就会陆续提供IOS和windows Phone平台的相关SDK给开发者使用。另外补充说明的一点,百度云推送是多应用共享一个推送服务,也就是说,如果一部安卓设备上面装有了多个使用百度云推送开发的应用,后台的推送服务只会运行一个服务,所以会非常的节省资源。但这也可能会导致应用漏洞的存在,当然百度云还处于快速发展阶段,4月份已经发布多个新版本的更新,所以很快百度云推送将会非常适合于生产环境的应用。

百度云推送SDK下载地址:http://developer.baidu.com/wiki/index.php?title=docs/cplat/push/sdk#.E5.AE.A2.E6.88.B7.E7.AB.AFSDK (包含使用手册和示例代码)

BAE正式开放,狂送1000元代金券,系统故障导致提前开始

本来是3月9日 0:00开始的BAE代金券疯抢活动,却因一个小bug而提前开始了

只要注册百度钱包,然后到抢1000代金券页面

http://developer.baidu.com/events

即可抢到点击活动抢礼券按钮即可成功抢到,抢到之后可以在微博钱包中看到有1000元百宝卡。

bae

BAE Emblog移植 简易教程

BAE Emblog移植问题还是比较多的,因为Emblog不像Wordpress那样只对配置文件写且仅写一次,之后的运行过程中不会再有写操作(除了上次文件),Emblog需要写配置文件和缓存文件,由于BAE在封禁了某些函数,导致Emblog无法获取到环境的相关信息,不能对环境做出明确的判断,导致Emblog无法只进行简单的文件修改移植。笔者在这里也已经成功的将Emblog移植到BAE环境,需要修改的地方有install.php和config.php这两个文件。笔者已经修改好,可以直接在下面的代码中点击View Code保存为php格式,并到Emblog目录里替换一下这两个文件,并修改数据库名字即可。有两处需要修改的地方,分别是install.php里的$BAE_dbname和config.php里的$dbname改为你的数据库名称即可。安装方法更原来Emblog方法一致,注意修改之后保存编码一致性。 继续阅读“BAE Emblog移植 简易教程”