最近我做了一个项目,用Angular做前端框架,用springboot做后端。现在我转到。net项目,我了解到Blazor支持两种托管模型,客户端托管模型和服务器端托管模型。现在我要用blazor启动。net项目。我已经为这个项目创建了REST API。现在我必须在那个项目中使用Blazor。我的疑问来了。
1)Blazor web组件是用于前端(还是)后端?
2)Blazor服务器应用程序是前端(或)后端?
再解释几句。
在传统的网页设计中,你有一个服务器,它使用用户浏览器不能访问的东西来组装代码:数据库搜索,专有逻辑,文件等等。这通常是用c#、PHP等来完成的。这是后端。
前端是可以在用户的浏览器中完成的东西:更改文本,收集输入,处理鼠标事件等等。这通常是用JavaScript完成的。这是因为JavaScript在浏览器上运行更安全——它不能访问你的驱动器等等。
网页是如何工作的,你收集表单信息——输入文本,设置复选框的状态,等等,然后打包所有的信息与表单提交给服务器。然后,服务器处理所有这些信息,重建整个页面,并将整个完整的页面发送回客户端的浏览器。这是一笔很大的交易。
Blazor不这样做。页面上的所有内容都可以随时单独更新,而无需来回发送大量信息。页面上的每个事件(按钮单击等)都可以作为单独的事件调用发送到服务器,您可以不返回任何更改(例如,如果您只是将一些信息保存到数据库中),也可以通过更改页面上的任何或所有内容返回。
换句话说,前端之间已经没有真正有意义的区别了:可见页面是代码当前状态的表达式,而不是每次单击按钮时重新构建的新对象。
澄清一下,这是一个非常强大的连接——你可以在输入每个字符时实时检查文本框上的内容,或者你可以在浏览20个文件上传时向用户发送更新:"处理图像1/20";等等。
WASM在客户端的浏览器中运行。如果你的代码只在浏览器上运行(不依赖于服务器),你可以使用WASM。然而,你可以把它假设为一个前端应用程序,并使用WebAPI连接到服务器。Blazor服务器是前端和后端(两者)。
简而言之,Blazor web assembly WASM:它是一个前端,你可以使用c#而不是Javascript(你仍然可以使用Javascript和调用js函数),为了调用任何函数/web API,你必须发送一个HTTP请求从你的端点获取数据。
Blazor Server是一个使用服务器资源的应用程序,用户和服务器之间的所有交互都是基于SingalR进行实时连接的。所以这意味着任何类型的请求都将在服务器端处理并响应用户(客户端浏览器),所以这意味着这种类型的应用程序将使用传统的方式(客户端-服务器应用程序),你的应用程序的所有层都在服务器端可用,你的前端将根据请求的内容动态渲染。