`
qq123zhz
  • 浏览: 534499 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

基于SAE的应用开发

    博客分类:
  • java
阅读更多

Sina App Engine (简称SAE)是由新浪网研发中心出品的云计算平台,也是国内第一个公有云平台。从09年11月alpha版本发布到今年8月beta版上线,SAE已经进入了稳定运行的阶段。即使是在我们严格控制邀请码的情况下,也已经拥有了超过4000的开发者和超过3000的应用。光是新浪微博的应用频道,就有40个以上的应用运行在SAE上,而在Web应用的Top10中,有7个都运行于SAE。

  • SAE可以降低开发者在硬件方面的投入,省钱;
  • 可以加快应用开发的速度,省时间;
  • 可以提供门户级别的可靠性,让大家专注于应用本身,省心。
  • 特别适合于没有专门的架构团队和运维团队的公司和个人使用。

SAE采用大家熟悉的PHP+Mysql作为主要环境。所以在SAE上开发应用并不需要学习新的知识,只需要注意一些细节就可以了。移植一个现有的PHP应用到SAE上是很简单的事情,之前我将WordPress移植到SAE上时就只花了3个小时。

本地文件操作

在SAE上不允许对本地文件系统进行写操作。这既是系统架构的要求,也是为了保证代码的安全和应用的性能。

我们提供了TMPFS服务来解决临时文件的问题。TMPFS服务为开发者提供了一个目录,开发者可以将文件写到这个目录下,但是当本次请求结束时,这个文件将不再存在。

为了方便大家迁移项目,我们还允许大家利用PHP Wrapper通过文件系统函数来操作SAE的Memcache和Storage。大家知道Smarty是很依赖文件系统的模板,但是通过Wrapper方式,只需要修改非常少的代码,就可以让Smarty改为使用SAE的Memcache服务。(https://code.google.com/p/smarty4sae/

数据抓取

出于安全原因,SAE不允许应用直接抓取外部的数据。所有对外的抓取操作,都需要使用Fetchurl服务。相对于CURL来做,封装后的Fetchurl服务其实更为简单,也可以支持自定义头和cookie等操作。

数据库

SAE使用的是标准的Mysql数据库,所以以Mysql为核心的应用不用做任何修改就能使用。Mysql的host和端口信息我们通过环境变量提供,直接在Runtime中获取就可以了。

我们强烈建议大家使用SaeMysql class来操作SAE的数据库,因为这个class默认进行了主从分离,可以避免在高并发时出现锁表等问题。

分布式存储

由于不允许对本地文件系统进行写操作,我们提供了分布式存储服务来帮大家存放一些应用运行过程中产生的文件,比如用户上传的图片等。使用SaeStorage可以方便的保持这些内容并生成可访问的URL。

在了解了以上需要注意的地方后,大家就可以很容易的在SAE上开发应用了。

在开发应用之前,你需要有新浪微博的账号和SAE的账号。微博的账号可以在这里注册;SAE的账号在这里可以注册

有了微博账号之后,就可以在微博开放平台创建应用了。

这部分微博开放平台上有详细的图文说明,就不再重复了。完成应用的创建后,可以得到应用App Key和App Secret。

在SAE上创建应用

使用之前注册的SAE账号(不同于微博账号,是完全独立账号)登入SAE,在“我的应用”下,“创建应用”。

我们创建了一个appname为relink的应用,它可以通过relink.sinaapp.com进行访问。

在SAE上写微博应用不用从头开始,有方便快捷的应用向导可用。

在“应用向导”下选择“社会化应用”分类,点击“新浪微博OAuth框架”下边的“安装”按钮。

选择安装到应用“relink”下,安装为新版本1。

填写好我们从微博开放平台得到的微博应用的AppKey和AppSecret。

至此,我们已经完成了最基本的微博应用。

访问relink.sinaapp.com,已经可以进行应用的授权和当前用户最新微博的列表了。

编写代码

接下来我们修改weiblolist.php的代码,加入“查看转发”连接。

进入应用“relink”的管理页面,点击左侧的“代码管理”,在右侧的“操作”列点击“编辑代码”,启用SAE的在线编辑器。

点击左侧的文件名,进入代码编辑。

我们给现在的微博列表添加一个“查看转发”的链接。

Ctrl+S发布代码,刷新页面看效果。

在点击编辑器左侧的新建文件按钮,创建show.php。

编写展示代码

<?php
   // 载入共用函数和配置
   session_start();
   include_once( 'config.php' );
   include_once( 'saet.ex.class.php' );
   header('Content-Type:text/html; charset=utf-8');
   // 创建SaeTClient 对象
   $c = new SaeTClient( WB_AKEY , WB_SKEY , $_SESSION['last_key']['oauth_token'] , $_SESSION['last_key']['oauth_token_secret'] );
   
   // 获取并展示转发信息
   if( $items = $c->oauth->get('http://api.t.sina.com.cn/statuses/repost_timeline.json' , array('id'=>$_REQUEST['sid'])) ):?>
<div style="border:1px solid red;padding:5px;margin:5px">原始微博 - <?=$items[0]['retweeted_status']['user']['name']?>: <?=$items[0]['retweeted_status']['text']?></div>
   <?foreach( $items as $item ):?>
     <div style="border:1px solid #eee;padding:5px;margin:5px"><?=$item['user']['name']?>: <?=$item['text']?></div>
   <?endforeach;?>
<?php endif; ?>

点击之前页面的“查看转发”链接,即可查看到相关信息。

基于SAE的微博应用开发

作者 陈理捷 发布于 2010年12月15日 上午12时0分

社区
架构 ,
Java,
.NET,
Ruby
主题
PHP
标签
故事测试
<!-- AddThis Button BEGIN -->

<script src="http://s7.addthis.com/js/250/addthis_widget.js#username=infoq" type="text/javascript"></script>

<!-- AddThis Button END -->

之前在微博开发者大会上做过一个演讲,不过因为时间和形式的问题,忽略了很多细节。正好InfoQ的同学问我能不能写一篇文章,于是就有了本文。文章分三个部分,介绍篇讲SAE的基本情况;环境篇讲SAE和标准PHP环境的主要区别;实践篇则提供了一个完整的微博应用开发实例。

介绍篇

Sina App Engine (简称SAE)是由新浪网研发中心出品的云计算平台,也是国内第一个公有云平台。从09年11月alpha版本发布到今年8月beta版上线,SAE已经进入了稳定运行的阶段。即使是在我们严格控制邀请码的情况下,也已经拥有了超过4000的开发者和超过3000的应用。光是新浪微博的应用频道,就有40个以上的应用运行在SAE上,而在Web应用的Top10中,有7个都运行于SAE。

  • SAE可以降低开发者在硬件方面的投入,省钱;
  • 可以加快应用开发的速度,省时间;
  • 可以提供门户级别的可靠性,让大家专注于应用本身,省心。
  • 特别适合于没有专门的架构团队和运维团队的公司和个人使用。

环境篇

SAE采用大家熟悉的PHP+Mysql作为主要环境。所以在SAE上开发应用并不需要学习新的知识,只需要注意一些细节就可以了。移植一个现有的PHP应用到SAE上是很简单的事情,之前我将WordPress移植到SAE上时就只花了3个小时。

本地文件操作

在SAE上不允许对本地文件系统进行写操作。这既是系统架构的要求,也是为了保证代码的安全和应用的性能。

我们提供了TMPFS服务来解决临时文件的问题。TMPFS服务为开发者提供了一个目录,开发者可以将文件写到这个目录下,但是当本次请求结束时,这个文件将不再存在。

为了方便大家迁移项目,我们还允许大家利用PHP Wrapper通过文件系统函数来操作SAE的Memcache和Storage。大家知道Smarty是很依赖文件系统的模板,但是通过Wrapper方式,只需要修改非常少的代码,就可以让Smarty改为使用SAE的Memcache服务。(https://code.google.com/p/smarty4sae/

数据抓取

出于安全原因,SAE不允许应用直接抓取外部的数据。所有对外的抓取操作,都需要使用Fetchurl服务。相对于CURL来做,封装后的Fetchurl服务其实更为简单,也可以支持自定义头和cookie等操作。

数据库

SAE使用的是标准的Mysql数据库,所以以Mysql为核心的应用不用做任何修改就能使用。Mysql的host和端口信息我们通过环境变量提供,直接在Runtime中获取就可以了。

我们强烈建议大家使用SaeMysql class来操作SAE的数据库,因为这个class默认进行了主从分离,可以避免在高并发时出现锁表等问题。

分布式存储

由于不允许对本地文件系统进行写操作,我们提供了分布式存储服务来帮大家存放一些应用运行过程中产生的文件,比如用户上传的图片等。使用SaeStorage可以方便的保持这些内容并生成可访问的URL。

在了解了以上需要注意的地方后,大家就可以很容易的在SAE上开发应用了。

实践篇

接下来我们来看看如何从头到尾开发一个简单的微博应用。

应用目标

先说说我们要做的应用。微博开放平台最近新增了一个接口,可以查询当前用户发布的某一条微博的转发信息。在微博平台上,信息通过转发进行链式传播,转发信息对微博营销来说是很重要的;而目前微博Web版本并不显示这些信息。所以我们想做一个应用,允许用户可以查看某条微博的转发情况。

具体做法如下:

  • 首先要取得用户授权
  • 取得当前用户的最近若干条微博,添加查看链接
  • 获取并展示被选中微博的转发信息

准备工作

在开发应用之前,你需要有新浪微博的账号和SAE的账号。微博的账号可以在这里注册;SAE的账号在这里可以注册

有了微博账号之后,就可以在微博开放平台创建应用了。

这部分微博开放平台上有详细的图文说明,就不再重复了。完成应用的创建后,可以得到应用App Key和App Secret。

在SAE上创建应用

使用之前注册的SAE账号(不同于微博账号,是完全独立账号)登入SAE,在“我的应用”下,“创建应用”。

我们创建了一个appname为relink的应用,它可以通过relink.sinaapp.com进行访问。

在SAE上写微博应用不用从头开始,有方便快捷的应用向导可用。

在“应用向导”下选择“社会化应用”分类,点击“新浪微博OAuth框架”下边的“安装”按钮。

选择安装到应用“relink”下,安装为新版本1。

填写好我们从微博开放平台得到的微博应用的AppKey和AppSecret。

至此,我们已经完成了最基本的微博应用。

访问relink.sinaapp.com,已经可以进行应用的授权和当前用户最新微博的列表了。

编写代码

接下来我们修改weiblolist.php的代码,加入“查看转发”连接。

进入应用“relink”的管理页面,点击左侧的“代码管理”,在右侧的“操作”列点击“编辑代码”,启用SAE的在线编辑器。

点击左侧的文件名,进入代码编辑。

我们给现在的微博列表添加一个“查看转发”的链接。

Ctrl+S发布代码,刷新页面看效果。

在点击编辑器左侧的新建文件按钮,创建show.php。

编写展示代码

<?php
   // 载入共用函数和配置
   session_start();
   include_once( 'config.php' );
   include_once( 'saet.ex.class.php' );
   header('Content-Type:text/html; charset=utf-8');
   // 创建SaeTClient 对象
   $c = new SaeTClient( WB_AKEY , WB_SKEY , $_SESSION['last_key']['oauth_token'] , $_SESSION['last_key']['oauth_token_secret'] );
   
   // 获取并展示转发信息
   if( $items = $c->oauth->get('http://api.t.sina.com.cn/statuses/repost_timeline.json' , array('id'=>$_REQUEST['sid'])) ):?>
<div style="border:1px solid red;padding:5px;margin:5px">原始微博 - <?=$items[0]['retweeted_status']['user']['name']?>: <?=$items[0]['retweeted_status']['text']?></div>
   <?foreach( $items as $item ):?>
     <div style="border:1px solid #eee;padding:5px;margin:5px"><?=$item['user']['name']?>: <?=$item['text']?></div>
   <?endforeach;?>
<?php endif; ?>

点击之前页面的“查看转发”链接,即可查看到相关信息。

小结

到这里,我们已经完成了应用的开发。虽然应用本身很简单,但是完整的演示了整个开发流程。期待大家都能在SAE上开发出优秀的微博应用。微博开放平台的接口可以查阅API文档,SAE提供的API可以访问http://apidoc.sinaapp.com/

 文章来源:http://www.infoq.com/cn/articles/clj-sae-mini-blog-app

我的sina app 应用地址:http://zhenghuazhi.sinaapp.com,如果你看到的是:SAE ERROR: APP IS OUT OF QUOTA,说明我的配额用完了,流量真少,效果见:http://huazhizheng.appspot.com.......希望新浪搞好一点。。。。。哎。。。。。

分享到:
评论

相关推荐

    基于 SAE J1939 协议的发动机虚拟仪表及故障诊断系统开发

    ### 基于SAE J1939协议的发动机虚拟仪表及故障诊断系统开发 #### 一、引言 随着汽车电子技术的迅速发展,现代汽车越来越多地集成了复杂电子设备,这些设备的集成提高了汽车性能的同时也带来了对车载通信网络的需求...

    基于SAE的北斗信息服务混合App开发.pdf

    本文主要探讨了基于SAE(新浪云服务平台)的北斗信息服务混合应用程序的开发,旨在提升公众对北斗导航系统的认知并推动其广泛应用。北斗导航系统作为中国自主研发的全球卫星导航系统,已不再局限于导航功能,而是...

    基于SAE J1939的汽车智能载重系统_覃熊艳.rar

    在覃熊艳的研究中,可能详细探讨了如何设计和实现这样一个基于SAE J1939的智能载重系统,包括硬件选型、协议解析、软件开发以及系统集成。这可能涉及到传感器的选型与接口设计、ECU之间的通信协议实现、数据处理算法...

    基于SAE的云计算原型服务平台的架构与应用.pdf

    本文针对云计算技术在四旋翼飞行器数据处理方面的应用问题,提出了一个基于SAE云计算平台的原型服务平台架构模型。在深入分析当前四旋翼飞行器采集数据所面临的数据量大、处理速度慢、存储困难及资源消耗大的问题后...

    SINA SAE 本地开发环境

    新浪SAE是新浪公司提供的一个基于云计算的平台即服务(PaaS)产品。它提供了一整套Web应用托管服务,包括动态网站托管、数据库服务、存储服务等,支持PHP、Python、Java等多种编程语言。对于开发者来说,SAE消除了...

    基于SAE云计算平台进行教学实践.pdf

    最后,搭建基于SAE平台的《信息化概论》教学网站,旨在优化教师的教学过程和学生的学习过程。在网站中教师可以发布和更新教学内容,学生可以在线学习和讨论,同时网站可以作为评估学生学习成效和教师教学质量的工具...

    基于SAE+J1939的汽车网络监控系统设计

    基于SAE J1939的汽车网络监控系统为汽车电子设备的开发、调试提供了强大的支持。通过结合USB接口的便捷性和CAN总线的可靠性,该系统不仅能有效监控车载网络的状态,还能简化J1939协议的学习曲线,对于提升汽车电子...

    PHP+新浪微博开放平台+新浪云平台(SAE)开发微博应用——PHP SDK中Demo程序简析

    SAE(Sina App Engine)是新浪提供的基于云计算的平台,可以简化应用的部署和管理。 二、建立微博应用的过程 创建微博应用时,首先需要在新浪微博开放平台上注册并获取AppKey(WB_AKEY)和App Secret(WB_SKEY),...

    ThinkPHP(SAE引擎)

    - **sae_app_wizard.xml**:SAE应用的配置文件,用于指导自动部署。 - **App**:存放应用程序的核心代码,如控制器、模型、视图等。 - **ThinkPHP**:ThinkPHP框架的核心库文件,包含各种组件和类库。 - **Public**...

    基于SAE J1939 协议的车用燃料电池管理系统设计.rar

    本文将深入探讨基于SAE J1939协议的车用燃料电池管理系统的设计,包括协议栈的结构、燃料电池系统的基本原理以及如何利用J1939协议实现有效的系统监控和控制。 首先,SAE J1939协议是针对重型商用车辆和工程设备...

    一个旅游产品电子商务网站,基于SAE的PHP版.zip

    【标题】"一个旅游产品电子商务网站,基于SAE的PHP版.zip" 描述了一个使用PHP编程语言构建的电子商务平台,该平台特别强调了其在腾讯云服务平台(SAE,即Server Application Engine)上的运行环境。这表明这个项目是...

    yii-sae-app

    标题“yii-sae-app”指的是一个基于Yii框架的示例应用程序,特别设计用于在新浪SAE(Sina App Engine)平台上运行。这个项目是开发者学习如何在新浪SAE上部署和运行Yii应用的一个实例。 首先,我们需要理解Yii框架...

    sae代码片段,亲自测试

    在描述中提到的“python代码(SAE代码)”,暗示我们处理的是一个用Python编写的SAE应用实例。Python是SAE支持的主要编程语言之一,它提供了丰富的库和简洁的语法,使得开发者可以轻松地构建各种Web应用。 针对...

    SAE测试web项目(连接SAE数据库)demo

    SAE是新浪公司提供的一种基于云计算的PaaS(平台即服务)平台,它为开发者提供了便捷的Web应用程序托管和运行环境,无需关心底层硬件和基础设施的维护。 首先,SAE支持多种Web框架,如PHP、Python、Java等,这里...

    基于STM32的SAE-J1939协议在压裂车中的应用.pdf

    在本篇文章中,作者详细介绍了基于STM32微控制器以及SAE-J1939协议在压裂车数字化控制系统中的应用。文章首先讨论了压裂技术发展对作业质量和精度提出的新要求,强调了使用模拟量监控的不足。接着,文章深入探讨了...

    sina云平台 sae springmvc框架

    本文将深入探讨在SAE平台上使用Spring MVC框架进行Web应用开发的知识点。 1. **SAE平台概述** SAE提供了丰富的服务,如存储、数据库、缓存、消息队列等,使得开发者能够构建复杂的分布式应用。它支持多种编程语言...

    新浪SAE云计算入门攻略

    新浪SAE(Sina App Engine)是新浪公司推出的...总之,新浪SAE云计算入门攻略详细介绍了SAE平台的基本概念、优势、不足、使用方法和一些操作上的细节,为有志于利用SAE平台进行应用开发的用户提供了实用的指导和帮助。

    OneThink Sae版

    新浪云Sae是一个基于云计算的服务平台,提供了包括存储、数据库、计算在内的多项服务,为开发者提供了一个无需关心底层硬件设施,只需专注于应用开发的环境。OneThink Sae版就是在这样的背景下诞生的,它对原版One...

    针对新浪SAE开发的图表程序_PHP_下载.zip

    新浪SAE是新浪公司提供的一种基于云计算的服务,它允许开发者在无需购买和维护硬件的情况下运行Web应用程序。这个程序可能是为了帮助用户在SAE平台上方便地展示、分析和理解数据,通过图表的形式进行数据可视化。 ...

Global site tag (gtag.js) - Google Analytics