Elsa Studio Blazor Server 搭建
引言
在上一章节中,我们学习了如何在 Blazor Webassembly
项目中设置 Elsa Studio
。
本章节中,我们将创建相同的应用程序,但这次采用 Blazor Server
实现。
何时使用 Blazor Server?
尽管 Blazor Webassembly
应用是开始使用 Elsa Studio
的绝佳方式,但在编写需要调试的自定义扩展时可能具有挑战性。
当使用 Blazor Server
运行应用时,调试会变得更加简单。
设置步骤
为了设置 Elsa Studio
,我们将通过以下步骤进行:
- 创建一个新的
Blazor Server
应用。 - 添加
Elsa Studio
包。 - 修改
Program.cs
文件。 - 移除多余的文件。
- 更新
appsettings.json
文件。 - 更新
Pages/_Host.cshtml
文件。
让我们详细探讨每个步骤:
1. 创建新的 Blazor Server 应用
使用以下命令生成一个新的 Blazor Server
应用程序来启动你的项目:
dotnet new blazorserver-empty -n "ElsaStudioBlazorServer" -f net7.0
2. 添加 Elsa Studio 包
导航到项目的根目录,并集成以下 Elsa Studio
包:
cd ElsaStudioBlazorServer
dotnet add package Elsa.Studio
dotnet add package Elsa.Studio.Core.BlazorServer
dotnet add package Elsa.Studio.Login.BlazorServer
dotnet add package Elsa.Api.Client
3. 修改 Program.cs
打开 Program.cs
文件并用下面提供的代码替换其现有内容:
Program.cs
using Elsa.Studio.Core.BlazorServer.Extensions;
using Elsa.Studio.Dashboard.Extensions;
using Elsa.Studio.Extensions;
using Elsa.Studio.Login.BlazorServer.Extensions;
using Elsa.Studio.Login.HttpMessageHandlers;
using Elsa.Studio.Shell.Extensions;
using Elsa.Studio.Workflows.Extensions;
using Elsa.Studio.Workflows.Designer.Extensions;
// 构建主机。
var builder = WebApplication.CreateBuilder(args);
var configuration = builder.Configuration;
// 注册Razor服务。
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor(options =>
{
// 注册根组件。
options.RootComponents.RegisterCustomElsaStudioElements();
});
// 注册壳服务和模块。
builder.Services.AddCore();
builder.Services.AddShell(options => configuration.GetSection("Shell").Bind(options));
builder.Services.AddRemoteBackend(
elsaClient => elsaClient.AuthenticationHandler = typeof(AuthenticatingApiHttpMessageHandler),
options => configuration.GetSection("Backend").Bind(options));
builder.Services.AddLoginModule();
builder.Services.AddDashboardModule();
builder.Services.AddWorkflowsModule();
// 配置SignalR。
builder.Services.AddSignalR(options =>
{
// 设置MaximumReceiveMessageSize以处理大型工作流。
options.MaximumReceiveMessageSize = 5 * 1024 * 1000; // 5MB
});
// 构建应用。
var app = builder.Build();
// 配置HTTP请求管道。
if (!app.Environment.IsDevelopment())
{
app.UseResponseCompression();
// 默认的HSTS值是30天。对于生产环境,你可能需要更改这个设置,详情请见 https://aka.ms/aspnetcore-hsts。
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapBlazorHub();
app.MapFallbackToPage("/_Host");
// 运行应用。
app.Run();
4. 移除不必要的文件
为了获得更干净的项目结构,请删除以下目录和文件:
wwwroot/css
Pages/Index.razor
App.razor
MainLayout.razor
5. 更新 appsettings.json
更新 appsettings.json
文件,添加以下内容:
{
"Backend": {
"Url": "https://localhost:5001/elsa/api"
}
}
6. 更新 _Host.cshtml
最后,打开 Pages/_Host.cshtml
文件,并将其内容替换为下面展示的代码:
_Host.cshtml
@page "/"
@using Elsa.Studio.Shell
@using Microsoft.AspNetCore.Components.Web
@namespace ElsaStudioBlazorServer.Pages
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<base href="~/" />
<link rel="apple-touch-icon" sizes="180x180" href="_content/Elsa.Studio.Shell/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="_content/Elsa.Studio.Shell/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="_content/Elsa.Studio.Shell/favicon-16x16.png">
<link rel="manifest" href="_content/Elsa.Studio.Shell/site.webmanifest">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Ubuntu:wght@300;400;500;700&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Grandstander:wght@100&display=swap" rel="stylesheet">
<link href="_content/MudBlazor/MudBlazor.min.css" rel="stylesheet"/>
<link href="_content/CodeBeam.MudBlazor.Extensions/MudExtensions.min.css" rel="stylesheet"/>
<link href="_content/Radzen.Blazor/css/material-base.css" rel="stylesheet">
<link href="_content/Elsa.Studio.Shell/css/shell.css" rel="stylesheet">
<link href="Elsa.Studio.Host.Server.styles.css" rel="stylesheet">
<component type="typeof(HeadOutlet)" render-mode="ServerPrerendered"/>
</head>
<body>
<component type="typeof(App)" render-mode="ServerPrerendered" />
<div id="blazor-error-ui">
<environment include="Staging,Production">
发生错误。此应用可能不再响应,直到重新加载。
</environment>
<environment include="Development">
发生了一个未处理的异常。请查看浏览器开发者工具获取详细信息。
</environment>
[重新加载](/docs/zh-Hans/elsa-workflow-docs/latest/Installation/)
<a class="dismiss">🗙</a>
</div>
<script src="_content/BlazorMonaco/jsInterop.js"></script>
<script src="_content/BlazorMonaco/lib/monaco-editor/min/vs/loader.js"></script>
<script src="_content/BlazorMonaco/lib/monaco-editor/min/vs/editor/editor.main.js"></script>
<script src="_content/MudBlazor/MudBlazor.min.js"></script>
<script src="_content/CodeBeam.MudBlazor.Extensions/MudExtensions.min.js"></script>
<script src="_content/Radzen.Blazor/Radzen.Blazor.js"></script>
<script src="_framework/blazor.server.js"></script>
</body>
</html>
启动应用程序
要查看您的应用程序实际运行效果,请执行以下命令:
dotnet run --urls "https://localhost:7001"
现在,您的应用程序应该可以在 https://localhost:7001 访问了。默认情况下,您可以使用以下凭据登录:
用户名: admin 密码: password
源代码
本章节的源代码可在此处找到:点击这里
接下来是什么?
在接下来的章节中,我们将探索 Elsa Studio
应用程序的自定义可能性。敬请期待!