【问题标题】:How can i integrate C# code into an existing Javascript website (Angular)?如何将 C# 代码集成到现有的 Javascript 网站(Angular)中?
【发布时间】:2020-05-27 14:27:15
【问题描述】:

我们有一个庞大的 Javascript 网站生态系统,实际上是 Angular,我们不打算很快用 c# 重写。所以这里的目标是能够在我们的 javascript 中使用供应商 dll 来添加新功能。这是一个专有系统,我们别无选择,要么我们使用他们的 dll,要么我们没有该功能。我在这里对 webassembly 寄予厚望,因为这看起来像是使用该 dll 的灵丹妙药,而无需用新语言重写整个项目。

问题:我能找到的所有示例更多地是关于使用 Blazor 编写网站或从 Blazor 调用 javascript,我找不到任何东西可以将一些临时 C# 代码包含到现有项目中。我本来认为这将是一个很好的用例,因为能够在网页上利用 C# 线程池对我来说听起来不错!

有人做过类似的事情或知道一些我可以遵循的示例/教程吗?

【问题讨论】:

  • 问题是C#是服务器代码,所以只能在服务器上运行。 Angular 编译为 HTML/CSS/Javascript 代码,可在 Web 浏览器上运行。出于安全原因,Web 浏览器限制了网站 javascript 代码可以访问的系统资源。所以你的问题的答案是否定的,至少据我所知
  • 您是否正在寻找一种在没有 Blazor 的情况下将 C# 编译为 wasm 的方法?见mono-project.com/news/2018/01/16/…
  • @Tuan:“C# 是服务器代码”到底是什么意思?
  • @itminus:不完全是。我想使用现有 javascript 页面中的 C# 代码,而不必对整个网站进行大修。
  • @Gregfr 因为我们可以将 C# 编译成 wasm+dll,所以我们可以通过 js 使用 wasm+dll。见【使用C# demo的factorial_submit函数】(view-source:hipbyte.com/~lrz/mono-wasm-hello/?input=61&Submit=Calculate)

标签: javascript c# asp.net-core mono blazor


【解决方案1】:

正如 Tuan 所说,Angular 和 C# 并没有像你建议的那样真正共存。

我想说这里有两种不同的方法。

  1. 有一个 C#.NET MVC 应用程序,但调整路由,以便 Angular 应用程序处理一些页面,而 .NET 应用程序处理其他页面。这没问题,但有很多陷阱,例如您无法共享捆绑的 CSS 和 JS 或维护 Angular 控制器的结构(以及其他)。

  2. 更好的方法是让您可爱的 Angular 应用程序保持原样,但有一个单独的 Web API 应用程序/项目,并使用 Angular 应用程序在正确的上下文中调用 dll(项目中的引用)作为REST API(通过简单的 POST 或 GET 调用)。

当您说“...能够在我们的 javascript 中使用供应商 dll 来添加新功能...”时,您并不太清楚您想要做什么,但您可以找到有关将 C# 编写为 Web 并将其实现的信息.NET core 中的 API 在这里

https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api?view=aspnetcore-3.1&tabs=visual-studio

【讨论】:

  • 感谢您的回答。我应该补充一点,我们的 Angular 应用程序打包在 nwjs 中,以便在用户的桌面上运行。我想到了选项 #2,但问题是这个 dll 需要在用户桌面上运行,因为它将与他运行的另一个应用程序交互。所以我看到的唯一选择是在用户桌面上生成一个 C# 服务器,让我的 Angular 应用程序与之交谈。我不太喜欢这个解决方案,但我没有看到任何其他方式。
  • 我理解并让它作为桌面应用程序运行很困难,因为这不是 Angular 的设计方式。您可以考虑拥有一个 AngularJS 版本的应用程序,它可以更好地插入 C# 和 MVC,但当然您不会获得“真正的”Angular 的好处,例如 Type Script。
猜你喜欢
  • 1970-01-01
  • 2011-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-23
  • 1970-01-01
  • 2014-04-23
相关资源
最近更新 更多