通过ASP.net核心托管模型了解Blazor组装

时间:2020-06-04 18:46:34

标签: blazor blazor-client-side blazor-webassembly

我已经阅读了很多有关Blazor和不同托管模式的文章(实际上是3篇)。最容易理解的是纯客户端模型,它是在webassembly上运行的独立应用程序。没问题。但是,我仍然在努力理解服务器模型和带有ASP.NET Core Hosted(复选框)模型的WebAssembly模型之间的区别。

请帮助我澄清一些事情。

1)对于服务器型号,浏览器使用signalR连接到服务器应用程序。它是Visual Studio中的一个应用程序。是否正确理解ASP.NET Core托管模型将单个应用程序拆分为两个单独的应用程序,即客户端和服务器。客户端是一个WebAssembly应用程序,它仍然使用SignalR与服务器应用程序进行通信以获取事件和获取数据吗?

2)在客户端和服务器应用程序之间,我看不到它们之间没有任何关系或类引用,只是服务器应用程序引用了客户端应用程序。我可以删除客户端应用程序引用,但仍可以编译。但是,该站点是空的。那么,服务器应用程序如何知道从客户端应用程序加载内容的位置?仅仅是因为引用了客户端应用程序吗? “挂钩”在哪里?我问这的另一个原因是我已经开始开发使用服务器模型的网站,但是现在如果我想使用ASP.NET Core Host更改为客户端模型,该怎么做?

3)在“服务器”应用中,有_Layout.cshtml文件。在客户端应用程序中,wwwroot下有index.html。呈现的是index.html。那么_Layout.cshtml是做什么用的?

4)我从示例VS模板中看到,服务器应用程序用作API服务(weatherforecast)。在我的环境中,我已经可以使用专用的API服务。那我要使用Server应用程序做什么呢?托管客户端应用程序只是一个空的.NET核心应用程序吗?除了API调用之外,您如何使用Server应用程序?

1 个答案:

答案 0 :(得分:4)

这是正确的理解吗?客户端是一个WebAssembly应用程序,它仍然使用SignalR与服务器应用程序进行通信以获取事件和获取数据吗?

不。

Blazor服务器:您的代码在服务器上运行,并使用SignalR推送更改。
Blazor Webassembly:在浏览器中独立运行。
Blazor Webassembly Hosted:一个解决方案中包含3个项目。这只是一个方便模板。 Asp.NET服务器部分(不是Blazor应用程序)为客户端提供服务,并且是承载API的地方。

Blazor Wasm可以将SignalR用作附加功能,但不需要它起作用。

在“客户端”和“服务器”应用程序之间,除了“服务器”应用程序引用了“客户端”应用程序外,它们没有任何关系或类引用。

正确。服务器仅需要该引用来查找Wasm应用程序的(输出)文件。您可以删除引用并使用路径字符串配置某些内容。这两个项目之间没有“技术”联系。它们在不同的平台上运行。

在“服务器”应用中,有_Layout.cshtml文件。 ...那么_Layout.cshtml是做什么用的?

在向项目添加授权时使用。不使用授权时就存在的事实可能是一个疏忽。要查看其运行情况,请创建启用了“个人”帐户的“服务器”或“托管”项目。登录等页面使用_Layout.cshtml

我已经可以使用专用的API服务。那我要使用Server应用程序做什么呢?

那么您就不需要它了,您应该只使用简单的WebAssembly模板。您可以研究示例如何使用共享程序集(DTO)并为客户服务。您可以在服务中使用部分内容。