node.js和c#的用例


10

我做了很多ASP.NET工作(C#,MVC),但其中大多数是典型的Web开发。我使用CRUD存储库进行Restful体系结构。我的大多数客户在他们的应用程序中没有很多高级要求。

我现在正在研究node.js及其对性能的影响(我沉迷于速度),但是我并没有那么深入地研究它。

我想知道

  • node.js可以现实地替换我在C#和ASP.NET MVC中的典型Web开发(不重写现有应用程序,而是在开发新应用程序时)
  • 通过向现有体系结构添加一些异步优势,node.js可以补充ASP.NET MVC应用程序。

是否有针对C#和node.js的用例?

编辑

我喜欢ASP.NET MVC,并且对它的发展感到非常兴奋。只是想看看是否有特殊的用支持


是的,我意识到在包括Ruby或PHP时这可能是一个更大的话题,但是对于这个特定问题,我对这两个都不感兴趣……仅我一个人。
Chase Florell 2011年

答案是尝试节点。阅读有关它。看看你是否喜欢它。
雷诺斯2011年

Answers:


11

我现在正在研究node.js及其对性能的影响(我沉迷于速度),但是我并没有那么深入地研究它。

个人资料,个人资料,个人资料。这是知道您的提速正在产生适当影响的唯一方法。您可以猜测它足够快。但是大多数人喜欢过早地进行优化。这比在约会中和自己玩耍要糟。

我想知道node.js是否可以完全替代我在C#和ASP.NET MVC中进行的典型Web开发,是否可以更好地作为C#和ASP.NET MVC的补充,或者是否有些事情应该“单独解决” ”。

是否有针对C#和node.js的用例?

当然,如果您在一家定期使用C#编写代码的商店中,则应该使用MVC(它比WebForms更好,被称为WebPages)。您将不会浪费很多时间进行工具培训,这是您的工作流应该已经处理的事情。

上面您似乎没有指出的是选择每个对象的原因。您已经给出了两个当前的市场选择,一个仍然处于Alpha阶段,另一个处于平台发布的第三年。我不想将当前的测试模型电动汽车与已经投放市场的本田混合动力汽车进行比较。他们在两个不同的联赛中。

现在,如果您名义上是C#商店,那么这就是您远离Node.js的原因。

您当前不以异步事件I / O工作,而当前以过程格式工作。

那就是nodejs将为您做什么的对立面。

但是,如果您经常用C#编写异步代码,并且经常使用事件样式使用它,那么可以,node.js是您要考虑的问题。

这是您要放弃的:

  • IIS-这对很多人来说实际上很重要。诸如本机A / D集成之类的事情已经完成,并且几乎没有错误。实际上,node.js现在可以与IIS很好地集成。
  • Razor模板-如果您已经做过任何认真的C#MVC,那么您正在使用和喜欢Razor,以及您能以多快的速度完成工作。节点中有类似的模板,我当然不是敲节点,但是整个工具链已经存在于C#中,并且很多工具当前都在节点世界中构建。注意:许多这种工具现在已经相当成熟 _
  • dll的编译时构建-node.js通常在运行时进行编译,也就是说,并不是在启动时检查所有路径。完全有可能在节点中包含真正糟糕的代码,而没人接触,检查或测试。
  • 您每天使用的VS中内置的所有工具-VS对JavaScript的支持并不多。部分原因是javascript中的所有内容都是如此动态。注意:微软显然正在开发对javascript _的工具支持

这是您将获得的:

  • 假设您既进行客户端脚本编写又进行服务器端编写,则开发的所有内容都将使用相同的语言。(或者为什么您甚至会考虑在服务器上使用javascript)

因此,由于我似乎完全在这里抨击Node,因此我要指出,Node是我在家中的游戏语言,我喜欢它,并且有时我会帮助人们在stackoverflow聊天服务器(642会议室)上调试它。我看到它在未来具有巨大而巨大的潜力。

我只是说,不要把婴儿扔出去,不知道为什么洗澡水很脏。

您没有给出为什么应该放弃多年的经验并开始新的事情的原因。要么是不好的工具?一点也不。两者都很棒,使发展变得轻而易举。

节点可以代替C#吗?是的,当然可以。PHP,Java或Ruby也可以。您不是在问那些。

当您准备好编程node.js而不是C#时,这就是您的方式:

  • 您正在考虑写一本书以帮助其他人“获取javascript”,而不是他们以前用C#等编写的无聊的旧程序。
  • 您在同步(阻塞)I / O上遇到了问题,导致您的应用无法进行实际工作。
  • 除了默认的MVC之外,您没有在C#中使用ANY库,而是仅用于路由,并且您可以确定自己可以做一个更好的路由引擎,并且可以对所有内容进行尽可能接近金属的编码。
  • 您设计的每个数据对象都将显示为哈希,而不是强类型对象。

1
我的建议是,在node.js中编写三个或四个复杂的网站。从小开始,然后变大。
jcolebrand

1
我不在上大学。我已经开发了大约8年的个人音乐,对我自己也做得很好。我自己可以比其他公司赚得更好的$$$。
Chase Florell 2011年

2
C#会编译所有代码路径的时间检查。直到坏数据将其炸毁,它才会抛出。节点不会仅仅因为错误的代码而停止构建。或者我使用的是旧版本,但现在已更改。
jcolebrand

1
@Raynos:Razor不是第三方开放源代码项目,它是ASP.NET MVC 3官方认可的由Microsoft开发的视图引擎
Carson63000 2011年

1
在撰写本文时,IIS不支持Node.js,但是现在支持。
jcolebrand

5

如果您只是使用CRUD存储库来完成宁静的架构,则没有充分的理由将现有应用程序移植到node.js。

如果您编写一个执行REST和CRUD的新应用程序,则可能有充分的理由从一开始就使用node.js。

这实际上取决于每个应用程序。

例如,个人而言,我会完全在node.js中编写REST / CRUD应用程序,因为这是个人喜好。Node非常适合开发,ASP.NET MVC对我来说是一个令人讨厌的限制性框架。

结论:两种工具都能完成工作。如果没有支持.NET或node的特定要求,请使用所需的任何内容。即是个人喜好。

但是我可以列出两个平台的一些好处

ASP.NET

  • Windows / .NET集成。如果要使Microsoft堆栈紧密耦合并高度集成,则需要.NET
  • 随时可用的劳动力
  • 牵手的整体框架
  • 具有开箱即用的一组功能。如果您对这些功能满意,可以提高生产率。如果您要使用自定义功能,则最终会与该工具抗争并降低生产率。

Node.js

  • 整个Web堆栈的单一语言(如果您使用的是将js用于其“查询”的noSQL数据库(如沙发/蒙哥),则为该语言。
  • 非常适合使用socket.io之类的软实时Web应用程序
  • 当您所有的服务器要做的是与各种不同类型的n个远程端点进行通信时,非常适合用作网络连接。
  • 仅提供开箱即用的最小功能。这意味着您可以按照所需的高度自定义的方式构建应用程序。
  • 小型unix样式工具的集合,这些工具可以很好地完成一件事和一件事,易于混合和匹配
  • npm:包管理正确
  • 丰富的开源社区

是的,不希望移植现有的应用程序。考虑将来会出现的应用程序。
Chase Florell 2011年

5
@Raynos应该添加免责声明,说他是Node.js的传播者,并且从未建立过基于MVC3 / 4的网站。(我认为这反映在答案中)。
马特·埃施
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.