我们正在考虑将ASP.NET MVC应用程序迁移到Node.js.以下是我目前对迁移过程的理解。
我们的典型行动如下:
public ActionResult Something(...)
{
//1. execute query (for GET) or command (for POST)
//2. SignalR notification in case POST request
//3. Return query result (for GET) or void (for POST)
}
完全我想将所有与Web相关的代码移动到Node.js(以便我们摆脱死亡/支持不良的依赖关系,如SignalR),但保留C#上的逻辑(查询,命令)(无需重写现有代码,比JS更容易维护。所以我遇到的最佳解决方案(理论上还没有尝试过)是通过Edge.js从Node.js调用我们的C#命令/查询。我想这方面存在陷阱,所以我想知道你对它的看法。
答案 0 :(得分:5)
虽然我同意@Coulton& @VsevolodGoloviznin,但我会回答这个问题:)
查看Using Node.js in an ASP.NET MVC application with iisnode,其中介绍了两种技术的混合方式。
要使用代理,有一个node-http-proxy。 IIS也许可以为你做到这一点。
<强>更新强>:
Edge.js提供了将Node.js与.NET平台相结合的解决方案,可以从Node.js调用.NET函数。
阅读其中包含有关此主题的好主题的hanselman's blog。 Tomasz Janczuk(他在Edge.js上工作)曾说:
Edge.js为。提供异步的进程内机制 Node.js和.NET之间的互操作性。
您可以使用此机制:
- 使用ADO.NET更多地从Node.js访问MS SQL ...
- 使用来自Node.js的CLR多线程来进行CPU密集型工作......
- 在C#中编写Node.js的原生扩展,而不是C / C ++
- 将现有的.NET组件插入Node.js应用程序
答案 1 :(得分:1)
您可以将现有的c#代码作为restful api提供服务,并在nodejs应用程序中使用它。
我认为将不同的东西混合在一起会使它变得更加复杂,依赖于事物的混合而不是长期的可维护性,在一个地方单一的单一物质。
相反,我会把我现有的东西分开作为一个简单的restful api,这样你就可以在任何地方使用它,在边界提供和维护它,可扩展,面向服务,bla bla ..