Blazor .NET 9 Auto渲染模式下无Shared项目的数据交互疑问
.NET 9 Blazor Auto模式(Server+Wasm)相关问题解答
为什么默认没有Shared项目?
.NET 9对Blazor Auto模式的项目结构做了简化,官方把Layout、Pages这类通用UI组件直接放在Client项目中,让整体结构更轻量化。因为Auto模式下,Client项目本身既要承载Wasm运行时的前端逻辑,也要兼容Server端初始渲染的UI复用,所以不需要额外的Shared项目来存放UI相关内容。
客户端能否直接操作共享数据库?
不行。Wasm运行在浏览器沙箱环境中,无法直接访问外部数据库(既存在网络权限限制,也有严重的安全风险,比如暴露数据库连接字符串)。所以与共享数据库交互必须通过Server端的中转:
- 在Server项目中编写
DataService封装数据库操作逻辑 - 或者创建API控制器/最小API,提供数据接口供Client调用
- Client端通过
HttpClient请求这些接口来获取或提交数据
是否需要创建Shared项目共享数据层类?
取决于你的项目复杂度:
- 如果存在需要在Server和Client之间共享的代码(比如数据传输对象DTO、业务枚举、通用校验工具等),建议创建单独的Shared类库项目,同时被Server和Client项目引用,避免重复编码,保证类型一致性。
- 如果是简单场景,仅少量模型需要共享,也可以把模型类放在Server项目中,Client通过API接收序列化后的对象,但这种方式不利于代码维护,长期来看还是Shared项目更规范。
内容的提问来源于stack exchange,提问作者Luca C.
相关产品推荐
相关产品推荐

