代码之家  ›  专栏  ›  技术社区  ›  bitshift

如果我想要一个单独的Web API,但仍然运行服务器端和以后的客户端,那么要选择哪个项目模板?

  •  0
  • bitshift  · 技术社区  · 7 年前

    当您使用Blazor创建一个ASP.NET核心项目时,这将提供一些有趣的体系结构决策。有3个不同的项目模板。
    -布拉泽
    -Blazor(托管的ASP.NET核心)
    -Blazor(ASP.NET核心中的服务器端)

    问题1
    我试图理解“blazor(ASP.NET核心中的服务器端)”模板或构建项目的方法的目的或好处。为什么.NET核心应用程序要服务于另一个.NET核心应用程序?还是我错过了什么? 考虑到这里解释的不同托管模型。
    https://blazor.net/docs/host-and-deploy/hosting-models.html
    难道这不只是一个使用服务器端Blazor而不是2的项目吗?

    问题2
    如果我正在查看如下图所示的体系结构,我是否应该从“ASP.NET核心托管”模板开始,然后将.client项目更改为使用“服务器端”框架?这样,我仍然有一个可调用的API,如果需要,可以从另一个应用程序访问它?或者我认为我仍然可以使用“服务器端”模板,它将预先设置所有启动管道,以便用服务器端托管模型启动客户端,并将其与添加我自己的API控制器到.server项目结合起来,该项目将根据图通过业务规则库调用。

    问题3
    在某种程度上,当工具/调试支持变得更好时,我可能希望将.client应用程序切换为使用Webassembly。我不认为我建议的建筑禁止这样做?我只需更改.server应用程序中的启动代码,将对blazor.server.js的引用替换为blazor.webpassembly.js和其他一些东西,我就应该是golden了。我在基地外吗?

    建筑注意事项:
    -客户端应用程序需要通过一些CRUD操作访问资源,因此它调用业务规则类库中的方法。
    -业务规则库引用的类库包含表示各种域模型的“哑”POCO类。调用API
    -然后,api controller/action调用一个管理实体框架dbContext的数据库或存储库,以获取/更新db中的数据。
    -业务规则库、数据库和API都引用了“模型”库。

    enter image description here

    2 回复  |  直到 7 年前
        1
  •  2
  •   eVolve    7 年前

    问题1: 服务器端渲染有许多好处,包括:

    1. 由于用户界面更新是通过信号器连接处理的,因此我们可以 避免不必要的页面刷新。
    2. 应用程序下载大小较小,初始应用程序加载速度更快。 Blazor组件可以充分利用服务器功能 例如使用.NET核心兼容API。
    3. 它还将支持现有的.NET工具,如调试 应用程序和JIT编译。
    4. 因为服务器端Blazor在本机.NET核心进程下运行,并且 不在Mono Webassembly下,它也在 没有Web程序集支持。

    是的,你可以有一个服务器端的应用程序来访问数据库,而不需要API。这反过来会限制你的应用到服务器端呈现,除非你重构。

    问题2: 是的,我相信只要您编写代码来支持客户机功能,就可以了。例如,从应用程序到API的HTTP请求。

    问题3: 是的,您是正确的,代码中有一些小的更改,您将能够同时支持服务器端和客户端。我想问的一件事是,您如何在客户机上编写代码,即如果要使用标准.NET库,客户机可能不完全支持它们。此外,如果您首先使用服务器端应用程序,并使用服务来调用以获取数据,例如访问数据库上下文,那么在切换到Web客户端配置时,您很可能需要发出HTTP Web请求。

    有关体验切换的其他信息,请参见: Link

        2
  •  0
  •   Henry Rodriguez    7 年前

    也许这个 Blazor Template 可以帮助你实现你想要的

    我想要一个单独的Web API,但仍然运行服务器端,稍后运行到客户端?

    Blazor模板 (作者在此)

    是用于创建Blazor的Visual Studio 2019预览3项目模板 v0.8.0解决方案,可以在客户端或服务器端托管, 这背后的想法是有一个方便的实现,允许 很容易从托管模型更改。

    所以基本上在相同的解决方案中,你会有:

    • Web API(托管ASP.NET核心)
    • 服务器端(带有信号器和调试的Razor组件)
    • 客户端(SPA+Webassembly)

    这样,在开发期间,您可以选择并运行服务器端项目,以便具有完整的C调试功能,稍后,选择客户端项目并将其发布为一个独立的SPA,在Webassembly上运行,而无需接触任何一行代码。

    更重要的是,在服务器端模式下运行时,不仅可以使用带有信号器和调试功能的Razor组件,还可以使用Web API控制器,因此您可以模拟应用程序在生产中的实际行为。

    希望这有帮助