`
rigger21
  • 浏览: 131464 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

bufflo最佳实践

阅读更多
<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>
这里我们提供一些来自于真实项目的最佳实践。 这些实践提出了采用ajax的正确道路。请在你的项目中考虑它们。

用DTO [(data transfer object) 数据传递对象]直接代替domain对象

大多数ORM工具带给我们便利,尤其在处理对象关系上。在一个传统的java项目中,我们可以定义一个可用在多个层之间相容的domain对象。这即使在一个集群的应用中也是优良的,因为它们在同一个JVM中而且对象的内部状态能被保存。但在buffalo应用中,因为buffalo是真正地远程调用,所以你最好不这样做。你应该思量一下带宽的问题。

让我们示例说明:userService.listUser,这个方法将返回一个user列表,同时User对象有AddressInfo、Roles和User属于的Department。在传统的JSP编写方式下,这是很好的。但在buffalo,这是很糟糕的。如果你不处理这个状况下任何部分,buffalo将尝试序列化user对象所连接的"每一个"属性,甚至是一对多、多对多的引用数据。这就像我们不需要显示太多数据一样,是对时间和带宽的巨大浪费。

所以在设计buffalo服务时,请用DTO(或是 ViewHelper)来减少对用户的页面输出。

慎重定义远程服务接口

请针对远程调用设计真正的远程服务方法。如果一个客户端开始了一次远程调用,那么服务应该一次性回应足够的信息。客户端不需要调用其它的方法。

采用浏览器前进/后退特征

在一个web应用不能使用浏览器的前进/后退按钮来导航页面视图时,包括我在内的许多未端用户都会感到困惑。在这方面做得好的例如google,而做得糟糕是...MSN Live Mail。从1.2版开始,buffalo引入了这个特征。请考虑采用这个特征来提高用户体验吧。

设计更多与用户接口的交互

这是对所有ajax产品的普遍要求。当用户点击按钮或链接时,你应该提供一个有意义的提示使用户注意正在发生什么。在传统的web开发中,那些action会引起页面刷新或是页面切换。而在ajax中,你应该提供更多。

在中小规模应用中,采用OPOA

OPOA(OnePageOneApplication的简称)定义了一个web应用的类型。小型的基于应用的操作总是页面很少,而需要更佳的交互,例如邮件应用、系统监控等。对于这些应用来讲,你能使用OPOA简化开发和提供更丰富的用户体验。

对于中大型应用,慎用OPOA

由于浏览器能力所限,采用OPOA的大型应用(具有上百个视图) 在运行一会儿后会出现CPU或者内存的高消耗。对于这种情况,如果你仍然坚持使用OPOA的话,那么需要把整个系统分解为模块。这样当用户切换模块时,系统将重新定位到一个新页面以使浏览器有机会清理内存并休息一下。

---------------------------------------------------------------------------------------------------
补充 :

ref

<ref>表示对另一个对象的引用。这个标记对于处理循环引用的场合非常有用,而其它场合会抛出StackOverflowException异常。来让我们看一下示例:

/**//*People类定义*/
classPeople{

PeoplegetFriend()
//Otherfieldsommited
}

/**//*People类对象的使用*/
Peoplejohn
=newPeople("John");
Peoplemichael
=newPeople("Michael");
//这里演示了循环引用
john.setFriend(michael);
michael.setFriend(josh);

Listfriends
=newArrayList();
friends.add(john);
friends.add(smith);


friends被序列化为下面的xml片断:
<list>
<type>java.util.ArrayList</type>
<length>2</length>
<map>
<type>domain.People</type>
<string>friend</string>
<map>
<type>domain.People</type>
<string>friend</friend>
<ref>1</ref>
</map>
</map>
</list>
其中ref=1表示对对象#1的引用作为它的值。xml片断中的每个<list>、<map>将被看作对象并具有一个引用id。
<!-- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"> <rdf:Description rdf:about="http://confluence.redsaga.com/pages/viewpage.action?pageId=1554" dc:identifier="http://confluence.redsaga.com/pages/viewpage.action?pageId=1554" dc:title="最佳实践" trackback:ping="http://confluence.redsaga.com/rpc/trackback/1554" /> </rdf:RDF> --><!-- Root decorator: all decisions about how a page is to be decorated via the inline decoration begins here. --><!-- Switch based upon the context. However, for now, just delegate to a decorator identified directly by the context. -->
分享到:
评论

相关推荐

    buffalo-l 包buffalo-sc包

    `Buffalo`是基于Go语言的全栈Web开发框架,它结合了MVC(模型-视图-控制器)架构模式和现代Web开发的最佳实践。`Buffalo`的核心特性包括: 1. **快速开发**: 提供命令行工具来快速创建新项目、模型、控制器、迁移等...

    Buffalo2-HelloWord

    博文链接提供的信息可能会更具体地指导如何完成这些步骤,包括可能的错误解决和最佳实践。对于“工具”标签,可能意味着博主还会介绍一些辅助开发的工具,如IDE插件、调试器或版本控制系统。 总的来说,"Buffalo2-...

    国产Ajax框架 Buffalo.7z

    总结,Buffalo作为一款国产Ajax框架,结合了国内开发者的需求和Web开发的最佳实践,提供了高效、易用的解决方案。通过深入理解其核心组件和主要特性,开发者可以充分利用这一工具,提升Web应用的性能和用户体验。在...

    基于Java的实例源码-国产Ajax框架 Buffalo.zip

    通过学习和研究这个开源项目,开发者不仅可以深入理解Ajax在Java环境中的实现机制,还能掌握国产框架的设计思路和最佳实践。此外,这对于那些希望在Java Web应用中使用Ajax技术,但又希望避免JavaScript与服务器端...

    BUFFALO巴法洛HD-PNTU3 系列用户手册.pdf

    "Recommended Usage"部分提供了使用硬盘的最佳实践,比如推荐的环境条件(温度、湿度)以及安全使用建议,以延长硬盘的使用寿命。此外,它可能还会包含关于如何备份数据的提示,以防止数据丢失。 "Warning"章节强调...

    Go-Buffal:Go语言的Web开发框架

    与Python的Flask框架类似,Go-Buffalo的目标是简化开发流程,同时避免不必要的重复工作,它将现有的最佳实践和库整合在一起,为Go语言的Web开发提供了一个统一的平台。 在Go-Buffalo框架中,有几个核心概念和特性:...

    buffalo-frontend-farms

    这可能包括预设的模板、UI库、脚手架、最佳实践等。 在压缩包文件"buffalo-frontend-farms-main"中,"main"通常指的是项目的主要或者核心部分。这可能包含项目的源代码、配置文件、依赖项和其他构建项目所必需的...

    buffaloe-源码.rar

    通过深入研究“buffaloe-源码.rar”的内容,开发者不仅可以掌握Buffalo框架的运作机制,还能了解到Go语言在Web开发中的最佳实践,从而提升自己的编程技能和项目管理水平。理解源码不仅是对技术的深入探究,更是提升...

    最佳安全管理企业[归纳].pdf

    文档可能基于对企业安全管理和EHS绩效的深入分析,总结出了一些关键的成功因素和最佳实践。 此外,根据【部分内容】出现的连字符(-)和数值,如“10”、“100”、“1000”、“2001”、“5-75%”、“5000170”等,...

    Ajax技术实现代码和需要用的ajax的十个地方

    **ajax-ppt.rar** 文件可能是关于Ajax技术的演示文稿,包含了Ajax的原理、使用示例和最佳实践等内容。解压后可以详细学习Ajax如何应用于实际项目中。 **Ajax** 文件可能是另一个与Ajax相关的资源,比如代码示例、...

    信息安全_数据安全_IoT Bug Hunting From Shells to R.pdf

    在本文档中,主题聚焦于物联网(IoT)设备的安全性,特别是针对“从Shell到负责任的披露”的漏洞猎取过程。...同时,加强安全设计、提高安全意识和采用最佳实践是防止物联网领域遭受定向攻击的关键。

    golang实现微信小程序商城后台系统(moshopserver)

    学习新语言的最佳方式就是实践,而微信小程序的热度正好提供了一个理想的实践平台。 在开发小程序的前后端时,选择合适的框架至关重要。对于Golang,虽然不像Node.js或Java那样拥有历史悠久且成熟的框架,但近年来...

Global site tag (gtag.js) - Google Analytics