Blazor,ASP.NET Core中托管的ASP.NET Core与服务器端

时间:2018-11-16 05:44:45

标签: c# .net-core-2.1 blazor

我正在尝试使用blazor.Net,这是一个实验性框架。

我已经在此框架中开发了一个小项目,它很棒。

但是在11月14日Blazor语言服务的最新更新之后,我看到了模板选择中的两个选项

enter image description here

首先是Blazor(托管ASP.NET Core)

第二个是Blazor(ASP.NET Core中的服务器端)

没有关于它们之间差异的信息,

有人可以告诉我这两个模板有什么区别,什么时候应该选择哪个?

3 个答案:

答案 0 :(得分:12)

我认为被接受的答案不能像评论之一中提到的Mike-EEE一样回答问题。

可以在此链接下找到必要的信息: https://www.telerik.com/blogs/a-breakdown-of-blazor-project-types

  

Blazor Full-Stack模板包含与客户端模板相同的项目结构,并增加了一些内容。就像客户端模板一样,服务器不会呈现HTML,所有文件都将以静态文件(包括.NET二进制文件)的形式传递给客户端。但是区别是增加了ASP.NET Core托管和Web API,以及用于常见应用程序逻辑的共享项目。

模板包含三个项目:客户端Blazor应用程序Blazor.Client,ASP.NET Core服务器应用程序Blazor.Server和用于通用应用程序逻辑Blazor.Shared的共享.NET Standard项目。

  

Blazor服务器端项目模板采用了与Blazor应用程序交付方式以及与浏览器交互方式截然不同的方法。当使用服务器端配置时,Blazor通过将SignalR JavaScript应用程序部署到客户端,将浏览器用作“瘦客户端”。在服务器上,Blazor实现了SignalR集线器,它通过Web套接字与客户端进行通信。在服务器端托管模型中,Blazor在ASP.NET Core应用程序中的服务器上执行。 UI更新,事件处理和JavaScript调用通过SignalR连接进行处理。在此配置中,不需要WebAssembly,并且Blazor在服务器的ASP.NET Core运行时上执行。所有UI更新都以差异形式发送,以二进制数据包的形式通过Web套接字双向发送。对于用户而言,该应用程序与任何其他Web应用程序都没有区别。

答案 1 :(得分:10)

更新
从.Net core 3.0开始,Blazor提供了2种托管模型

  • Blazor WebAssembly应用程序
  • Blazor服务器应用程序

https://docs.microsoft.com/en-us/aspnet/core/blazor/hosting-models?view=aspnetcore-3.1

Blazor WebAssembly应用

Blazor的主要托管模型在WebAssembly的浏览器中运行在客户端。 Blazor应用程序,其依赖项和.NET运行时已下载到浏览器。该应用程序直接在浏览器UI线程上执行。 UI更新和事件处理在同一过程中发生。该应用程序的资产作为静态文件部署到能够向客户端提供静态内容的Web服务器或服务。

enter image description here

Blazor Server应用

使用Blazor服务器托管模型,可以在ASP.NET Core应用程序中的服务器上执行该应用程序。 UI更新,事件处理和JavaScript调用通过SignalR连接进行处理。

enter image description here

注意:ASP.NET Core 3.0支持Blazor Server,并且Microsoft 2020年从.NET Core 3.1.4正式发布Blazor WebAssembly。

Blazor WebAssembly 3.2.0 now available


article在这里很容易解释:

客户端:(模板选择中的第一个Blazor模板):

在此托管模式下,应用程序在浏览器的客户端执行。 Blazor应用程序,其依存关系和.NET运行时已下载到浏览器。该应用程序直接在浏览器UI线程上执行。 UI更新和事件处理在同一过程中发生。 .Net Core的预览版提供了此执行模式。

enter image description here

  • 由于整个应用程序都位于浏览器中,因此DOM更新将 在浏览器本身中处理。
  • 由于不涉及服务器交互,因此可以离线模式工作。
  • 不适合发送数据库,因为它需要发送 到客户端的连接字符串,这可能存在潜在的安全风险。
  • 调试很困难,因为浏览器DevTools处于初始阶段 使用网络程序集。
  • 初始页面加载可能很高,因为所有必需的DLL /程序集都将在浏览器中下载。
  • 不支持IE11。

托管了ASP.NET Core(模板选择中的第二个Blazor模板)

在此托管模式下,该应用程序在ASP.NET Core应用程序中的服务器上执行。 UI更新,事件处理和JavaScript调用通过SignalR连接进行处理。

enter image description here

  • DOM更新将在托管在其中的服务器部分中进行处理 ASP.NET Core服务器。
  • 请勿在离线模式下工作,因为需要信号连接 各种动作(事件调度,DOM更新等)。
  • 适用于数据库连接和操作。您可以使用网络 使用和执行数据库操作的API。
  • 无法调试客户端部分,因为浏览器DevTools位于 使用网络程序集的初始阶段。
  • 基于应用程序端,初始页面加载可能会很高,因为 所需的DLL /程序集将在浏览器中下载。
  • 不支持IE11。

服务器端(模板选择中的第三Blazor模板) 在这种托管模式下,整个应用程序将驻留在ASP.NET Core服务器中,并从浏览器到服务器进行各种操作的请求。由于此操作不会将任何形式的DLL发送到浏览器,因此IE11等旧版浏览器支持它。

enter image description here

  • DOM更新将在托管在其中的服务器部分中进行处理 ASP.NET Core服务器。 SignalR用于连接。
  • 请勿在离线模式下工作,因为需要信号连接 各种动作(事件调度,DOM更新等)。
  • 适用于数据库连接和操作。您可以使用网络 使用和执行数据库操作的API。
  • 调试很好。您可以使用默认的Visual Studio调试 调试应用程序的步骤。
  • 初始页面加载会很好。
  • 支持IE11,因为它不会将WebAssembly发送到浏览器。

答案 2 :(得分:7)

在服务器端托管模型中,Blazor在ASP.NET Core应用程序中的服务器上执行。 UI更新,事件处理和JavaScript调用通过SignalR连接进行处理。

在客户端模型中,Blazor应用程序,其依赖项和.NET运行时被下载到浏览器,并且该应用程序直接在浏览器UI线程上执行。所有UI更新和事件处理都在同一过程中进行。

优点和缺点-在此处了解更多信息:https://docs.microsoft.com/en-us/aspnet/core/razor-components/hosting-models?view=aspnetcore-3.0

服务器端模型发布的风险较小,因此我们将首先在asp.net 3.0中看到它。客户端会稍后再来。

警告:在获得受支持的版本之前,请勿在生产代码中使用