1
19
我是的开发者 Myna (www.mynajs.org),一个基于Rhino和Java的开源服务器端JS平台。我将讨论与Myna相关的问题,但其中许多要点通常适用于服务器端JS:
在Myna中,可以用JS编写整个应用程序。Myna已经包含了用于数据库访问、对象关系映射、crytogrophy、OpenID等的API。 它真的比c#/Java更好吗? 对于基于Rhino的服务器,只要需要,就可以随时使用Java。您可以轻松地安装开源/商业/手工编码的Java库,然后从JS编写脚本。这意味着您可以获得JS的快速开发,但可以保持Java平台的优势 优点和缺点是什么? 赞成的意见:
欺骗:
这在性能方面如何运作良好? 在原始计算速度方面,很少有动态语言能够与C#和Java等静态类型编译语言相匹配。话虽如此,这真的没关系。应用程序中计算密集型的任何部分都应该用Java编写,或者使用现有的Java库。例如,我不建议任何人用JS编写数据库。对于现实世界中的web应用程序/SOA服务,速度减慢的主要原因不是原始的计算速度,而是低效的代码,尤其是数据库访问。Myna通过做以下事情来帮助实现这一点:
如果您是指“一组可以反转或提交的SQL语句”中的事务,那么Myna还不支持事务。如果有足够的兴趣,我愿意实施这项计划。 如果您的意思是“服务器端JS有什么样的数据库支持?”那么答案取决于平台。Myna平台提供以下数据库功能:
是否可以在服务器端JS中开发RESTFul和SOAP服务。。?? REST和SOAP支持是特定于平台的特性。八哥 WebService 对象支持以下协议:
Myna还了解PUT和DELETE请求方法,并以文本和二进制形式提供对请求正文内容的访问,因此可以以特定于应用程序的方式处理这些RESTful方法。
传统的断点调试在服务器端是一个真正的挑战。尽管Rhino支持调试器钩子,但从无状态web应用程序中使用这些钩子将非常复杂。就个人而言,我甚至不使用断点调试器,即使它们可用(例如firebug)。相反,我更喜欢日志记录。 在Myna,
将产生一个低优先级线程,将HTML日志消息写入Myna的日志数据库。然后可以通过Myna管理员搜索这些日志。日志还记录时间戳和经过的毫秒,以便进行分析。dump(obj)还可以用来表示任何对象的HTML表。Myna还使用堆栈跟踪、源代码上下文和请求详细信息记录所有未处理的异常。在dump()、log()和默认错误处理程序之间,调试Myna代码没有太大困难 |
2
12
通过使用服务器端JS,我们可以在不使用任何服务器端语言(如C#、java等)的情况下实现整个web应用程序。 虽然许多服务器端JavaScript框架使用Rhino引擎,允许您调用任何Java代码,但不必用任何其他语言编写代码。 这真的是更好的方法吗?? 我不认为JavaScript(作为一种语言)真的比传统的服务器端语言更好或更差。它具有灵活性、快速原型(没有双关语)、灵活性等优点(与Ruby和Python等其他动态语言一样)。另一方面,它没有Java和C#所拥有的库支持,也没有静态类型(我不会在这里讨论哪个更好;出于不同的原因,我喜欢这两种语言)。 如果您想两者兼得,可以将JavaScript作为脚本语言嵌入到应用程序中。Rhino for Java和JScript.NET使得在JavaScript中操作“本机”对象变得容易。例如,您可以用Java或C#编写域类,并在需要更大灵活性的地方使用JavaScript编写它们的脚本。如果您对JavaScript足够熟悉,那么使用单一语言编写可能会更简单。 我从未使用JavaScript编写过“真正的”服务器端应用程序,因此我无法判断它是否比.NET好(我也从未使用过JScript.NET)。不过,为了好玩,我已经使用了一些框架,目前我正在使用Helma NG重写我的个人网站。到目前为止,这是一次很好的体验(比PHP好得多,我从来没有真正喜欢过PHP)。 优点和缺点是什么? 优点:
缺点:
这在性能方面如何运作良好?
是否存在仅使用服务器端JS(无其他语言)的实时实现(公共网站)? 我不知道有任何大型网站使用JavaScript,但可能有一些。 AptanaJaxer(开源)有哪些替代方案?? 维基百科有一个 large list of options ,但它没有多少有用的信息。在成熟度和规模方面有很多选择。
我们能如何实施&维护数据库事务?我们可以在服务器端JS中这样做吗。。? 基于Rhino的框架允许您使用Java类,因此您拥有完整的JDBC支持。我没有使用过Jaxer的数据库库,所以我对它的功能一无所知。 是否可以在服务器端JS中开发RESTFul和SOAP服务。。?? RESTful API应该不会有任何问题。我不知道对SOAP有什么具体的支持,但应该有 可能的 . |
3
6
作为前言,我在日常工作中使用SSJ。我们在SpiderMonkey上运行了一个相当大的网站(就复杂性和页面浏览量而言)。在我有经验的地方,我会补充马修的优秀答案。 这真的比使用服务器端语言更好吗(假设c#) “更好” 这取决于你想用它做什么。JavaScript本身有一些很棒的特性,也有一些非常糟糕的特性。如果你对开发JS(客户机或服务器)很认真,我不能高度推荐你观看道格拉斯·克罗克福德(Douglas Crockford)的演讲, Javascript: The Good Parts 如果你还没有。他在清理积垢方面做得非常出色,他是一个优秀的演说家。 我发现SSJS世界目前最缺乏的是成熟度。我不熟悉C#,但JavaScript没有成熟的标准库,也没有成熟的包分发方法。对我来说,这是一个很大的难题。 这就是说,请注意 CommonJS 组他们正在努力定义那些确切的东西。此外,jaxerapi文档列出了该框架中包含的内置组件。 这在性能方面如何运作良好? JavaScript本身不是一种速度慢的语言,也不是一种特别快的语言。正如Matthew指出的,它应该可以与您将使用的任何其他脚本语言进行比较。浏览器供应商之间的战争,看看谁可以建立最快的浏览器将受益于SSJS人群以及。 V8团队在其引擎中构建的分代垃圾收集就是一个很好的例子。停止虚拟机以从堆中释放无法访问的对象并回收它们的内存可能会有点慢,但它们通过减少垃圾回收器运行时需要检查的对象数量来缓解这一问题。 我们能如何实施&维护数据库事务?我们可以在服务器端JS中这样做吗。。? Jaxer似乎有MySQL和SQLite数据库API。正如Matthew提到的,如果您使用Rhino,那么您可以使用JDBCAPI。 编辑 |