首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET core 3.1中"Web应用“与"Blazor Server App”的区别

ASP.NET core 3.1中"Web应用“与"Blazor Server App”的区别
EN

Stack Overflow用户
提问于 2020-04-10 22:45:03
回答 3查看 1.5K关注 0票数 3

嗨,我正在尝试掌握.NET核心3.1和Visual Studio2019中提供的模板。具体地说,我正在尝试理解拥有Web应用程序(如第一张图所示)和Blazor服务器应用程序(第二张图)之间的区别。

根据我对研究的理解,我可以确定以下几点:-两者都运行在.net核心3上-都使用razor -都运行在服务器级别-都使用“代码隐藏”的概念/结构。

但是:- web应用程序使用.cshtml - blazor服务器应用程序使用.razor

我相信blazor服务器应用程序不需要了解WebAssembly进行数据绑定的知识,并且具有使用javascript代码进行绑定等优点。我已经阅读了文档,其中介绍了"Blazor服务器应用程序“和"Blazor javascript应用程序”的优点,它们都很棒。然而,“服务器应用程序”和"Web应用程序“有惊人的相似之处。

"Web应用程序“和"Blazor服务器应用程序”之间还有什么区别?

EN

回答 3

Stack Overflow用户

发布于 2020-07-15 22:40:27

WebApplication使用.NetCoreRazor页面创建网页和普通HTTP请求,以便在服务器和客户端之间进行通信。例如,您仍然需要像以前一样使用JavaScript来调用方法,并在视图和模型/方法之间进行通信,还需要更新/刷新视图。它几乎是无状态的,您需要遵循传统的方法,就像我们对ASP.Net MVC所做的那样。

另一方面,Blazor有两个版本。WebAssemblyServer-side

  1. "Blazor WebAssembly“在客户端运行在WASM (WebAssembly)和MONO上,代码将被下载到客户端,它带来了一些奇特的功能和离线模式等可能性。但是几乎所有的东西都会被下载到客户端,这会使第一次加载变得有点慢,还可以考虑将你的代码下载到客户端directly.
  2. "Blazor服务器端“,它在服务器上运行,但客户端将通过SignalR连接同时更新。因此,应该在客户端下载较少的数据,并且代码也不在那里(关于安全方面),而且它也是有状态的,这意味着客户端上元素的每个状态都将保留在服务器内存中,而且在任何情况下,如果客户端失去连接,新服务器的整个页面状态都将是未知的。(您需要自定义方法来使用localStoragesessionStorage保持状态,并在建立新的connection).

之后将其映射到新的服务器

通过使用Blazor,你几乎可以使用C#作为后端和前端来做任何事情,并且最需要使用JS。尽管可以从C#代码调用JS函数(使用JSIntrop),甚至可以从JS调用C#函数。

我希望这篇简短的解释能有所帮助。这只是对.NetCore WebApplication和Blazor的简短介绍。开发人员在选择合适的方法来构建web应用程序时,应该注意很多方面。

票数 3
EN

Stack Overflow用户

发布于 2020-04-11 03:00:09

Blazor server应用程序在客户端运行JavaScript,所有交互都通过SignalR在客户端和服务器之间来回传递。

Web应用程序模板设置一个Razor Pages项目。虽然它们都使用Razor作为模板引擎来生成HTML,但Razor Pages项目更类似于MVC,但没有控制器。客户端和服务器端之间的通信基于传统的HTTP请求。客户端与服务器之间的通信是基于表单posts完成的,服务器将仅使用从视图呈现的HTML进行响应。如果您需要客户端的交互性,则需要使用JavaScript来实现。

票数 2
EN

Stack Overflow用户

发布于 2021-04-03 13:21:19

我看过一篇文章,它很容易地描述了这两个之间的区别和他们的利弊。

Blazor WebAssembly托管模式的优势:

  • Blazor WebAssembly应用程序可以完全在客户端计算机上运行。因此,下载应用程序后,不需要连接到服务器。这意味着您的服务器不需要全天候正常运行。
  • 工作从服务器卸载到客户端。使用的是客户端资源和功能。
  • 我们不需要成熟的ASP.NET核心We服务器来托管应用程序。我们只需要一个服务器,它可以将应用程序交付到客户端浏览器。这意味着我们可以将应用程序托管在我们自己的服务器上,在互联网上的某个地方,在云中,在Azure上作为静态网站,甚至在CDN内容分发网络上。

Blazor WebAssembly托管的缺点:

  • 第一个请求通常需要更长的时间,因为整个应用程序、它的依赖项和.NET运行时都必须下载到客户端浏览器。请记住,这只是第一个请求花费的时间比平时长。如果同一客户端稍后访问该应用程序,则该应用程序通常启动得更快,因为浏览器缓存了文件。
  • 由于应用程序完全在客户端浏览器上运行,因此根据应用程序的性质,它仅限于browser.
  • Depending的功能,因此需要功能强大的客户端硬件和软件。例如,从软件的角度来看,至少需要一个支持WebAssembly的浏览器。

Blazor服务器托管模式的优势:

  • 应用程序加载速度更快由于下载大小比Blazor WebAssembly应用程序小得多由于该应用程序在服务器上运行,它可以充分利用服务器功能,包括使用任何与.NET核心兼容的API。
  • 使用该应用程序所需的所有客户端都是浏览器。即使是不支持WebAssembly的浏览器也可以使用。
  • 更加安全,因为应用程序的.NET/C#代码不会提供给客户端。

Blazor服务器托管的缺点:

  • 需要一个成熟的ASP.NET核心服务器来托管应用程序。无服务器部署方案是不可能的,例如从CDN为应用程序提供服务。

  • 始终需要到服务器的活动连接。这意味着需要保持服务器全天候正常运行。如果服务器关闭,应用程序将停止工作。由于每个用户交互都涉及到服务器的往返,因此与Blazor WebAssembly主机相比,通常存在更高的延迟。

  • 的可伸缩性可能具有挑战性,特别是对于拥有许多用户的应用程序,因为服务器必须管理多个客户端连接并处理客户端状态。然而,我们可以通过使用带有Blazor Server应用的Azure SignalR服务来克服这个可伸缩性问题。该服务通过支持大量并发SignalR connections.

,使Blazor Server应用程序能够很好地扩展

参考: https://www.pragimtech.com/blog/blazor/blazor-hosting-models/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61142736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档