1
luin 2012-08-25 16:40:24 +08:00
会啥用啥啊。。
|
2
lgn21st 2012-08-25 16:41:11 +08:00
喜欢啥用啥,我喜欢Rails。
|
3
zieglar OP 谢谢楼上两位的回答,补充一下我的背景,Java还停留在jdk6的时代,php粗通,正在看RoR和Node.js。
然后iOS应用需求比较急,所以。。。 |
4
zhouyang 2012-08-25 16:54:26 +08:00
所以用python吧
|
5
luin 2012-08-25 16:58:42 +08:00
不考虑Java, Node.js和RoR分别在性能和可维护上有优势,都是零基础入门的话RoR更易学。PHP很成熟,很容易招到人。我在用Node.js。
|
7
remaerd 2012-08-25 17:39:42 +08:00 2
我最近也在做后端,Python,Ruby,Node 都用了一下,最后选择 NodeJS。
在选择时,Ruby on Rails,Django 第一个出局,因为考虑到 API 应该轻,快。 Python 曾经用过 Flask,考虑过 Bottle。不过两者的 Extensions 的功能都无法需求。 Ruby 的 Sinatra 是最好用的。选择 Sinatra + Mongoid,一个星期可以搞出来(我自己的情况)。 现在选择用 NodeJS 的 ExpressJS + Mongoose 搭配。从 Ruby 转成 Node,主要是因为看上 NodeJS 的性能。Request per Second 的话,NodeJS 7000 左右,ExpressJS 3000 左右,Sinatra 900 左右,Ruby on Rails 300 左右。 我写 JavaScript 都是用 CoffeeScript 写的,所以写起来就像写 Ruby 或 Python 一样,非常 Lisp。 ExpressJS 的开发也是这些框架里面,最活跃的。 |
8
remaerd 2012-08-25 17:43:08 +08:00
BTW,来自 Instapaper 的作者 Marco Arment 的建议是,坚持用 PHP,不过不能用 PHP 的各种框架。
|
9
zieglar OP @remaerd 谢谢你的解答:)我现在有用PHP在做开发,不过觉得原生PHP各种麻烦,没有各种东西用,界面搭起来也很烦,框架又不想去了解,所以才考虑在NodeJS和RoR之间选一个做为以后的方向
|
10
daweiba 2012-08-25 20:14:36 +08:00
php吧 , 毕竟你熟悉
先做出来再说 |
11
pepsin 2012-08-25 20:29:44 +08:00
@remaerd Marco那个建议的前提是他不想用不成熟的框架,没有足够的大公司使用后期维护很可能会遇上麻烦。
PHP他貌似用了Facebook开源出来的一些东西。 |
12
PrideChung 2012-08-25 20:39:18 +08:00
@remaerd 刚去爬了一下Marco的blog,Marco并非不用框架,只是他用的是自己造的框架。
|
13
zieglar OP @daweiba PHP我不是很熟悉,原生JS和Java更熟悉一点。。。我先看看合作方给我多少时间吧,个人更倾向用NodeJS一些,不过还有待了解
|
14
ljbha007 2012-08-25 22:21:28 +08:00
推荐java和nodejs
java: 稳定、健壮的语言框架;外加JDK 6支持annotation特性,使java具备了一些动态语言才有的特性;nio库可以实现类似nodejs的事件驱动的IO;有很多成熟的第三方库和包管理系统(Maven)还有成熟的web框架; nodejs:高并发;已扩展;发展迅速;开发方便; 缺点: java:容易把简单的问题复杂化;某些开发框架过于沉重,不适合快速原型; nodejs:不稳定;缺乏技术支持;难招人 不过无论用那种语言或者框架,代码质量本身是很重要的,你可以用一个非常优秀的语言和框架,写出屎一样的代码 |
15
crapthings 2012-08-25 22:25:58 +08:00
node.js
+1 meteor.js |
17
ljbha007 2012-08-25 22:34:54 +08:00
@zieglar play我也只是浅尝过,跟人来说不是很喜欢,不过的确开发起来很轻便。我不喜欢的原因在于它仅仅考虑了web的快速开发,开发逻辑复杂的系统的时候,静态方法的方式会很吃力(因为不能通过继承来扩展功能,你想象一下当业务逻辑越来越复杂,你的Application类里边有成百上千个静态方法,每个静态方法都有不同的任务完成吗?),面对复杂系统还是OOP的方式更易于维护
|
19
donnior 2012-08-26 00:04:49 +08:00
@zieglar
@ljbha007 Play这个static确实是有点不爽,不过也不至于那么多吧,除了web层的之外,业务层的代码原来怎么写还可以怎么写啊。实在不行可以使用scala写play,兼顾了动态语言的优点,然后相比java也没有性能损失。 考虑到楼主这个应用只是需要提供API,其实选择就可以更多了,即使使用java的话也可以直接考虑JAX-RS的实现而不需要web层的内容 用Rails的话确实很快,尤其是只提供api的时候太方便了,我现在的项目就是这样做的(因为是初期,把可能的性能问题放后边了) 至于Nodejs,我对它只是十分肤浅的了解了一下,也想跟熟悉几种技术的朋友们探讨下,我个人觉得nodejs现在是否有过于强调其性能的嫌疑而忽略了其他一些不方便的地方?比如受限于javascript简陋的语法,很多时候跟别的语言相比确实相对难用些? |
20
ljbha007 2012-08-26 08:42:11 +08:00
@donnior javascript的确有可能写出让人难以阅读的代码 并且难以统一编码风格
不过这个问题是有解决办法的,那就是使用coffeescript 用coffeescript之后,语法就跟python和ruby很类似,并且强制统一了编码风格。唯一不方便的是调试的时候,调试的实际上是编译出来的javascript |
21
amtb 2012-08-26 10:05:19 +08:00
@ljbha007 play本身就是为了快速开发web应用而非复杂业务应用,另外play的问题在于数据库支持比较弱,如果多数据库的话,很麻烦
|
23
superisaac 2012-08-26 11:58:39 +08:00
bottle吧,简单,其实http协议就是个简单的东西,不需要那么多的所谓框架。
|
24
heroicYang 2012-08-26 12:17:18 +08:00
@zhouyang 这个回答好~
|
26
remaerd 2012-08-27 02:34:46 +08:00
@zieglar 我也困惑过这个问题。当初的架构是这样的:有一个 API 服务器,专门处理 REST API,iOS 和 Web 端都通过他来访问数据。
考虑再三之后,像我这样的独立开发者,亦不打算找任何投资,费用应该越少越好。如果专门搭 API 服务器,数据库/API/iOS/网站之间的内部数据流量就会成为一笔很麻烦的费用。 你或许不知道,其实 CouchDB,MongoDB 等 NoSQL,都是具有 HTTP 接口的。这意味着,你的 iOS 客户端可以直接访问数据库,不需要另外搭建 REST API 服务器。你现在可以考虑只做数据库和 iOS,后期再考虑用 后端 + HTML5 搭建网站客户端。 我的项目比较特殊,iOS 端不需要进行用户验证,也没有任何 CUD 的操作,只需要从数据库获取资讯,所以我刚才说的解决办法比较适合我的项目。就算你要进行 CRUD,这些 NoSQL 也提供了 REST API 接口。问题不是很大。 |
27
chuck911 2012-08-27 12:10:33 +08:00
你要是跟一个IT男搭讪,提这个问题不错
在“需求比较急”的情况下问这个,简直就是扯蛋,是在释放压力么? 连php框架都‘不屑’用,还express rails django bottle,简直就是没话找话 祝你们成为好基友 |
28
zack 2012-08-27 12:17:40 +08:00
感觉看着有点困惑了,到底是做一个数据源的服务,还是要做个网站?这两个不能相提并论的。
首先要考虑清楚到底是iOS上Tcp based app还是Http based app。这个没定对的话,后面的那些讨论就都是乱来的了。 |
29
feihu 2012-08-27 12:40:02 +08:00
没用过node.js,但是看一些ppt,一般都建议node.js适用与实时性的社交应用比较多,它的用法与其他的不太一样。而且它的调优不好调,见过使用dtrace来调优的,看了两下就晕了。先确定你的app是做什么用的吧。然后在选择对应的语言
|
33
zack 2012-08-27 18:12:24 +08:00
@zieglar 我不知道你要做的具体应用的类型,但我建议数据的传输优先考虑下基于TCP sockets的方式。实际上现在很多应用都是如此的吧。
这有几个很明显的好处: 1. 数据传输量可以精简很多,只发送需要的数据即可。在数据包上可做的优化很多。 2. 客户端不需要用Poll的方式去持续更新数据,只要连接建立了,数据传输的时机很好控制。 3. sockets server是独立的,不用依赖于网站的web server。 你要写一个TCP Server的话可以考虑用Python的Twisted,当然,用Erlang和Nodejs也非常简单。但后两者在处理数据库接口和一些业务逻辑方面,可能不如Python更快能上手。 如果是要做一个网站的话,再去考虑那些Web框架吧,做一个数据服务的接口跟那个关系不大,而且TCP Server其实比你去用做网站的方式去做个类似RESTful的接口,开发和维护的代价我觉得还要更少。 个人意见,供你参考。最终还是取决于你要做的东西的实际情况而定。 |
34
zieglar OP @zack 谢谢你的解答,很详细,不过因为我的基础不是很好,所以如何搭建一个TCP Server恐怕还要好好补课:)看那边能给我多少时间吧
|
35
PrideChung 2012-08-27 23:38:53 +08:00
晕,TCP都出来了,楼主的要求是后期要把网站推翻,那么使用RESTful的API可以让网站复用代码,TCP就没那么简单了。不用把摊子摆那么大吧,就用最熟悉的PHP先把原型做出来好了。
Demo or nothing. |
36
amtb 2012-08-28 08:52:13 +08:00
@forest520 play是用groovy的模板,性能上比jsp有损失,具体看这里http://www.jtict.com/blog/rails-wicket-grails-play-lift-jsp/
|
37
forest520 2012-08-28 09:17:30 +08:00
@amtb play2.0模板改成了scala,号称快了15倍:http://www.touilleur-express.fr/2011/11/26/play-2-0-announced-at-devoxx-2011/
|
39
PrideChung 2012-09-05 20:56:07 +08:00
LZ最后选了啥?八卦下。
|
40
120066825 2013-04-26 17:55:05 +08:00
推荐使用JAVA,现在很多程序员都能JAVA web轻松搞定需求 , 且JAVA程序员多 , 框架可以单采用struts2 , 只是JAVA写出来的项目的缺点也很明显:可维护性差 . 不过后来的运维和二次开发工作可以交给别的语言进行例如(node等) , 随着单提升主机的性能和增加主机集群数目 , 可以不用发愁便能解决掉性能问题 . 相当于魔兽里人族的万金流 .其实就语言来说,JAVA跟其他语言go语言什么的比起来弱爆了.
|
41
zieglar OP @PrideChung 回来节帖,当年项目最后用到了 Node.js,采用的是 Express.js 3.X 框架,但是 Express.js 有挺大的坑,目前已经不在原来的公司,新公司的服务器同样采用的 Node.js,框架是 Sails.js,基于 Express.js 扩展的,但是好用多了。
|
42
PrideChung 2014-06-27 16:42:35 +08:00
@zieglar 这就两年了?我的人参呢?Express有啥坑,我只用来写过很小的服务(代码100行以内),没什么体会
|
43
zieglar OP @PrideChung 长时间运行以后响应会有阻塞,这个在我原来写的代码和现在公司原来外包的代码里面都有出现过,不知道是不是我们代码水平的问题(
|
44
PrideChung 2014-06-27 16:54:23 +08:00
@zieglar 可能是哪里用了阻塞的API吧,被你这么一说我就去看了下Sails.js了。
|
45
WallaceYYLi 2017-08-15 14:40:23 +08:00
居然知道节贴,赞一个👍
|