-->

优点和服务器端JavaScript实现的利弊?(pros and cons of serversid

2019-07-19 15:17发布

我刚开始尝试的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 ??

Answer 1:

我为开发八哥 (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表格表示。 八哥还记录与栈跟踪,源代码上下文和请求细节,将所有未处理的异常。 转储(),日志(),默认的错误处理程序之间,我没有太大的困难调试八哥代码



Answer 2:

通过使用服务器端的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任何具体的支持,但它应该是可能的



Answer 3:

作为序言,我用SSJS在我的日常工作。 我们运行SpiderMonkey的一个相当大的(复杂的条款以及页面访问量)的网站。 在那里我有经验,我会添加到马修的出色答卷。

难道真的比使用服务器端语言更好的方法(假设C#)

“更好”真的取决于你想用它做什么。 JavaScript的本身有一些强大的功能,还有很可怕的。 如果你是认真的开发JS(客户端或服务器),我不能建议高度不够,你看道格拉斯Crockford的演讲, 好的部分:使用Javascript ,如果你还没有准备好。 他做了出色的工作整理出多余的内容,他是一个优秀的扬声器引导。

我找到SSJS世界现在缺乏的最重要的事情是成熟。 我不熟悉C#,JavaScript的,但还没有成熟的标准库,并包分配的没有成熟的办法。 对我来说,是一个很大的一块拼图。

这就是说,保持你的眼睛上CommonJS的组。 他们正在朝着确定这些确切的事情工作。 此外,Jaxer的API文档列出了包含与框架的内置插件。

这是如何工作以及在性能方面?

JavaScript的本身不是一个缓慢的语言,也不是特别快的。 马修指出,应该可以媲美你可以使用任何其他脚本语言。 浏览器之间的战争厂商,看看谁可以建立最快的浏览器将有利于SSJS人群也是如此。

该代垃圾收集的V8团队打造成了他们的引擎就是一个很好的例子。 暂停虚拟机,以释放从堆中不可获得的对象和收回他们的存储器可以是有些缓慢,但他们已经减轻,通过减少需要的对象的量的垃圾收集器运行时被检查。

我们如何可以实现和维护数据库交易? 我们可以做的是,在服务器端JS ..?

Jaxer的似乎有MySQL和SQLite数据库的API。 马修提到的,如果你使用犀牛,您可以使用JDBC API。

编辑 :添加链接



文章来源: pros and cons of serverside javascript implementation?