- 浏览: 161998 次
- 性别:
- 来自: 华东
文章分类
最新评论
-
chen_miao:
我是初学者,请问,我在flex设计好了带有按钮和下拉框的界面, ...
ruby+flex实现天气预报 -
barrytyh:
很多技术人员都有想法,但忘了一个根本性的问题,谁在给你MONE ...
互联网创业与软件开发 -
fireflyman:
囧......
关于并发和并行 -
fireflyman:
你老再次出现了
谈谈互联网新产品如何起步 -
qhh394141930:
写得很详细,受教了。谢谢!
从瀑布模型、极限编程到敏捷开发
之前读了不少文章,说rails不大适合做大型的互联网应用或者企业应用,但通过实际的使用rails,越发的发现rails做大型应用是个不错的选择。 说rails不适合做大型应用无非瞄准了rails的2个软肋,一个是ruby的性能,一个是后期的可维护性。
先谈谈可维护性吧,可维护性最大的问题是需求的改变,简单的说,取决于项目结束后,客户要求你变更程度的大小与多寡,这更多的是项目管理的范畴,具体到语言的层面,其实意义不大,我们可以想想,一个后期维护的问题放到rails难解决,那么放到java、php……里面就简单了?真要比个优劣的话,我倒是觉得rails更胜一筹,rails本身就是一套良好实践的集合,你按它的规范做,会少走不少弯路,与其说rails是框架级代码的复用,不如说是良好设计和经验的复用。
咱好好谈谈性能吧,由于rails是个全栈式MVC框架,各个组件之间的搭配都是经过优化的,而采用SSH,需要自行协调各个组件之间的协同工作,稍有不慎,肯定会带来性能上的问题,我想各位看客也知道那个意思,我这里就有个例子,一个用SSH开发的社区网站,速度极其的慢,采用ruby on rails 改版后,速度明显提升很多,当然这可能也和开发者的水平有关,我也懒的去研究为什么当初采用SSH时性能会出现瓶颈,仅仅这个例子,让我知道一个一般的程序员用rails开发出东西未见得比用SSH的东西性能要低。
当然,上面的例子可能并不具有普遍性,所以说服力也不够。那么总所周知的是,做一个大型应用的杀手锏是“分”,当年的j2ee也是这种理念,尽可能的分,但遗憾的是j2ee分的效果并不太好,或许是过于复杂了,我所知道的java项目大都跑在一台服务器上。当然也是有很多大型java项目还是分布式的,那么既然大家都跑在多台廉价的服务器上,单纯的比单台服务器的速度其实意义并不大,在一个可伸缩的架构中,资源的消耗应该随负载线性上升,负载可由用户流量、数据量等测量。如果说性能衡量的是每一工作单元所需的资源消耗,可伸缩性则是衡量当工作单元的数量或尺寸增加时,资源消耗的变化情况。换句话说,可伸缩性是整个价格-性能曲线的形状,而不是曲线上某一点的取值。
所以问题归到了架构上面来了,而对于目前或者未来的应用架构,最合理的方式是把一个大型应用拆成许多合理的单元,而内置了REST支持机制的rails将抢占了未来的先机,当然可能这种机制尚不完善,但它的方向我认为是正确的。
那么我对rails的"分"的方案有以下几种思路:
1 在应用程序的之间水平切分,一个系统拆成各自独立的系统拼接而成,每个独立的系统的后台将做服务器级别的集群,举个例子,校内最近开发的爱听网就是用ruby on rails 开发的,它将是个独立的系统,会作为一个频道拼到现有校内的菜单上,这种方式不错,但相互过于独立,数据共享是个问题。
2 在应用程序的内部水平切分,这种粒度要小一点,做相册的负责图片,做音乐的负责音乐,做博客的负责博客,用标准的负载均衡服务器来路由进入的流量。所有应用服务器都是均等的,而且任何服务器都不会维持事务性的状态,因此负载均衡可以选择自己的应用服务器。如果需要更多处理能力,只需要简单地增加新的应用服务器。貌似豆瓣是这种模式。
3 针对具体资源的切分,这种方法是把所有的服务抽象成粒度更小的资源,分布在各个服务器上,在主服务器上通过REST调用展现出来,这样各个服务节点相互独立,不会因为某一节点造成性能上的瓶颈,当然我也不是随便说说,目前准备用这种方式构建一个社会化网络,就目前的感觉---良好。
4 SOA,相关的功能部分应该合在一起,不相关的功能部分应该分割开来——不管你是否把它叫做SOA,功能分解还是工程秘诀。而且,不相关的功能之间耦合程度越松散,就越能灵活地独立伸缩其中的一部分。我对SOA理解不深,这里有一段访谈倒是蛮有说服力,
写道
他在最近的采访中说“我认为使用大型程序的年代已经结束了”“有些程序看起来很大,但是随着时间的推移,它们将最终成为许多小程序的结合体。”
通过为全球市场的业务提供灵活性,SOA的可组合性改变了应用开发比赛。在全球市场中,商业机会不是一成不变的。
Mornini说“我实在看不出任何其他方式可以满足存取数据,改变流体的需求,以便在企业内外跟上时代的步伐。”“这就是为什么未来能解决所有问题的单机百万线应用在这一点上仅仅是个遗迹。”
Mornini认为,这不再是SOA是传统应用开发选择的问题,而是除了SOA以外,我们没有其它的选择。
他说“这些大型程序很难管理和维护,很难想像单机应用会成为未来发展的方向”。
Engine Yard公司的首席技术官认为带有REST的Ruby on Rails是为SOA建立新一代的服务和应用的一种方法。与Java不同,Java是在SOA应用开发时代前开发的项目,他注意到,Ruby on Rails 和REST怀抱SOA为理念向世人提供了一个前所未有的方法。
Mornini说“拥有一个服从该框架的牢固而又深厚的面向服务架构就是Rails的秘诀”该架构的开发商认为(它的SOA功能)是该平台的一大优势。
他认为Ruby on Rails非常适合SOA开发。新发布的Rail 2.0令该框架更容易为SOA应用以及旧数据存取所接受。他承认,原有的Rails框架与旧数据存取关系并不是十分融洽。今年推出的新模型已经超过了前者。
他说,例如,Rails组提供的代码增加了许多新的功能,通过以服务的形式将旧数据曝光,使得在SOA应用中访问旧数据变得更为简便。
Engine Yard公司的首席技术官说 “由于遵循了售后服务书籍和网络视频记录的规程,Rails令开发商使用RESTful数据变得更为简单”。
他说,“如果你遵循RESTful Rails的标准过程,在系统外用Rails编写了一个程序,就会自动得到该程序展示的一个建立在XML-over-HTTP基础之上的API。
但是如果要使其运转,"继续使用 Rails"很重要。Mornini说这就是Rails遵循既定规程的妙招。
评论
那个…人类早在有CMMI之前很多年就开始风险管理了好哇?
那个。。。我是说你说话的口气很象那个CMMI咨询师。
唔…
那说明你们买的CMMI咨询至少在风险管理的理论基础这一部分是靠谱的,恭喜
没觉得啊…CMMI咨询师怎么了?莫非又有了”你才是CMMI咨询师,你们全家都是CMMI咨询师“这样的说法?
<div class='quote_div'>
<div class='quote_title'>gigix 写道</div>
<div class='quote_div'>
<div class='quote_title'>ltian 写道</div>
<div class='quote_div'>你说的那些风险管理的东西,和给我做CMMI培训的人说的一模一样,你原来搞过CMMI? <br/></div>
<br/>那个…人类早在有CMMI之前很多年就开始风险管理了好哇?</div>
<br/><br/>那个。。。我是说你说话的口气很象那个CMMI咨询师。 <br/></div>
<p> </p>
<p>明显是在挑逗</p>
<p> </p>
PS:这年头做好人还真是难啊。
是骡子是马拉出来遛遛,讲大话谁不会啊,就怕有脸出来没脸回去。
我早说了,直接认栽
pufan同志说得对的,我说那些什么狗屁第一原则,都是我自己胡诌的,pufan同志英明神武,一眼就看穿我这点小伎俩
pufan同志很正确,我回家思过去
(to ye_jian_hui: 说几句口水话就让他一辈子以为花生是树上长的,这生意多划算。)
你看,教坏了小朋友不是,误人子弟啊,ye_jian_hu同学,别介意啊。
那个…人类早在有CMMI之前很多年就开始风险管理了好哇?
PS:这年头做好人还真是难啊。
是骡子是马拉出来遛遛,讲大话谁不会啊,就怕有脸出来没脸回去。
我早说了,直接认栽
pufan同志说得对的,我说那些什么狗屁第一原则,都是我自己胡诌的,pufan同志英明神武,一眼就看穿我这点小伎俩
pufan同志很正确,我回家思过去
(to ye_jian_hui: 说几句口水话就让他一辈子以为花生是树上长的,这生意多划算。)
还有那个通讯第一原则更是扯,按我看第一原则是减少传输量,网络传输的最小单元是bit,文本又是什么东西。
To pufan:
我建议你先看看《UNIX编程艺术》里关于网络协议部份的说法再下定论也不迟。虽然里面说的不一定就是真理,但也是那些大师门多年的经验之谈。这年头可能谁也不比谁聪明,但肯定有不少人比自己懂得多,说话还是谦虚点好。
没工夫,你若有不同看法敬请发表。
别整天大师大师们的,人家的经验是人家的,你就是天天引用也未必会归你所有。
得了,人家的经验都是扯谈,你自己的经验才是最重要的。
PS:这年头做好人还真是难啊。
是骡子是马拉出来遛遛,讲大话谁不会啊,就怕有脸出来没脸回去。
还有那个通讯第一原则更是扯,按我看第一原则是减少传输量,网络传输的最小单元是bit,文本又是什么东西。
To pufan:
我建议你先看看《UNIX编程艺术》里关于网络协议部份的说法再下定论也不迟。虽然里面说的不一定就是真理,但也是那些大师门多年的经验之谈。这年头可能谁也不比谁聪明,但肯定有不少人比自己懂得多,说话还是谦虚点好。
没工夫,你若有不同看法敬请发表。
别整天大师大师们的,人家的经验是人家的,你就是天天引用也未必会归你所有。
得了,人家的经验都是扯谈,你自己的经验才是最重要的。
PS:这年头做好人还真是难啊。
已改正
PS:头像是偶家mm,辛苦的追求ing
请问一下,你家MM也是来自火星的吗?
这个,不叫风险意识,叫瞎操心。
什么叫风险管理?识别风险,量化风险,选择应对策略,适时规避,适时缓解,适时承担。
有风险的生意才是有margin的生意。
面对未知连看清楚的勇气都没有,一味缩手缩脚,这不是有风险意识,这只是胆怯。
好,我对Grail也有兴趣,不过我是java+pureMVc+BlazeDs+Flex做的电力营销系统。试运行了。用户反映还不错。
提醒你一下, 做大系统pureMVc慎用,这个框架看起来不错,但是一旦消息过多,你不知到发出的消息谁会感兴趣。那么调试和维护将会非常难,有时候一个消息会被监听多次,多次执行后台数据请求,这些问题都很隐蔽。
我们后来开发的功能已经不用pureMVc了。而且注意pureMVc有多核版。如果一个View要被两个界面引用并同时打开,你需要用多核 PureMVC。我博客里面有我翻译的pureMVc中文API,以及Flex相关文档,可以供参考。
呵呵,多谢,以后得向你请教。现在正在摸索中。
这方面我有深刻的教训:在.net的remoting刚出来的时候,尝鲜做了一个高并发量的大型分布式系统,结果死的很难看,后来对新技术就谨慎使用了。很多东西,做个小demo例子是无法发现问题的。
PS:gigix和robbin要多写帖子,说说自己对ROR的心得和经验,让后来人少趟点雷!
gigix: 代码少是王道
ltian: 用几千行写个大型系统给偶看看
Quake: JavaEye的代码是5千多行
ltian: JavaEye就是一CRUD的论坛,偶说的是大型企业应用,企业应用你们懂么?
gigix: 又是老调调
ltian: 偶可不是老调调,你们显然没有做过偶说的那种大型企业应用。
众人: 那么到底啥是企业应用?
ltian: 界面贼复杂的那种,有window,grid, tree N个复杂控件的那种才叫企业应用,Rails能够搞定么?
众人: Orz...
ltian: 企业应用的V很重要
众人: 无语
ltian: Rails搞不定这些企业应用
路人甲: 这和Rails没有关系...
ltian: 企业应用的V很重要
众人: 无语
ltian: Rails搞不定这些企业应用
路人乙: 这是javascript的内容...
ltian: 企业应用的V很重要
ltian: Rails搞不定这些企业应用
ltian: 企业应用的V很重要
ltian: Rails搞不定这些企业应用
ltian: 企业应用的V很重要
ltian: Rails搞不定这些企业应用
这样这个帖子就吵了30多页...
<div class='quote_div'>各位真能扯,鉴定完毕,笑了我一个半小时</div>
<p> </p>
<p><span style='color: #ff0000;'>注意,此类话题已转向:</span></p>
<p><a href='http://www.iteye.com/topic/231725?page=5'><span style='color: #ff0000;'>http://www.iteye.com/topic/231725?page=5</span></a> , 欢迎讨论。</p>
<p> </p>
<p> </p>
<div class='quote_title'>verygoodverypowerful 写道</div>
<div class='quote_div'>我很想问下你当新手的时候新在哪里</div>
<p> </p>
<p> 同理啊。</p>
<p>回应一下,我对新手绝无贬低的意思,只是拿出来讨论下,找到问题,解决问题,这样对新手也是个提高。</p>
<p>我一再申明,新手能力不见得比老手低,最近不才就遇到一位号称几年工作经验的老程序员,分不清rails、RIA、分布式的概念,越发的觉得能力和经验无关,但该老程序员的质量意识还是蛮高的,一再苦口婆心权大家:“UI其实很重要的,企业级开发没你想的那么简单”,这是好事,至少有风险意识比没有好。</p>
<p><a href='http://www.iteye.com/topic/231725?page=5'/></p>
1.对这些“大杂烩”的痛苦在于需求很难界定,需求很繁杂,需求变更几乎不可控,搞的业务好像碎片一样,觉得难以掌握。痛苦过后俺开始用”领域建模“来驱动设计了,确实能从纷繁中见核心,业务模型清晰易懂。团队能抓住用户业务的核心关系和价值了。
2.用户对界面的挑剔,又让我抓狂,好羡慕delphi、PB、.net,但没办法用户就认准B/S,从自己用js做UI组件到echo,extJs,现在开始接触FLEX,好像有点儿看见黎明的曙光了(我强调的是要平衡效果和开发成本,那种有专业交互设计师和美工的哥们儿就别揶揄俺了,^_^)。
3.JAVA各种开源框架多的让人眼花缭乱,但就是没有俺想要的那种感觉,虽然俺也饱读各种OO设计、设计模式的书籍,对低耦合、高内聚甚至到了”膜拜“的地步,也会经常一个人熬夜重构-精雕细琢代码,但就是觉得这么多分层、配置以及许多不爽的地方(太多了,一下子说不过来),好像让人写代码的时候,背了很多包袱在前行,只有用”写程序本就是苦差事“来安慰自己和项目组内的兄弟。看到rails和grails让我有种轻松的感觉,不过俺没实际用这东东做过项目,希望它能让兄弟们轻松点,多点时间陪陪GF/LP。
还有那个通讯第一原则更是扯,按我看第一原则是减少传输量,网络传输的最小单元是bit,文本又是什么东西。
To pufan:
我建议你先看看《UNIX编程艺术》里关于网络协议部份的说法再下定论也不迟。虽然里面说的不一定就是真理,但也是那些大师门多年的经验之谈。这年头可能谁也不比谁聪明,但肯定有不少人比自己懂得多,说话还是谦虚点好。
没工夫,你若有不同看法敬请发表。
别整天大师大师们的,人家的经验是人家的,你就是天天引用也未必会归你所有。
还有那个通讯第一原则更是扯,按我看第一原则是减少传输量,网络传输的最小单元是bit,文本又是什么东西。
To pufan:
我建议你先看看《UNIX编程艺术》里关于网络协议部份的说法再下定论也不迟。虽然里面说的不一定就是真理,但也是那些大师门多年的经验之谈。这年头可能谁也不比谁聪明,但肯定有不少人比自己懂得多,说话还是谦虚点好。
gi:恩恩,我也这么看
众人:嗯嗯,我们也这么看
突然杀出v lord
v lord:rails就是一sb才用的,还ruby,简直就是扯淡。还5行代码,忽悠人也不能这么夸张哇。rails比得上RIA吗??哼哼,傻了吧。
(恩,确实,显示器比鼠标好用多了)
众人挑出几个精英,组成v字仇杀队,对v lord进行围剿
继续围剿...
还在围剿...
一个字就是乱
如果小学写作文
这篇作文不及格
我目前有一个erp要做,在参考用什么比较好,公司传统是用c#.net,用的工资自有框架,不过在我看来效率不敢认同,请大侠们指点一下
况且这些v和rails无关,你用RIA实现,我就不能在前台用RIA了
不知道Itian是装傻还是卖傻[/quot]
V 都做不出来你做的后台给谁用啊。难道你做得企业应用没有V?真是太天真了。就算良好架构,良好设计比V的重要性重要1000倍,连V都做不好还空谈什么啊?
我还真做过很复杂的企业应用没有V的,后期扩展也就加了两个V而已
发表评论
-
创建你自己的rails generator
2010-01-27 15:01 1218在多个rails项目中,有时需要共享一些公用的componen ... -
rspec实践一(从零开始)
2009-12-25 12:52 1379关于利用rspec的文章感 ... -
javascript-image-cropper-ui with rails
2009-07-31 23:18 1497在rails上传头像的过程中,一般后端会采用rma ... -
简简单单在rails中做定时任务
2009-07-27 19:58 3385在平时的开发过程中,经常会遇到一些定时任务的需求 ... -
用restful_authentication和role_requirement搭建验证授权系统
2008-09-30 21:20 1553转自 http://fanix.iteye.com/blog/ ... -
Rails中html_escape和sanitize
2008-09-26 13:33 2555转自:http://blackanger.blog.51cto ... -
Rails简洁的模板系统Malline
2008-09-14 15:25 1402前段时间听说ra ... -
在rails中优雅的进行模型校验
2008-09-07 20:53 2187在用rails进行开发时,最常见的操作的是前台提交 ... -
win+apache+mongrel下部署ROR
2008-09-01 20:16 1138gem install mongrel #选择最 ... -
Ruby中使用Memecached
2008-09-01 20:03 1293sudo apt-get install memcached ... -
在rails中使用memcached
2008-09-01 20:00 1123libeven memcached的使用需要li ... -
在Ruby中设计Callback机制
2008-08-31 21:11 1936阅读Paperclip源码,发现里面有一个不错的callbac ... -
像操作ActiveRecord一样操作XML
2008-08-10 18:05 1265在开发RESTful应用或者实现多个应用系统交互时 ... -
ImageMagick/Rmagick 安装的那些事儿
2008-08-05 12:54 1169windows平台×××××××××××××××××××××× ... -
让google来为rails画图表
2008-07-26 17:05 1366去年年底的时候,所做的一个rails项目涉及到图表 ... -
10分钟给一个rails遗留系统添加标签功能
2008-07-19 10:18 988早些时候做过了一个rails系统,当时没有涉及到标签的功 ... -
让rails处理图片再简单一点
2008-07-14 18:25 3060先来看看rails处理图片的过程吧,用户上传图片, ... -
分享一款word风格的rails在线编辑器
2008-07-09 16:51 1502在线编辑器是web应用中最常见的东西了,关于它的作用 ... -
让rails处理图片再简单一点
2008-07-07 12:50 1109先来看看rails处理图片的过程吧,用户上传图片, ... -
利用rails轻松建立个性化主页门户
2008-07-04 12:10 1115简单来说,个性化主页就是结合了各种小模块和网络信息 ...
相关推荐
在开发Web应用时,Ruby on Rails(简称Rails)框架因其高效、简洁的代码风格和强大的社区支持而备受青睐。Aptana是一款强大的集成开发环境(IDE),尤其适用于Rails项目的开发,它提供了丰富的特性来提升开发效率。...
综上所述,这个压缩包提供的Depot项目是一个典型的Rails应用实例,适合初学者了解Rails框架的基本结构和敏捷开发流程。通过研究源码,开发者可以学习到如何组织代码、设置数据库、编写控制器逻辑、创建视图模板以及...
《使用Rails开发Facebook平台应用》是一本全面而深入的指南,不仅适用于希望学习如何使用Rails开发Facebook应用的技术人员,也适合那些想要了解如何在市场上取得成功的创业者。通过本书的学习,读者不仅可以掌握必要...
Ruby on Rails(简称RoR或Rails)是一种开源的网络应用框架,用Ruby语言编写。它被设计用来轻松地实现MVC(模型-视图-控制器)设计模式,从而使开发人员能够快速和有条理地创建数据驱动的应用程序。接下来,我将详细...
rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板 Rails 应用编辑器 Rails 应用程序编辑器 gem 安装一个 命令行 工具来从"食谱"的Collection 组装 Rails 应用程序。"你可以使用 rails_...
本书《Component-Based Rails Applications》主要介绍了如何使用Rails引擎(Rails Engine)进行基于组件的Rails应用开发,以及如何对应用程序的大型模块进行拆分和模块化。以下是书中一些核心知识点的详细说明: 1....
《应用Rails进行敏捷Web开发》中文第三版是针对Ruby on Rails框架的一本详尽指南,主要聚焦于Rails 2.2.2版本。Ruby on Rails(简称Rails)是一款基于Ruby编程语言的开源Web应用程序框架,它遵循“Don't Repeat ...
**Ruby-GoOnRails:利用Rails生成器构建Golang应用** Ruby on Rails(简称Rails)是一种流行的Web开发框架,以其“约定优于配置”的理念和高效的开发速度受到开发者喜爱。而Go(Golang)则是一种静态类型、编译型的...
Ruby on Rails:部署Rails应用至Heroku.docx
Rails(Ruby on Rails)是一个采用Ruby语言编写的开源Web应用框架,它遵循模型-视图-控制器(MVC)的架构模式,设计用来快速开发数据库驱动的动态网页。随着Rails版本的更新迭代,此书聚焦于一个特定的版本,帮助...
《Web开发敏捷之道——应用Rails进行敏捷Web开发》是一本深度探讨如何利用Ruby on Rails框架进行高效、敏捷的Web应用程序开发的专业书籍。该书涵盖了从初学者到高级开发者所需的各种知识,旨在帮助读者掌握敏捷开发...
了解如何在真实世界中运行和管理Rails应用,对于确保应用的稳定性和安全性具有重要意义。 综上所述,《Simply Rails2》不仅为初学者提供了全面的Ruby on Rails入门指南,也为进阶开发者提供了深入的技术细节和实践...
当使用rails new appname生成Rails应用后,我们可以通过tree来查看Rails应用的目录结构: 目录结构 应用程序目录下会有app、config、db、doc、lib、log、public、script、test、tmp和vendor等11个目录和config.ru、...
在本项目"rails应用--导航栏实例工程"中,我们将探讨如何在Ruby on Rails框架下构建一个实用的导航栏。Rails是一个流行的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,使得开发过程更加高效且结构...
Ruby on Rails,通常简称为Rails,是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式。这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何...
Rails 3.1 和 Cucumber-Rails 1.2.0 是两个在Web开发领域非常重要的工具,尤其对于Ruby on Rails框架的测试和自动化流程。本文将深入探讨这两个组件,以及它们如何协同工作来增强软件开发的效率和质量。 首先,...
最后,创建测试的 Rails 应用程序,并启动 Mongrel 服务器。 知识点1:Ruby 安装 * 下载 Ruby One-Click Installer 版本 * 安装 Ruby * 检查 Ruby 版本 知识点2:Rails 安装 * 下载 Rails 2.0.2 版本 * 安装 ...
《Web开发敏捷之道:应用Rails进行敏捷Web开发(第3版)》基于:Rails2,在此前版本的基础上做了大量修订。 作者简介 作者:(美国)鲁比(Sam Ruby) (美国)托马斯(Dave Thomas) (美国)汉森(David Heinemeier ...