我正在尝试了解ASP.NET Core如何通过SPA实现服务器端呈现的内部结构。请注意,这不是操作问题,而是有关代码运行时发生的问题。
到目前为止,我了解的是.NET通过InvokeAsync<T>
或InvokeExportAsync<T>
方法调用Node.js实例来与Node.js进行交互。 js文件路径与将由js模块本身中定义的module.exports函数接收的任何其他参数(序列化为JSON)一起传递。然后,通过将结果数据传递到也传递给module.exports函数的回调中,将结果数据传递回.NET。 ASP.NET Core's NodeServices README提供了一个示例here以及页面下方的其他几个示例。 SpaServices还has a very similar example与服务器端呈现特别相关。
尽管通过深入研究源代码我可以更好地理解该过程,但我仍然不了解真正的 在这里发生了什么。我的一个提示是,INodeServices
briefly mentions的方法返回了一个Task<TResult>
对象,该对象表示完成了称为RPC调用的操作。我调查了一下,我相信这是指所谓的远程过程调用。不幸的是,我不熟悉RPC,如何使用它或它在内部做什么。
另一个谜团是如何双向接收数据。 module.exports函数如何接收传递到.NET端的InvokeAsync<T>
和/或InvokeExportAsync<T>
的参数?回调参数也是一个谜。该回调来自哪里,如何知道如何将传递给它的结果数据发送回.NET?
我的问题是,这到底是怎么回事? RPC在这里似乎是一个因素,但从表面上看,这一切似乎都是魔术。还在讨论这个Node.js实例,但是究竟是什么呢?是它自己的单独服务器(如果是,为什么不只使用http?)还是其他?
请帮助我了解幕后情况。谢谢。