首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >serverside javascript实现的优缺点?

serverside javascript实现的优缺点?
EN

Stack Overflow用户
提问于 2018-03-08 05:26:19
回答 2查看 0关注 0票数 0

我刚开始尝试使用Aptana Jaxer服务器端JavaScript引擎进行下一个项目。我对此几乎没有任何疑问

  • 通过使用服务器端JS,我们可以在不使用任何服务器端语言(如C#,Java等)的情况下实现整个Web应用程序。或者服务器端JS位于Web服务器和其他语言堆栈之间。
  • 这真的是一个更好的方法吗?
  • 什么是优点和缺点?
  • 这在性能方面如何运作良好?
  • 有没有实时的实现(公共网站)只使用服务器端JS(没有其他语言)?
  • Aptana jaxer(开源)提供哪些替代方案?
  • 我们如何实施&maitain db交易?我们可以在服务器JS中做到这一点..?
  • 是否有可能在serverside JS中开发RESTFul和SOAP服务.. ??

我知道这太长了(和天真的问题)。我只是希望有人在实现服务器端JS的时候已经遇到了所有这些。

根据马修和肯的评论,我已经增加了一些清晰的问题是否真的是一个更好的方法?

这是我打算问的。

它真的比使用服务器端语言(假设c#)更好的方法,我们如何可以将它与网站的c#实现(性能,语言功能)进行比较?哪一个是更好的方法,在服务器端单独使用JS还是在其他语言堆栈和Web服务器之间的中间层使用JS?

EN

回答 2

Stack Overflow用户

发布于 2018-03-08 14:03:43

我是Myna(www.mynajs.org)的开发人员,这是一个基于Rhino和Java的开源服务器端JS平台。我将解决与Myna有关的问题,但这些问题中的很多都适用于服务器端JS:

通过使用服务器端JS,我们可以在不使用任何服务器端语言(如C#,Java等)的情况下实现整个Web应用程序。或者服务器端JS位于Web服务器和其他语言堆栈之间。

在Myna中,可以用JS编写你的整个应用程序。Myna已经包含了API的数据库访问,对象关系映射,crytogrophy,OpenID等。

它真的比c#/ Java更好吗?

使用基于Rhino的服务器,只要需要,就可以下载到Java。您可以轻松安装开源/商业/手动编码的Java库,然后从JS中编写脚本。这意味着您可以快速开发JS,但可以保持Java平台的优势

有什么优点和缺点?

优点:

  • 快速开发:在Myna中,您只需使用.sjs扩展名在webroot中创建文件即可。这意味着你可以创建一个编辑 - 保存 - 刷新浏览器循环,调试/调整代码非常快。
  • 简单的JSON:JS支持服务器端意味着移动复杂的结构非常简单
  • 共享代码:如果您需要在服务器和浏览器上执行相同的功能,则可以使用相同的代码
  • 动态ORM:静态类型的编译语言使得在运行时很难改变对象。这通常意味着ORM必须事先定义。在Myna建设ORM就像 var manager =new Myna.DataManager("DataSource name").getManager("table name"); 您会得到一个可以执行所有基本CRUD操作而无需明确定义数据库表的对象。作为另一个例子,你可以插入一个表格中包含所有匹配值的行: manager.create($req.data);
  • 函数式编程:如果您已经开始使用高级JavaScript功能,那么您会明白它们在服务器端有多大帮助。由于服务器端环境一致,使用Array Extras生成器和迭代器解构赋值E4X等高级功能是安全的

缺点:

  • 工具:像C#和Java这样的静态类型语言具有出色的IDE和开发工具。像JS这样的动态语言还没有工具支持。就我个人而言,我发现样板代码和模糊类型铸造的大量减少弥补了这一点,但如果您在IDE中进行了大量开发,这仍然是一大缺点。如果您当前正在使用IDE,请考虑将jedit用于动态语言
  • 成熟/标准化:Serverside JS仍然是一个新的范例,并且有很多参与者并没有明确的获胜者。ECMA没有任何服务器JS的标准。正如Brandon的回答中所提到的,CommonJS小组正在尝试形成服务器端JS标准,而Myna通过Narwhal实验性的CommonJS支持

这在性能方面如何运作良好?

以原始计算速度,很少有动态语言可以匹配静态类型的编译语言,如C#和Java。说了这么多,真的没关系。应用程序的计算密集型应用程序的任何部分都应该用Java编写,或者使用现有的Java库。例如,我不会建议任何人在JS中编写数据库。对于真实世界的Web应用程序/ SOA服务,速度下降的主要原因不是原始的计算速度,而是代码效率低下,尤其是数据库访问。Myna通过以下方式为此提供帮助:

  • 内部缓存编译的JS脚本
  • 内部使用缓存的准备好的语句进行数据库事务
  • 查询和输出片段缓存
  • 数据库连接池
  • 自动ETag散列支持
  • 分析工具
  • 延迟加载元数据

我们可以如何实施和维护数据库交易?我们可以在服务器JS中做到这一点..?

如果您的意思是“一组可以反转或提交的SQL语句”,那么Myna尚不支持事务。如果有足够的兴趣,我愿意实施。

如果你的意思是“服务器端JS有什么样的数据库支持?” 那么答案依赖于平台。Myna平台提供了以下数据库功能:

  • 一个基于Web的管理应用程序,您可以在其中定义“数据源”,即数据库连接信息。然后您可以按名称查询这些数据源。Myna包含H2,MySQL,Microsoft SQL Server和Postgresql的JDBC驱动程序,但可以使用任何JDBC或ODBC数据源
  • Myna.DatabaseMyna.Table提供数据库中立的metdata访问以及表的创建和修改。
  • Myna的查询对象支持maxRows,分页,SQL参数,自定义行处理程序,查询查询,缓存等等
  • Myna的DataManager对象支持运行时ORM对象的创建

是否有可能在serverside JS中开发RESTFul和SOAP服务.. ??

REST和SOAP支持是平台特定的功能。Myna的WebService对象支持以下协议:

  • 肥皂
  • XML-RPC
  • JSON-RPC
  • Ext Direct
  • JSON-MYNA(一种简单的协议,使用普通表单文章并返回JSON,易于在浏览器中使用)

Myna还了解PUT和DELETE请求方法,并以文本和二进制形式显示请求主体内容的访问权限,以便可以以特定于应用程序的方式处理这些RESTful方法。

调试

传统的断点调试是服务器端真正的挑战。虽然Rhino支持调试器钩子,但是使用无状态Web应用程序中的这些钩子会非常麻烦。就个人而言,我甚至不使用断点调试器,即使它们可用(例如萤火虫)。相反,我更喜欢日志。

在Myna,

代码语言:javascript
复制
 Myna.log(type,label,detail)

会产生一个低优先级的线程来写一个HTML日志消息给Myna的日志记录数据库。这些日志可以通过Myna Administrator进行搜索。日志还会记录时间戳和毫秒数据以进行性能分析。Myna.dump(obj)也可以用来呈现任何对象的HTML表格表示。Myna还记录了堆栈跟踪,源代码上下文和请求细节的所有未处理异常。在dump(),log()和默认错误处理程序之间,我没有太多的难度来调试Myna代码

票数 0
EN

Stack Overflow用户

发布于 2018-03-08 15:14:18

通过使用服务器端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更好,我从来不喜欢它)。

什么是优点和缺点?

Advantanges:

  • 服务器端和客户端编程只需要一种语言。
  • 共享代码的可能性,例如表单验证。Jaxer允许您在客户端,服务器或两者上运行脚本。
  • 你可以用JavaScript编程(假设你喜欢这种语言)。

缺点:

  • 许多框架都是实验性的/不是很成熟。
  • 你必须用JavaScript编程(假设你不喜欢这种语言)。

这在性能方面如何运作良好?

性能应该与其他脚本语言大致相当。

有没有实时的实现(公共网站)只使用服务器端JS(没有其他语言)?

我不知道使用JavaScript的任何大型网站,但可能会有一些。

Aptana jaxer(开源)提供哪些替代方案?

维基百科有大量的选项,但它没有太多有用的信息。有很多种成熟度和大小的选择。

这里有一些我熟悉的(不同程度)

  • 具有活动记录的Helma - Rhino(Java)框架。
  • Helma NG - Helma Next Generation(实验重写,积极开发)。
  • Phobos - 在NetBeans中提供了很好的支持。
  • v8cgi - 小而简单,使用Google的V8引擎,可能还没有生产准备。
  • Jaxer - 使用DOM实现运行Spidermonkey,因此您可以使用jQuery或Prototype等框架来操作页面。Aptana Studio具有良好的IDE支持。

我们可以如何实施和维护数据库交易?我们可以在服务器JS中做到这一点..?

基于Rhino的框架可让您使用Java类,因此您拥有完整的JDBC支持。我没有使用Jaxer的数据库库,所以我对它的功能一无所知。

是否有可能在serverside JS中开发RESTFul和SOAP服务.. ??

RESTful API不应该有任何问题。我不知道对SOAP的任何具体支持,但它应该是可能的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100003181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档