单个Blazor项目可以同时包含WebAssembly部件和服务器端部件吗? [英] Can a single Blazor project contains both WebAssembly part and server-side part?

查看:22
本文介绍了单个Blazor项目可以同时包含WebAssembly部件和服务器端部件吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

现在Blazor WebAssembly正式发布了,我尝试了一下,使用该模板创建了我的第一个Blazor wasm项目,但很快就注意到有一件事与我预期的完全不同。模板中似乎没有"服务器"部分,发布的结果只包含静电资源(包括所有的.dll文件)。自然,我想知道如何才能访问我的在线数据库?允许客户端直接访问我的数据库听起来是个糟糕的主意(如果可以做到的话),因为我必须在客户端代码中的某个地方包含连接字符串……绝对不行!

在Google上快速搜索后,似乎每个人都在使用另一台服务器使用API提供数据。好的,很好,但是如果我可以把我的服务器部分包含在同一个项目中,并且也使用WebSocket(就像Blazor服务器中的一样)而不是API与我的客户端通信,那不是更好吗?这可能吗?

推荐答案

您可以创建WebAsisily Blazor托管的应用程序。如果使用Visual Studio创建项目,则应选中"托管"复选框。这将为您创建3个项目。一个用于WebAsimly Blazor App(客户端文件夹),第二个用于托管和服务客户端Blazor应用程序(Server文件夹),第三个(共享文件夹)用于两个项目之间的共享对象,例如数据库模型。

Server应用程序还包含控制器类,用于演示如何从客户端Blazor调用Web Api端点到服务器(Web Api)。您可以创建专用的Web Api以启用对数据库数据的访问。

注意:由于Blazor客户端应用程序在浏览器上运行,因此您不能直接访问数据库。您应该使用对Web Api终结点的HTTP调用,这些方法的操作可以直接从数据库检索数据(不推荐),也可以通过创建数据库访问服务或存储库间接检索数据。

更新: 客户端和服务器端(或者更准确地说,Web API端点)之间的主要传输方式是Fetch Api;也就是说,您需要执行对Web Api的HTTP调用。但是,您可以在客户端应用程序(客户端SignalR)中使用SignalR。See sample here:

这篇关于单个Blazor项目可以同时包含WebAssembly部件和服务器端部件吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆