我刚开始尝试 Aptana Jaxer我的下一个项目的服务器端 javascript 引擎。我对此几乎没有疑问
我知道这太长了(而且问题很幼稚)。我只是希望有人在实现服务器端 JS 时已经遇到了所有这些。
编辑:
根据 Matthew 和 Ken 的评论,我对问题 进行了一些澄清这真的是更好的方法吗?
这就是我想问的。。
它真的比使用服务器端语言(假设是 c#)更好吗?我们如何将其与网站的 c# 实现(性能、语言功能)进行比较?
哪个是更好的方法,在服务器端单独使用 JS 还是在其他语言堆栈和网络服务器之间的中间层使用 JS?
最佳答案
我是 Myna 的开发者(www.mynajs.org),一个基于 Rhino 和 Java 的开源服务器端 JS 平台。我将解决与 Myna 相关的问题,但其中许多要点通常适用于服务器端 JS:
通过使用服务器端 JS,我们是否可以在不使用任何服务器端语言(如 C#、java 等)的情况下实现整个 Web 应用程序。或者服务器端 JS 位于 Web 服务器和其他语言堆栈之间。
在 Myna 中,可以用 JS 编写整个应用程序。 Myna 已经包含用于数据库访问、对象关系映射、密码学、OpenID 等的 API。
它真的是比 c#/Java 更好的方法吗?
使用基于 Rhino 的服务器,在需要时可以轻松使用 Java。您可以轻松安装开源/商业/手工编码的 Java 库,然后从 JS 编写它们的脚本。这意味着您获得了 JS 的快速开发,但保持了 Java 平台的优势
有什么优点和缺点?
优点:
var manager =new Myna.DataManager("DataSource name").getManager("table name");
您将获得一个可以执行所有基本 CRUD 操作的对象,而无需明确定义数据库表。作为另一个示例,您可以插入包含表单帖子中所有匹配值的行:
manager.create($req.data);
缺点:
这在性能方面如何运作良好?
在原始计算速度方面,很少有动态语言可以与 C# 和 Java 等静态类型编译语言相媲美。说了这么多,其实也无所谓。应用程序中计算密集型的任何部分都应该用 Java 编写,或者使用现有的 Java 库。例如,我不建议任何人用 JS 编写数据库。对于现实世界的 Web 应用程序/SOA 服务,速度变慢的主要原因不是原始计算速度,而是代码效率低下,尤其是数据库访问。 Myna 通过执行以下操作来帮助解决此问题:
我们如何实现和维护数据库事务?我们可以在服务器端 JS 中做到这一点吗?
如果您的意思是“一组可以反转或提交的 SQL 语句”中的事务,那么 Myna 尚不支持事务。如果有足够的兴趣,我愿意实现这一点。
如果你的意思是“服务器端 JS 有什么样的数据库支持?”那么答案取决于平台。 Myna 平台提供以下数据库功能:
是否可以在服务器端 JS.. 中开发 RESTFul 和 SOAP 服务?
REST 和 SOAP 支持是特定于平台的功能。八哥的 WebService对象支持以下协议(protocol):
(一个简单的协议(protocol),使用标准格式的帖子并返回 JSON。易于从浏览器使用)
Myna 还理解 PUT 和 DELETE 请求方法,并以文本和二进制形式提供对请求正文内容的访问,因此可以以特定于应用程序的方式处理这些 RESTful 方法。
调试
传统的断点调试是服务器端真正的挑战。尽管 Rhino 支持调试器钩子(Hook),但在无状态 Web 应用程序中使用这些钩子(Hook)会非常复杂。我个人甚至不使用断点调试器,即使它们可用(例如 firebug)。相反,我更喜欢伐木。
在八哥,
Myna.log(type,label,detail)
将产生一个低优先级的线程,将 HTML 日志消息写入 Myna 的日志数据库。然后可以通过 Myna 管理员搜索这些日志。日志还记录时间戳和经过的毫秒数以进行分析。 Myna.dump(obj) 也可用于呈现任何对象的 HTML 表格表示。 Myna 还使用堆栈跟踪、源代码上下文和请求详细信息记录所有未处理的异常。在 dump()、log() 和默认错误处理程序之间,我调试 Myna 代码没有太大困难
关于javascript - 服务器端javascript实现的优缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1476967/