c# - C# 到 Typescript(或 javascript)的互操作性是否可能?
问题描述
我在具有基于角度的前端和 Net Core / webapi 后端的系统上工作。这是一个功能强大的工程应用程序,可以在打字稿代码中进行大量计算和分析,以便为用户提供丰富且信息丰富的体验。此代码包括在客户端执行的统计和计算等内容,并以绘图、图表或警告的形式立即呈现给用户。因此,许多业务逻辑现在以打字稿代码的形式存在。出于用户体验/反应性目的,此代码需要在客户端。
现在,我们正在构建后端任务,例如数据接口甚至用户数据的日常评估,因此服务器“需要”执行此类计算,以便它以自动化/无人值守的方式复制这种用户体验. 例如,从某个远程 Web 服务加载数据并告诉用户前端会实时告诉的类似内容。代码重复不是一种选择,因为这是很多复杂的代码。逻辑必须相同。
我做这个序言是为了说明这不是前端优先与后端优先的问题。因此,我正在寻找一种方法让C# 后端可以使用其中的一些代码。我想象剥离 typescript -say- 静态代码,例如“function PerformComplexCalculation(jsonObjectParam,...,...)”并在 C# 中执行相同或至少同步的该代码副本。
我知道可以与 JS 互操作,但我从未这样做过,所以有几个问题
- 它如何处理参数/返回的数据?我猜到处都有连载
- 它可以与打字稿一起使用吗?
我可以接受 nodejs 或类似的后端应用程序/服务处理这个的想法,我可以接受必须复制代码库的想法。同步副本与逻辑复制不同我理解“互操作”类应该是无脂肪的(纯和静态函数)
我知道这不是一个简单的问题,也不是一个单一的答案。为了论证,我将尝试添加一些虚拟代码
- 打字稿共享代码
export class FringeMethods
{
static doWeirdStuff(allInputsNeeded){
let x = allInputsNeeded.a + allInputsNeeded.b / allInputsNeeded.c;
if(x > 0) return "boom!";
else return "bang!";
}
}
- C#理论代码
public void LoadData(){
foreach(var entity in someData){
var allInputsNeeded = convertEntityToSomethingInteroperable(entity);
var evaluation = interop.invoke("FringeMethods.doWeirdStuff", allInputsNeeded );
if(evaluation == "bang!"){
SendEmailToSuperman("Entity {entity} goes bang!");
}
}
}
解决方案
推荐阅读
- html - Apps脚本通过按钮从另一个html表单打开html表单
- javascript - 在类方法之间共享变量
- regex - 使用 pandas 时是否可以用 regex 包替换 re 包?
- php - 如何阻止 mkdir() 文件将“守护进程”设置为管理员
- linux-kernel - 硬件断点只能在模块初始化时设置
- javascript - 从字符串中获取嵌套对象中的某个值
- python - 有人可以帮我将 **for 循环** 替换为 **while 循环** 我正在努力弄清楚吗?
- python - 如何打印存储/引用地址/位置的列表元素的值?
- docker - 卡夫卡连接,码头工人
- google-cloud-platform - 特定区域的 VM 磁盘大小限制