将 ASP.NET MVC 应用程序迁移到 Node.js

Migrating ASP.NET MVC application to Node.js

我们正在考虑将 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)
}

完美地,我想将所有与网络相关的代码移动到 Node.js(这样我们就可以摆脱 dead/poorly 支持的依赖项,如 SignalR)但保留逻辑(查询、命令) on C#(无需重写已有代码,比JS更易维护)。所以我找到的最佳解决方案(理论上,还没有尝试过)是通过 Edge.js 从 Node.js 调用我们的 C# commands/queries。我想这种方式存在缺陷,所以我想知道您对此有何看法。

虽然我同意@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 where contains good topics around this. Tomasz Janczuk(他正在研究 Edge.js)说:

Edge.js provides an asynchronous, in-process mechanism for interoperability between Node.js and .NET.

You can use this mechanism to:

  • access MS SQL from Node.js using ADO.NET more...
  • use CLR multi-threading from Node.js for CPU intensive work more...
  • write native extensions to Node.js in C# instead of C/C++
  • intergate existing .NET components into Node.js applications

您可以将现有的 c# 代码作为 restful api 服务,并在您的 nodejs 应用程序中使用它。

我认为在一个事物中混合不同的东西会使它变得更复杂,依赖于事物的混合并且长期不可维护,一个地方不止一个事物。

相反,我会将我现有的东西分离为一个简单的 restful api,以便您可以在任何地方使用它,在其边界内交付和维护它,可扩展,面向服务,等等......