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类定义*/
class People {

PeoplegetFriend()
//Otherfieldsommited
}

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

Listfriends
= new ArrayList();
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. -->
Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值