我刚开始尝试的Aptana Jaxer的服务器端JavaScript引擎,我的下一个项目。 和我有那几个quesions
通过使用服务器端的JS,我们可以不使用任何服务器端语言(如C#,JAVA等)实现整个Web应用程序。 或服务器端JS坐落在Web服务器和其他的langauge堆之间。
难道真的是一个更好的办法?
什么是advandages和disadvandages?
这是如何工作以及在性能方面?
有没有实时实现(公共网站)只能通过服务器端的JS(没有其他语言)?
什么是过度的Aptana Jaxer的(开源)可用的替代品?
我们如何能实现与maitain分贝交易? 我们可以做的是,在服务器端JS ..?
是否有可能开发服务器端JS支持REST和SOAP服务..?
我知道这是太长(和幼稚的问题)。 我只是希望有人已经遇到所有这些在实现服务器端JS。
编辑:
作为每马修和Ken的意见,我添加了一些清晰的问题,这真是个更好的办法?
这就是我打算问..
难道真的比使用服务器端语言(假设C#),我们如何能够用C#实现了一个网站(性能,语言功能)的比较这更好的方法? 和哪一个是一个较好的方法,在其他语言栈和网络服务器之间的中间层使用JS单独在服务器端或JS ??
我为开发八哥 (www.mynajs.org)的基础上,犀牛和Java的开源服务器端的JS平台。 因为这涉及到八哥,但许多这些点一般适用于服务器端的JS,我会解决的问题:
通过使用服务器端的JS,我们可以不使用任何服务器端语言(如C#,JAVA等)实现整个Web应用程序。 或服务器端JS坐落在Web服务器和其他的langauge堆之间。
在八哥就可以写在JS你的整个应用程序。 鹩哥已经包含了API的数据库访问,对象关系映射,crytogrophy,OpenID的,等等。
难道真的比C#/ Java的一个更好的办法?
与基于服务器的犀牛是微不足道的任何需要的时候下降到Java的。 您可以轻松地安装开源/商业/手工编码的Java库,然后从JS脚本他们。 这意味着你得到JS的快速发展,但保持Java平台的优势
有哪些优势和劣势?
优点:
快速发展 :在鹩哥你刚才创建的根目录的文件与.sjs扩展。 这意味着有非常快的调试/调整代码,你可以创建一个编辑 - 保存 - 刷新浏览器循环。
易JSON:有JS支持服务器端意味着将复杂的结构是很容易的
共享代码 :如果您需要在服务器和浏览器上都执行同样的功能,你可以使用相同的代码
动态ORM:静态类型编译语言让人很难改变在运行时的对象。 这通常意味着ORM具有预先定义。 在八哥建筑ORM就是这么简单
var manager =new Myna.DataManager("DataSource name").getManager("table name");
你得到一个对象,可以做所有基本的CRUD操作而没有明确定义的数据库表。 另一个例子,你可以插入一个一行从表单后的所有匹配值:
manager.create($req.data);
功能编程 :如果你已经开始用先进的JavaScript功能,玩,那么你会明白他们是如何有帮助的是服务器端。 因为一致的服务器端环境是安全的使用高级功能,如数组附加 , 发电机和迭代器 , 拆解作业 ,和E4X
缺点:
工具 :静态类型语言,如C#和Java具有优秀的IDE和开发工具。 像JS动态语言只是没有工具支持呢。 我个人觉得,在样板代码和挑剔型铸造大量减少弥补了这一点,但是这仍然是一个很大的缺点,如果你已经做了很大的发展在IDE中。 如果你正在使用的IDE,可以考虑使用jEdit的动态语言
到期/标准化 :Serverside集团JS仍然是一个新的范例,并且有很多玩家并没有明确的赢家。 ECMA没有对服务器端JS的任何标准。 正如在布兰登的答复中提到,该CommonJS的小组正试图形成一个服务器端JS标准,八哥已通过实验CommonJS的支持独角鲸
这是如何工作以及在性能方面?
在原始计算速度,一些动态语言可以匹配静态类型编译语言如C#和Java。 话虽如此,这其实并不重要。 你的应用程序的任何部分是计算密集型的可能应该用Java编写的,或使用现有的Java库。 我不会建议任何人都写数据库在JS的实例。 对于现实世界的Web应用程序/ SOA服务,放缓的主要原因是不生计算速度,这是低效的代码,特别是数据库访问。 鹩哥与这有助于通过做这样的事情:
- 内部缓存编译JS脚本
- 内部使用了数据库事务缓存的预处理语句
- 查询和输出片段缓存
- 数据库连接池
- 自动ETag值支持
- 分析工具
- 元数据的延迟加载
我们如何可以实现和维护数据库交易? 我们可以做的是,在服务器端JS ..?
如果你的意思是交易中“一组可以逆转或提交的SQL语句”,然后八哥还不支持交易。 我愿意实现这个,如果有足够的兴趣。
如果你的意思是“没有服务器端JS有什么样的数据库支持?” 那么答案是依赖于平台。 该八哥平台提供了以下数据库功能:
- 一个基于Web的管理应用程序,你可以定义“数据源”,即数据库连接信息。 然后,您可以按名称查询这些数据源。 八哥包括H2,MySQL和微软SQL服务器,和PostgreSQL JDBC驱动程序,但可以使用任何JDBC或ODBC数据源
- Myna.Database和Myna.Table提供数据库中立metdata接入以及表创建和修改。
- 鹩哥的查询对象支持maxRows进行寻呼,SQL参数,自定义行处理程序,查询的查询,缓存和更
- 鹩哥的DataManager的对象支持运行时的ORM对象创建
是否有可能开发服务器端JS支持REST和SOAP服务..?
REST和SOAP支持是特定于平台的功能。 鹩哥的WebService的对象支持以下协议:
- 肥皂
- XML-RPC
- JSON-RPC
- 直接分机
- JSON-八哥(使用正常形式的职位,并返回一个简单的协议JSON。容易从浏览器中使用)
鹩哥也明白PUT和DELETE请求方法,并提出访问要求的文本和二进制形式的主体内容,以使其能够处理应用程序中的特定方法,这些方法的RESTful。
调试
传统的断点调试是一个真正的挑战服务器端。 虽然犀牛支持调试器钩子,用这些从一个无状态的web应用程序会很复杂。 我个人甚至不使用断点调试器,即使是可用的(如萤火虫)他们。 相反,我更喜欢记录。
在八哥,
Myna.log(type,label,detail)
将产生一个低优先级线程编写一个HTML日志消息,鹩哥的日志记录数据库。 这些日志然后可以通过八哥管理员进行搜索。 日志也记录了时间戳和经过的毫秒纹的目的。 Myna.dump(OBJ)也可以用于呈现任何对象的HTML表格表示。 八哥还记录与栈跟踪,源代码上下文和请求细节,将所有未处理的异常。 转储(),日志(),默认的错误处理程序之间,我没有太大的困难调试八哥代码
通过使用服务器端的JS,我们可以不使用任何服务器端语言(如C#,JAVA等)实现整个Web应用程序。
它不应该是必要写在任何其他语言的代码,虽然许多服务器端JavaScript框架使用Rhino引擎,它允许你调用任何Java代码。
难道真的是一个更好的办法?
我不认为JavaScript的(如语言)真的比传统的服务器端语言的更好或更坏的选择。 它有一个像灵活性,快速原型(没有双关语意),柔韧性等。另一方面(与Ruby和Python等动态语言一起)的优势,它没有库支持,Java和C#有或静态类型(我不会进入过这是在这里更好的辩论;我喜欢这两个不同的原因)。
如果你想两全其美,你可以使用JavaScript作为脚本语言,嵌入到你的应用程序。 犀牛的Java和JScript.NET可以很容易地操纵JavaScript的“原生”的对象。 你可以,例如,在写Java或C#你的域类和脚本他们用JavaScript你想要更多的灵活性。 如果你有足够舒适的JavaScript,在一个单一的语言写可能更简单不过。
我从来没有书面使用JavaScript一个“真实”的服务器端应用程序,所以我真的不能做出关于是否判断其比.NET(我也从来没有使用过JScript.NET)更好或更坏。 我有一个有趣的几个框架虽然打得四处和我目前正在重写使用Helma NG我的个人网站。 到目前为止,它是一个很好的经验(比PHP,这是我从来没有真正喜欢好得多)。
什么是advandages和disadvandages?
Advantanges:
- 只需要服务器端和客户端编程一种语言。
- 可能性为共享代码,对于像形式验证。 Jaxer的让你的客户端,服务器,或两者运行的脚本。
- 你在JavaScript编程(假设你喜欢的语言)。
缺点:
- 许多框架是实验/还不是很成熟。
- 你必须在JavaScript编程(假设你不喜欢的语言)。
这是如何工作以及在性能方面?
性能应该是大约相当于其他脚本语言。
有没有实时实现(公共网站)只能通过服务器端的JS(没有其他语言)?
我不知道使用JavaScript的任何大型网站,但可能会有一些。
什么是过度的Aptana Jaxer的(开源)可用的替代品?
维基百科有一个选项大名单 ,但是它并没有很多有用的信息。 有很多的成熟度和大小与广泛的选择。
这里有几个,我很熟悉(在不同程度上)
- Helma -犀牛(JAVA)与活动记录为基础的框架。
- Helma NG - Helma下一代(实验改写,正在积极开发)。
- 火卫一 -在拥有良好的支持NetBeans的 。
- v8cgi -小而简单,使用谷歌的V8引擎,可能不是生产准备好。
- Jaxer的 -在SpiderMonkey的运行与DOM实现,所以你可以像jQuery或原型框架操作页面。 在集锦工作室良好的IDE支持。
我们如何可以实现和维护数据库交易? 我们可以做的是,在服务器端JS ..?
基于犀牛的框架让你使用Java类,让你有充分的JDBC支持。 我没有使用Jaxer的的数据库库,所以我不知道它的功能什么。
是否有可能开发服务器端JS支持REST和SOAP服务..?
RESTful API中应该不会有什么问题。 我不知道SOAP任何具体的支持,但它应该是可能的 。
作为序言,我用SSJS在我的日常工作。 我们运行SpiderMonkey的一个相当大的(复杂的条款以及页面访问量)的网站。 在那里我有经验,我会添加到马修的出色答卷。
难道真的比使用服务器端语言更好的方法(假设C#)
“更好”真的取决于你想用它做什么。 JavaScript的本身有一些强大的功能,还有很可怕的。 如果你是认真的开发JS(客户端或服务器),我不能建议高度不够,你看道格拉斯Crockford的演讲, 好的部分:使用Javascript ,如果你还没有准备好。 他做了出色的工作整理出多余的内容,他是一个优秀的扬声器引导。
我找到SSJS世界现在缺乏的最重要的事情是成熟。 我不熟悉C#,JavaScript的,但还没有成熟的标准库,并包分配的没有成熟的办法。 对我来说,是一个很大的一块拼图。
这就是说,保持你的眼睛上CommonJS的组。 他们正在朝着确定这些确切的事情工作。 此外,Jaxer的API文档列出了包含与框架的内置插件。
这是如何工作以及在性能方面?
JavaScript的本身不是一个缓慢的语言,也不是特别快的。 马修指出,应该可以媲美你可以使用任何其他脚本语言。 浏览器之间的战争厂商,看看谁可以建立最快的浏览器将有利于SSJS人群也是如此。
该代垃圾收集的V8团队打造成了他们的引擎就是一个很好的例子。 暂停虚拟机,以释放从堆中不可获得的对象和收回他们的存储器可以是有些缓慢,但他们已经减轻,通过减少需要的对象的量的垃圾收集器运行时被检查。
我们如何可以实现和维护数据库交易? 我们可以做的是,在服务器端JS ..?
Jaxer的似乎有MySQL和SQLite数据库的API。 马修提到的,如果你使用犀牛,您可以使用JDBC API。
编辑 :添加链接