Signalr Blazor应用程序的哪个托管模型具有与远程SQL Server对话的动态UI?
如果您想移植一个“遗留”ASP.NET应用程序,该应用程序通过Signalr Blazor应用程序的哪个托管模型具有与远程SQL Server对话的动态UI?,signalr,webassembly,blazor,asp.net-core-signalr,blazor-server-side,Signalr,Webassembly,Blazor,Asp.net Core Signalr,Blazor Server Side,如果您想移植一个“遗留”ASP.NET应用程序,该应用程序通过System.data.SqlCient方法从远程SQL Server实例获取数据,该方法运行在HttpHandler的代码后面(从服务器返回的数据被jsonified并注入UI小部件,例如kendoUI),什么是合适的Blazor托管模型 Blazor server-side Blazor ASP.NET Core Hosted Blazor client-side 从Visual Studio 2019 Pre
System.data.SqlCient
方法从远程SQL Server实例获取数据,该方法运行在HttpHandler
的代码后面(从服务器返回的数据被jsonified并注入UI小部件,例如kendoUI),什么是合适的Blazor托管模型
Blazor server-side
Blazor ASP.NET Core Hosted
Blazor client-side
从Visual Studio 2019 Preview提供的Blazor(服务器端)
的描述来看:
。。。此模板可用于具有丰富动态用户界面的web应用程序
Blazor(服务器端)
似乎是正确的选择
但是signar
是否提供了一种使用Blazor(ASP.NET核心托管)
的方法?VisualStudio说这种托管模型“运行在WebAssembly上,托管在ASP.NET核心服务器上”,但我不确定这到底意味着什么。WebAssembly在哪里运行?客户服务器?两个地方
可以使用signar
和Blazor(ASP.NET核心托管)
模型来创建从服务器端WebAssembly
到客户端WebAssembly
的管道,从而消除对HttpHandler
的需求吗
StackOverflow上对Signal的描述表明,它的功能几乎是神奇的:
ASP.NET信号器。。。使向应用程序中添加实时web功能变得非常简单……让服务器端代码实时将内容推送到连接的客户端。[我的重点]
暂时忽略与问题无关的“实时”短语,是否可以使用相同的管道将任何(较小的)数据集推送到“连接的客户端”?顺便说一句,这是一个遗留的“intranet”应用程序,只有几十个用户。一个“问题”就有太多问题了 问题:但SignalR是否为您提供了一种使用Blazor(ASP.NETCore托管)的方法 答:换句话说,您的问题是SingleR是否可以从客户端Blazor使用,对吗?答案是肯定的 问题:Visual Studio说此托管模型“运行在WebAssembly上,托管在ASP.NET核心服务器上”,但我不确定这到底是什么意思。WebAssembly运行在哪里?客户端?服务器?两个位置 答:客户端Blazor在客户端浏览器上执行。Blazor客户端由编译到WebAssembly的mono运行时执行。WebAssembly不能在服务器上运行。它设计为与JavaScript一起在web上运行。Blazor客户端托管在服务器上,是Asp.Net核心项目 问题:signar能否与Blazor(ASP.NET Core hosted)模型一起用于创建从服务器端WebAssembly到客户端WebAssembly的管道,从而消除对HttpHandler的需求 答:没有这样的服务器端WebAssembly。您可以使用Web Api来启用Blazor客户端和服务器之间的通信。在这种情况下,您必须使用HttpClient服务。 注意:您也可以使用SignleR进行此类实时通信 什么是HttpHandler?web Api控制器是HttpHandler…此类控制器中的操作(路由端点)是HttpHandler…名称并不重要。问题是您希望解决什么问题 在我看来,您最好使用服务器端Blazor创建应用程序,在这种情况下,您可以使用HttpClient服务,或者根本不使用HttpClient,而是定义一个将数据推送到浏览器的服务,毕竟,您的代码在服务器上执行,数据通过SignleR推送到浏览器 更新:
问题:@Isaac:感谢您解答这个问题:)我的基本问题是,在Blazor web应用程序中,服务器端代码是否(不知何故)是能够直接更新UI组件,可能是通过信号器上的某种RPC机制,这将消除向客户端公开路由端点的需要,并消除Ajax。我认为WASM也可以运行服务器端。就客户端数量而言,我考虑的是intranet应用程序,而不是internet应用程序(相对较少) 回答:在浏览器中用输入[type=text]和按钮控件“Click me”(单击我)变出一个页面。同样,此页正在浏览器中运行。它可能是客户端Blazor,但也可能是服务器端Blazor。我知道这个秘密,我要告诉你。我们亲爱的应用程序是Blazor服务器端。现在在输入框中输入一个值并点击“单击我”按钮。单击按钮后,SignleR立即传递您输入的数据以及事件类型等每个细节。简而言之,事件在服务器上执行。没有Ajax,就你而言。。。SignleR的工作方式在这里并不重要。要理解代码是在服务器上执行的,而不是在客户机上执行的,使用客户端Blazor(WebAssembly)时就会发生这种情况,这一点至关重要 如上所述,您的代码是在服务器上执行的,因此您不必向客户机公开路由端点。您只需在应用程序中定义一个服务,将其注入DI容器,并使用它调用对其执行有趣操作的方法 新更新:
问题:谢谢。如果用户的按钮单击将文本框中的文本发送到服务器,服务器使用文本值作为搜索词进行数据库查询,然后服务器需要将数据集发送回客户端以填充网格,该怎么办?服务器是否(远程)调用客户端方法并将数据作为参数提供给客户端方法 从你的问题中不清楚你所涉及的是哪种执行方式。然而,这里描述的执行流程可能与客户端Bl和客户端Bl都相关