开源应用--好友买卖

上传人:jiups****uk12 文档编号:57170660 上传时间:2018-10-19 格式:PPT 页数:30 大小:2.99MB
返回 下载 相关 举报
开源应用--好友买卖_第1页
第1页 / 共30页
开源应用--好友买卖_第2页
第2页 / 共30页
开源应用--好友买卖_第3页
第3页 / 共30页
开源应用--好友买卖_第4页
第4页 / 共30页
开源应用--好友买卖_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《开源应用--好友买卖》由会员分享,可在线阅读,更多相关《开源应用--好友买卖(30页珍藏版)》请在金锄头文库上搜索。

1、开源应用-好友买卖,项目背景,开发一个OpenSocial应用的难点JavaScript语言 难于开发/测试/维护。 AJAX模式 大部分开发者不习惯,缺乏经验 应用要运行在多个OpenSocial平台上 界面风格差异;用户群差异;功能差异 文档 API升级快,文档更新慢。缺乏综合实例,从头摸索,无从下手。 对于初学者,还要考虑 数据库/ORM;单元测试/功能测试/集成测试;部署/运营;安全;产品策划;用户调查;UI;等等等。,项目概述,可运行的应用实例 并非API的Demo,而是要可以运行各个平台上,有一定功能的应用。 各种实际问题的解决办法。 会逐渐添加各种类型的应用:游戏互动型;信息共享

2、评论型;测试型; 提供应用框架,方便重用 基于MVC的Ajax客户端框架 服务器端的请求处理框架 全生命周期 开发 / 测试 部署 / 发布 运营 / 管理 统计,项目概述,多种服务端语言支持 目前Java,马上PHP,将来Python 您可以 重用已有工程进行修改 使用框架开发新应用 只导入部分功能 学习,参考,项目演示,http:/ http:/ http:/ http:/ http:/ (仅开发者可用) http:/ ,演示 ,演示 ,演示 ,演示 ,功能特性,客户端 MVC架构降低耦合度 根据不同平台,动态加载不同的CSS,页面模板,请求。 使用JavaScript Templat

3、e生成页面HTML 集中定义对Server的Request。可以对所有/Get/Post请求定义默认值。屏蔽了Get/Post请求得格式差异。 支持同步和异步两种页面刷新流程 (预定义的平台显示风格的alert和confirm窗口)(未实现),功能特性,服务端 基于Responsibility Chain(责任链)的处理流程 同一个应用针对不同平台可以配置不同的配置参数及处理流程 只需一个Web应用和数据库用来Serve多个平台上的同一个应用 Java对象到JSON对象的转换 (各个平台的Signed Fetch的签名验证例程)(未实现) (基于Web的管理,监控,和统计界面)(未实现) (发

4、布公告/即时消息给某个平台上的所有用户)(未实现),功能特性(1),MVC架构降低耦合度M: 可全局访问的数据结构 V: 一系列的页面模版 C: 发给容器/服务器请求,功能特性(1),MVC架构降低耦合度 全局可访问的Model FS = owner: person : id : “kong“,name : “Kong Guibin“,photo: “images/kongguibin.jpg“,data : cash : 1200,slaves : ,activities : ,friends : ,功能特性(1),MVC架构降低耦合度 在View的Template中直接访问Model,节省

5、不必要的参数传递Slaves : 您的奴隶 for slave in FS.owner.data.slaves $“SlaveProfile“|template:slaveforelse 您目前没有奴隶/for ,功能特性(1),MVC架构降低耦合度事件处理流程 用户事件触发Request的产生和发送(makeRequest) Request的callback只负责更新Model,然后发送出数据更新通知 ALL_UPDATED;MSG_UPDATED 预先注册的服务例程会接收事件,更新View反映Model最新状态 确保View始终是Model状态的精确反映,功能特性(2),根据不同平台,动态

6、加载不同的CSS,页面模板,请求。 不同平台用户特点不同。实名vs虚名;年龄; 应用需要定制 不同平台的背景/尺寸有差异。 使用不同的CSS 推广的要求 在某些平台上运行,其他平台禁止,功能特性(2),根据不同平台,动态加载不同的CSS,页面模板,请求。 实现 两步加载:第一步加载判断平台;第二步加载特定平台的模板,CSS,以及其它JS文件。 代码:FS.readDomainInfo();FS.loadDynamicJsCss();配置: dynamicLoading : DEFAULT : on: false, JS : , CSS : ,tianya: on : true, JS : “t

7、ianya/template.js”, CSS : “tianya/common.css”,”tianya/friend.css” ,xiaonei : , yiqi : , 51 : , myspace : ,功能特性(3),使用JavaScript Template生成页面HTML。OpenSocial Template到0.9才可以用 避免用createElement()和拼字符串的方式构建字符串。 效率 不直观,难于维护 采用模板替换的方式,独立的定义/维护模板 由HTML向模板转化非常方便 修改模板更直观 可以为不同平台维护不同模板集 在MVC架构中,C和M都不会直接修改V。使得V可

8、以灵活的展现M。,功能特性(3),使用JavaScript Template生成页面HTML。JavaScript Template简介 开源项目:http:/ The JavaScript Templates engine is a lightweight, standards-based, open-source component that lets web application developers have template-based programming (like PHP/ASP/JSP) while running in a web browser. Expression

9、s and Expression Modifiers Control Flow/Loops/Variable Declarations/Macro Declarations/In-line JavaScript,功能特性(3),使用示例Home : $“Header“|template $“OwnerProfile“|template $“Slaves“|template $“ActivitiesHeader“|template $“Activities“|template ,功能特性(4),集中定义对Server的Request。可以对所有/Get/Post请求定义默认值。屏蔽了Get/Po

10、st请求得格式差异。 屏蔽了Get/Post请求得格式差异 Client端关心的只是提交哪些参数,以及用Get还是Post。makeRequest中调用参数的差异被屏蔽。 Get/Post请求:osapps.req.extendsPostRequest(this); osapps.req.extendsGetRequest(this); 调用put(param, value)存入要提交的参数 实现可选的isValid()来检验Request的完整性。 可选的。如果Request合法,返回true。 checkExist(param); 检验参数param必须有一个非空的值;若为数组,长度要大于

11、0。 checkValue(param, value); 检验参数param的值必须为value。,功能特性(4),集中定义对Server的Request。可以对所有/Get/Post请求定义默认值。屏蔽了Get/Post请求得格式差异。 默认值 所有请求: osapps.req.Request_DefaultHttpParameters“ctn“ = FS.deployInfo.container_id;osapps.req.Request_DefaultHttpParameters“vid“ = FS.viewer.person.getId(); 所有Get请求:osapps.req.Ge

12、tRequest_DefaultHttpParameters 所有Post请求: osapps.req.PostRequest_DefaultHttpParameters 可以将Request集中定义管理 DAO模式,集中维护对服务器的所有调用信息 便于核查、测试、切换,功能特性(4),示例 osapps.req.Request_DefaultUrl = “req“; osapps.req.Request_DefaultHttpParameters“ctn“ = FS.deployInfo.container_id; osapps.req.Request_DefaultHttpParamete

13、rs“vid“ = FS.viewer.person.getId(); FS.req.CreatePlayer = function (name, photoUrl) osapps.req.extendsPostRequest(this);this.put(“cmd“, “init“);this.put(“name“, name);this.put(“photoUrl“, photoUrl); ; FS.req.CreatePlayer.prototype.isValid = function() return this.checkValue(“cmd“,“init“) ,功能特性(5),页面

14、刷新流程 用户事件导致页面切换/刷新;页面始终是Model状态的反映 系统默认注册了FS.refreshUI()接收数据改变通知。 1.切换: FS.setDisplayingPage(“Home“); 2.显示(读取数据):FS.refreshUI(); 3.通知数据改变: FS.broadcast();,功能特性(5),页面刷新流程 同步方式:用户只是切换页面,无需更新Model FS. showPage(“Home“); 异步方式:需更新Model 。 设置返回显示页面: FS.setDisplayingPage(“Home“); 发出Request: var req = new FS.

15、req.GetPlayer(); req.send(FS.onShowHomeReturned); 请求返回后,callback更新Model: FS.viewer.person.data = ; 在callback函数中发出通知: FS.broadcast();,功能特性,服务端 服务端不是本项目的重点 大部分Developer对服务端编程已经非常熟悉 很多应用已经具有服务端 如果是全新的App可以参考,减少重复劳动 基于Responsibility Chain(责任链)的处理流程 同一个应用针对不同平台可以配置不同的配置参数及处理流程 服务端也要针对不同平台进行定制 只需一个Web应用和数据库用来Serve多个平台上的同一个应用 减少运营成本 Java对象到JSON对象的转换 (各个平台的Signed Fetch的签名验证例程)(未实现) (基于Web的管理,监控,和统计界面)(未实现) 动态管理,用户行为分析统计,监控 (发布公告/即时消息给某个平台上的所有用户)(未实现),

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 毕业论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号