-1

我们正在考虑将我们的 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# 命令/查询。我想这种方式存在陷阱,所以我想知道您对此有何看法。

4

2 回答 2

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 的博客,其中包含与此相关的好话题。Tomasz Janczuk(他正在研究 Edge.js)说:

Edge.js 为 Node.js 和 .NET 之间的互操作性提供了一种异步的进程内机制。

您可以使用此机制:

  • 使用 ADO.NET 从 Node.js 访问 MS SQL 更多...
  • 使用 Node.js 的 CLR 多线程处理 CPU 密集型工作 更多...
  • 用 C# 而不是 C/C++ 为 Node.js 编写本机扩展
  • 将现有的 .NET 组件集成到 Node.js 应用程序中
于 2015-10-19T10:29:05.813 回答
2

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

我认为将不同的东西混合在一件事上会使它变得更加复杂,取决于事物的混合,并且长期不可维护,单一的地方多于一件事。

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

于 2015-10-26T06:52:05.437 回答