Banquet 13
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Banquet 13

on

  • 199 views

 

Statistics

Views

Total Views
199
Views on SlideShare
199
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Banquet 13 Presentation Transcript

  • 1. Koubei F2E 竹笋 2009.12.14
  • 2. 跟踪 报道甲骨文今年早些时候斥资74亿美元收购了Sun。但欧盟委员会目前正在对该交易进行审查。Sun的主要业务是服务器和Java,该公司同时拥有开源数据库软件MySQL。由于存在竞争关系,因此甲骨文收购Sun后会对免费开源软件MySQL的发展不利。甲骨文周一共做出了10项承诺,包括对外公布使用MySQL所需的编程细节,另外,在第三方开发者使用这些细节信息与MySQL进行交互时,甲骨文会放弃相应的版权主张。MySQL创始人迈克尔-维德纽斯(Michael Widenius)发起一项互联网运动,倡议MySQL用户通过电子邮件向欧盟表达对该交易的观点:终止甲骨文收购Sun的交易或要求甲骨文修改有关MySQL条款。 2001年创建MySQL, 2008年1月SUN以10亿美元收购MySQL,当年12 月MySQL推出5.1,对此维德纽斯表示不满,认为该版本尚不成熟, 2009年初从SUN辞职,创办Monty Program Ab软件公司。
  • 3. 若要人不知除非己莫 为Google已经在信息业接近美国中央情报局的梦想——了解你的一切的一切。Google承诺,视用户个人隐私为最高责任,决不提供给第三方。 Google首席 执行官Eric Schmidt近日却发 表了一些让人寒心的话语,在接受 CNBC(美国全国广播公司 财经频道)采访 时,Schmidt谈到了用户浏览数据的 隐私问题,他说:“ 如果你有什么事是不 想让任何人知道的,那么当初你就不应 该去做。 ” 补充:我们(搜索引擎)在美国都会遵守 《爱国者法》。 也就是 说政府机构是有权获取这些信息。WebKit:HTML5中链接支持rel属性为“noreferrer”,可以使通过连接访问网站时让该网站不知道该次访问的来源信息。
  • 4. ECMAScript版本5 获得批准 负责JavaScript、JScript(微软)和ActionScript (Adobe)标准的行业协会 Ecma的技术委员会以21票有19票赞同通过了ECMAScript version 5。 其中投反 对票的是两大巨头IBM和Intel。IBM反对的理由是浮点处理缺乏精确 性,而Intel反对则仅仅是因为没有足够时间检查潜在的知识产权牵连问题。http://www.ecmascript.org/docs/tc39-2009-043.pdf
  • 5. 事件 驱动程式设计事件 驱动程式设计(英语:Event-driven programming)是一种电脑程式设计模型。这种模型的程式执行流程是由使用者的动作(如鼠标的按键,键盘的按键动作)或者是由其他程式的讯息来决定的。相对于批次程序设计:程式执行的流程是由程式设计师来决定。批次的程式设计在初级程式设计教学课程上是一种方式。Gartner在2003年引入了一个新 术语事件驱动架 构(Event DrivenArchitecture,EDA), 主要用于描述一种基于事件的范例。优点:EDA 应用的系统里, 事件所触发的消息可以在独立的、非耦合的组件和服务之间传递,这些模块彼此并不知晓对方。极大地改进了表面 上毫无关联事件的能力。通过提供瞬时过滤、聚合和关联事件的能力,EDA可以快速地检测出事件并判断它的类型,从而帮助组织机构快速、恰当地响应和处理这 些事件。通常事件可以采用发布/订阅机制。
  • 6. 事件驱动架构的主要内容事件: 在信息化系 统中,事件是一些事物对象的状态属性,也可以是事物之间动作的记录。事件源: 产生事件的模块。即接口定义中有Action out的模块产生事件。事件 监听者: 接收并 处理事件的模块。即接口定义中有Action in的模块接收事件,然后处理事件。事件的 处理: 事件的 处理通常使用声明型语言描述,即描述满足一定条件下,对操作对象执行什么处理的规则。多条规则组成一个规则集,在运行时由规则引擎来判定执行规则的顺序,执行相应的规则。
  • 7. 普通函数与事件回调函数如果我 们把系统划分为两层:低层的函数库和高层的应用程序。同样作为主函数的辅助函数,左图中的普通函数直接被主函数调用,然而右图中的回调函数却是通过库函数间接被主函数调用的。一方面,在 软件模块分层中,低层模块为高层模块提供服务,并且不能依赖高层模块,以保证其可重用性;另一方面,通常被调者(callee)为调用者(caller)提供服务,调用者依赖被调者。两相结合,决定了低层模块多为被调者,高层模块多为调用者。但这种惯例并不总是合适的——低层模块为了追求更强的普适性和可扩展性,有时也有调用高层模块的需求,于是便邀callback前来相助。
  • 8. 上图为一个典型的事件驱动式模型。事件处理器事先在关注的事件源上注册,后者不定期地发表事件对象,经过事件管理器的转化(translate)、合并(coalesce)、排队(enqueue)、分派(dispatch)等集中处理后,事件处理器接收到事件并对其进行相应处理。请注意事件处理器随时可以注册或注销事件源,意味着二者之间的关系是动态建立和解除的。
  • 9. SOA与事件驱动架构的关系SOA(Service-Oriented Architecture)即面向服 务的体系结构,SOA是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。局限性: SOA要求 应用程序知道有什么服务和如何与这些应用程序互动。它还意味着除非一个应用程序提出一个服务请求,否则什么事情都不会发生。采用请求-回应范 例,每一个服务都必须知道需要通知哪一个其它的服务发生了什么事情。
  • 10. 事件驱动的SOA 虽然 SOA通常更适合请求/响应交换环 境,但EDA 引入了一些长时间运行的异步 进程功能。而且,EDA 节点可发布事件, 且并不依赖于所发布的服务的可用性。它 真正地实现了同其他节点的分离。应用方向:事件驱动架构(EDA)是分布式应用程序的普遍架构形式,非常典型的是:分布式应用程序都被设计成为模块化的、封装的、可共享事件服务的组件。能够通过应用程序、适配器以及无入侵性的代理操作来创建这些服务。
  • 11. JS中的事件驱动机制事件是Dom(文档 对象模型)的一部分。Level1中没有;Level2支持了小部分;Level3中规定完整的事件。IE 4:冒泡;Netscape Navigator 4:捕 获Dom同时支持两种事件模型。 var el = document.getElementById(‘btn’); if (document.all){ el.fireEvent(onclick); }else{ var evt = document.createEvent("HTMLEvents"); // 冒泡,阻止默认操作 evt.initEvent("click", true, true); el.dispatchEvent(evt); }
  • 12. YUI中的自定义事件var eventObj = new YAHOO.util.CustomEvent("CalendarSelectEvent");eventObj.fire(arguments);eventObj.subscribe(function(type,data){alert(type);alert(data);},obj);eventObj .signature 可设为YAHOO.util.CustomEvent.LIST (默认)param1 :event name;param2 :fire方法中的参数组;param3 :subscribe方法中传入的第二参数;YAHOO.util.CustomEvent.FLAT ,param1 : fire方法中的第一参数;(多个时用数组)param2 : subscribe方法中传入的第二参数; 关键属性: subscribers:监听者队列( YAHOO.util.Subscriber对象数组) Subscriber对象构造需要的参数(fn,obj,overrideContext); Subscribers[i].fn.call(scope,this.type,args,subscribers[i].obj) Subscribers[i].fn.call(scope,param,subscribers[i].obj)
  • 13. Q&A
  • 14. THX