`
rigger21
  • 浏览: 132287 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论
阅读更多
<script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>

在Buffalo2.0之前,Buffalo使用caucho的burlap协议。从2.0开始,Buffalo有了一个全新的协议定义和适合web的、更快速的实现。Buffalo采用这个基于xml的轻量级协议来序列化java对象。而javascript客户端把xml反序列化为javascript对象。当进行一次远程调用时,Buffalo客户端会把这个远程调用序列化为xml,然后java端(服务器端)进行反序列化。


ajax正开始大行其道,Sun的Blueprints中已经开始包括ajax的支持。但是直接使用XMLHTTP在大多数情况下编程并不容易。Buffalo使得这一过程更加容易。Buffalo首先是burlap协议的JavaScript实现,但是他为Amowa(面向异步消息的Web应用)/Ajax提供了更多的支持。开发者可以使用Buffalo为web应用更加容易的添加Amowa/Ajax特性;另外,随着开发者的要求,Buffalo开始逐渐加入了Web元素,使得Buffalo逐渐向一个全功能的、新型的Web框架逐渐靠近。

Burlap协议的JavaScript实现

事实上,burlap协议应该是目前最适合使用用作web remoting的通信协议,全面,简洁,适用。Buffalo实现了burlap协议中绝大部分数据类型的javascript序列化/反序列化。

Java对象到JavaScript对象的双向序列化全面支持

java端任意一个方法调用产生的结果,都可以被透明的序列化到javascript端,无论是这个对象多么复杂;无论是简单的原子类型(String, int, long, boolean)还是复杂的对象(List, Map),甚至你自己定义的业务对象,buffalo可以完整的将其序列化到javascript端,你可以用javascript与其交互。buffalo的这项特性久经考验,成为它最富特色的功能。例如,userService.listAll()返回所有用户列表(java.util.List):




客户端调用方式:

buffalo.remoteCall( " userService.listAll " ,[],function(reply) {
// 不用担心,reply.getResult会从聪明的判断服务器端远程调用的结果类型。
varuserList = reply.getResult();
varfirstUserFamilyName
= userList[ 0 ].name.familyName;
}

);


异步回调的编程模型

在buffalo 1.1之前,每一个方法调用都是异步的,在1.1版本之后,Buffalo支持同步调用(尽管不推荐这么做)。两者编程模型完全相同,你可能这样使用系统的登录功能:

// varbuffalo=newBuffalo("/bfapp/buffalo"); // 1.2版本的写法
buffalo.remoteCall( " userService.login " ,[ " username " , " password " ],function(reply) {
varsuccess
= reply.getResult();
if (success) {
alert(
" Youloginsuccessfully " );
}
else {
alert(
" usernameorpasswordincorrect! " );
}

}
);


支持异步事件

喜欢像gmail一样,在加载系统时出现小小的loading条,而不是切换页面?Buffalo给你支持。

onLoading
onFinish
onError

你可以定义这些事件,使之符合自己应用的需要。

例如修改等待效果 :

varbuffalo = new Buffalo(endPoint);
buffalo.events[
" onLoading " ] = function(state) {
if (state) {
window.status
= " Loading " ;
}
else {
window.status
= " Loadingcomplete " ;
}

}



简单,直观,易于使用

Buffalo开发者尽最大努力将API设计的易于使用,无论是客户端还是服务器端,尽可能不让开发者了解buffalo细节。

服务器端 ,使用buffalo的开发者,几乎不需要了解buffalo的java代码结构。任何POJO都可以成为Buffalo的服务被暴露出来
客户端 ,开发者只需要与一个对象交互:Buffalo, 并且只需要与为数不多的方法进行交互即可。任何一个初学者,可以在半小时之内熟悉buffalo并开始开发。


集成Prototype Library

参考Ruby 简单 的思想,Prototype为真正的web开发提供了简便直接的支持。Buffalo 1.2版本开始用Prototype语法重写,并直接构建在其之上,这是因为Prototype是可以直接使用,几乎不需学习就可以为web开发带来巨大好处的


Spring集成

Spring是当前最流行的轻量级容器,Buffalo对它进行了支持。Spring中任意一个配置过的bean, 都可以通过简单的配置被暴露为buffalo服务


浏览器兼容

Buffalo目前支持IE6/Firefox 1.0+浏览器。


支持浏览器前进/后退按钮

许多大面积使用Ajax的web应用常常陷入一个浏览器前进后退功能失效的困境。Buffalo 1.2版本中解决了这一问题。

只要在主页面中加入buffalo - blank.html的引用
并采用buffalo.switchView的方法

你会发现浏览器的前进后退按钮可用,并且能正确地进行导航。


支持数据绑定

对于一般的数据返回值,buffalo提供了绑定的功能,能够迅速的将javascript对象的值绑定到html元素上。绑定的元素支持

text
checkbox
radio
textarea
select
span
/ div
table.


如何。。。。

将表单序列化为一个dto对象?

在1.2.1版本中,提供了Buffalo.Form.formToBean方法,可以将表单直接序列化为对象。使用方法可见demo应用中的Form demo. 简单用法如下,将表单中的信息转化为一个net.buffalo.demo.form.User对象。

varuserObj = Buffalo.Form.formToBean( " form1 " , " net.buffalo.demo.form.User " );
buffalo.remoteCall(
" userService.createUser " ,[userObj],function(reply) {
alert(reply.getResult().username);
}
)


转换原则:
对于普通text,password,radio,select-one, 直接转化为(name=value)的一个属性;
对于select-many, checkbox, 转化为一个String?或者String的List。


Spring集成?

保证Spring正常加载(采用config servlet或者context listener的方式,此处不赘述)
在任一个spring配置文件中加入BuffaloConfigurer bean:

< beanname = " buffaloConfigBean " class = " net.buffalo.service.BuffaloServiceConfigurer " >
< propertyname = " services " >
< map >
< entrykey = " testSpringService1 " >< refbean = " yourBeanId " /></ entry >
<!-- oterhentries… -->
</ map >
</ property >
</ bean >


Buffalo会在启动时自动加载这个bean, 并加载所有的service. 前台使用方式没有任何不同,buffalo一致对待来自于buffalo-service.properties中的服务和来自spring中的服务。


自定义事件?

buffalo.events["onLoading"] = function(state) {...}
事件包括:onLoading, onFinished, onError, onException


数据绑定?

buffalo.bindReply(service, params, elementId)
或者直接使用
Buffalo.Bind.bind(elementId, bindValue)


浏览器前进后退?
加入buffalo-blank.html的iframe引用,id="buffalo-view-history-iframe":

切换视图的时候,采用buffalo.switchView(viewName), buffalo会自动记录视图切换历史
对于不需要纪录的视图,采用buffalo.switchPart(...) 进行排除

分享到:
评论

相关推荐

    buffalo-l 包buffalo-sc包

    在IT行业中,`buffalo-l` 和 `buffalo-sc` 是两个特定的软件包,它们可能涉及特定的开发框架或工具。尽管提供的信息有限,但我们可以根据这些关键词推测出一些可能的知识点。以下是对这两个包的详细解释以及与之相关...

    buffalo-l.zip

    《洞察之眼:深入理解insightface及其在buffalo-l.zip中的应用》 在现代计算机视觉领域,人脸识别技术已经成为一个不可或缺的部分,而InsightFace正是这样一款强大的开源人脸识别框架。这个框架由阿里云团队开发,...

    buffalo.jar & buffalo.js

    在IT行业中,"buffalo.jar & buffalo.js" 提到的两个文件名可能指的是某个软件或框架的组件。这里,我们分别来探讨它们可能涉及的知识点。 首先,`buffalo.jar` 是一个Java Archive (JAR) 文件,它是Java平台的标准...

    buffalo_l.zip

    该项目不仅包含训练模型,还提供了丰富的预训练模型,能够处理人脸检测、特征提取和人脸识别等多种任务。"insightface/insightface"的描述暗示我们将会深入到项目源码中,了解其内部工作原理。 2. PyTorch与Insight...

    Party Buffalo硬盘管理

    "Party Buffalo硬盘管理"是一款专为XBOX360游戏主机设计的硬盘管理软件,它提供了方便快捷的方式来管理和传输XBOX360硬盘中的数据。这款软件的主要功能是帮助用户在个人计算机(PC)和XBOX360之间进行安全的数据交换...

    Buffalo2-HelloWord

    标题“Buffalo2-HelloWord”可能指的是一个关于使用名为“Buffalo”的工具或框架创建的 HelloWorld 示例项目。从描述中的“NULL”我们无法获取更多信息,但我们可以根据标签“源码”和“工具”来推测这可能是一个...

    XBOX360硬盘管理(Party Buffalo)+源代码

    《Xbox360硬盘管理:Party Buffalo及源代码解析》 在电子游戏领域,微软的Xbox360是一款备受玩家喜爱的游戏主机。而针对Xbox360的硬盘管理,尤其是 Party Buffalo 项目,为用户提供了更高效、便捷的操作体验。本文...

    Buffalo框架所需文件

    Buffalo框架是一个基于Java开发的轻量级Web应用框架,其设计目标是简化开发流程,提高开发效率。在描述中提到的"Buffalo框架所需文件"压缩包,包含了该框架运行所必需的组件,主要是jar文件和JS文件。这些文件在Java...

    buffalo tftpboot.zip

    6. **文件列表**:“buffalo tftpboot”可能包含如下文件: - **Bootloader**:引导加载程序,是设备启动时运行的第一段代码,负责加载操作系统。 - **Firmware Image**:固件映像文件,包含NAS所需的操作系统代码...

    buffalo应用实例

    Buffalo是Go语言中的一款强大的Web开发框架,它简化了构建现代、健壮且可维护的Web应用程序的过程。本篇文章将深入探讨`buffalo`应用实例,通过一系列实践技巧,帮助开发者更好地理解和运用这个框架。 首先,理解`...

    深度算法 Insight 使用 buffalo-l.zip

    深度算法 Insight 使用 buffalo_l.zip

    buffalo NAS 用户手册

    《Buffalo NAS用户手册》是针对巴比禄(Buffalo)公司TeraStation系列网络附加存储设备(NAS)的一份详尽的操作与设置指南。该手册涵盖了TS-XHL、TS-XL、TS-XEL、TS-WXL以及TS-RXL系列产品的设定参数与功能介绍,为...

    Buffalo应用文档

    根据提供的“Buffalo应用文档”及其部分内容,我们可以总结并详细解释以下关键知识点: ### 一、Buffalo应用配置概述 #### 1.1 Web 应用配置基础 文档提到的Buffalo应用涉及到Web应用的基本配置,包括`web.xml`...

    buffalo 入门实例 很不错的学习资料

    Buffalo 是一个基于 Go 语言的 Web 应用开发框架,它为构建高效、可维护的 Web 应用提供了简洁的 API 和强大的工具集。在本篇内容中,我们将深入探讨 Buffalo 的基本概念、核心特性以及如何通过实例来学习和应用这个...

    party buffalo xbox 360 drive explorer

    "Party Buffalo Xbox 360 Drive Explorer"正是这样一款针对Xbox 360硬盘的专业管理工具,它以其易用性和高效的性能,被誉为目前最佳的选择。本文将深入探讨这款软件的核心功能、使用方法以及其在游戏管理中的实际...

    Buffalo+servlet实现验证码.doc

    本示例通过使用Buffalo框架和Servlet来实现一个简单的图形验证码功能。下面将详细介绍这个实现过程中的关键知识点。 1. **Buffalo框架**:Buffalo是一个轻量级的Java服务框架,它提供了一种简单的方式来处理HTTP...

    BUFFALO巴法洛DVSM-PN58U2V 系列快速说明书.pdf

    标题中的"BUFFALO巴法洛DVSM-PN58U2V 系列快速说明书.pdf"指的是BUFFALO公司生产的DVSM-PN58U2V系列产品的用户手册,这个手册是为用户提供快速了解和操作该产品的一份文档。BUFFALO是一家知名的存储和网络设备制造商...

    BUFFALO巴法洛WS5400R 系列快速说明书.pdf

    BUFFALO巴法洛WS5400R系列快速说明书.pdf BUFFALO巴法洛WS5400R系列快速说明书是一个关于NAS存储设备的用户手册,旨在指导用户正确地安装、配置和使用TeraStation NAS存储设备。该手册提供了详细的安装步骤、配置...

    BUFFALO巴法洛LS220DE用户手册.pdf

    BUFFALO巴法洛LS220DE用户手册.pdf BUFFALO巴法洛LS220DE用户手册.pdf为 BUFFALO公司LinkStation 200系列的用户手册,旨在指导用户正确地使用该设备。本手册涵盖了设备的基本操作、网络连接、存储管理、故障排除等...

Global site tag (gtag.js) - Google Analytics