@code中的代码在blazor服务器端的何处运行?

@code中的代码在blazor服务器端的何处运行?,blazor,blazor-server-side,Blazor,Blazor Server Side,这可能是个愚蠢的问题。但我一直想读更多关于Blazor的书,但我总是对@code感到困惑。据我所知,当您在客户端blazor中使用@code时,所有内容都在客户端浏览器上本地运行。 因此,我有几个问题: 使用blazor服务器端时,@code块中的代码是在服务器上运行还是在客户端上运行 在blazor中,@code块中的代码本质上转换成JS了吗 是否可以在服务器端blazor应用程序的客户端本地运行C#代码?我需要它的一个例子是:一个用户在线协同编辑文档的应用程序(比如谷歌文档)。我想检测服务器

这可能是个愚蠢的问题。但我一直想读更多关于Blazor的书,但我总是对
@code
感到困惑。据我所知,当您在客户端blazor中使用
@code
时,所有内容都在客户端浏览器上本地运行。 因此,我有几个问题:

  • 使用blazor服务器端时,
    @code
    块中的代码是在服务器上运行还是在客户端上运行
  • 在blazor中,
    @code
    块中的代码本质上转换成JS了吗
  • 是否可以在服务器端blazor应用程序的客户端本地运行C#代码?我需要它的一个例子是:一个用户在线协同编辑文档的应用程序(比如谷歌文档)。我想检测服务器上的更改,并告诉每个使用该文档的客户机接受新的更改

  • Blazor服务器应用程序和Blazor WebAssembly应用程序中都使用@code块来分隔组件的视图(混合C#+Html标记)部分及其代码部分。这两部分都被编译成一个ComponentBase类

    使用blazor服务器端时,@code块中的代码是在服务器上运行还是在客户端上运行

    您的Blazor服务器应用程序仅在服务器上运行。它发出Html差异,通过信号器连接传递给客户端浏览器,客户端信号器代码(JavaScript)使用传递给它的Html差异更新DOM元素

    请注意,与Blazor服务器应用程序的客户端(浏览器)的每次交互都是在服务器上执行的。因此,如果单击某个按钮,则附加到该按钮的单击事件的事件处理程序将在服务器上执行

    @code块中的代码在blazor中是否本质上转换为JS

    不,它是用C#编写的代码,并且一直如此。如果您的应用程序位于Blazor服务器应用程序中,它将再次在服务器上执行。如果它在Blazor WebAssembly应用程序中,则会在浏览器的C#、.Net程序集中执行。它甚至没有编译成wasm。它是浏览器上的.Net。但是,执行这些.Net程序集的mono运行时被编译为WebAssembly

    是否可以在服务器端blazor应用程序的客户端本地运行C#代码

    从我上面写的来看,很明显情况并非如此。同样,Blazor服务器应用程序在服务器上执行。您的用例不是一个问题,可以很容易地解决


    希望这有帮助……

    这很有帮助。非常感谢您的澄清。