翻譯|使用教程|編輯:龔雪|2025-06-05 10:50:12.043|閱讀 95 次
概述:本文將為大家介紹DevExpress XAF將.NET Aspire集成到Blazor項目中后如何實現數據庫依賴,歡迎下載最新版組件體驗!
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
DevExpress XAF是一款強大的現代應用程序框架,允許同時開發ASP.NET和WinForms。DevExpress XAF采用模塊化設計,開發人員可以選擇內建模塊,也可以自行創建,從而以更快的速度和比開發人員當前更強有力的方式創建應用程序。
.NET Aspire是一組工具、模板和包,用于構建可觀察的、可生產的應用程序。DevExpress XAF團隊花費了一些時間考慮Aspire的功能,試圖找到最好的集成點,讓XAF開發人員能夠利用Aspire開箱即用的業務流程特性。
DevExpress技術交流群11:749942875 歡迎一起進群討論
在最近的一篇文章中我們介紹了如何對一個 XAF Blazor 項目進行調整,來支持 .NET Aspire()。通過對啟動邏輯進行一些修改——包括標準的 XAF 項目模板和 Aspire 的 Visual Studio 向導生成的代碼,已經可以讓 XAF Blazor 項目作為 Aspire 編排體系的一部分運行了。但那只是最小規模的編排,只有一個模塊!接下來我們將會把部署方面的內容留到第三篇(敬請關注!),接下來得系列文章將介紹在示例項目中為實現以下三個場景所做的修改:
完整示例項目已托管在這個中。下面基于我在第一篇文章中描述的項目初始狀態,展開說明新的功能實現。
在上文中(),我們為大家介紹了如何利用 OpenTelemetry 支持自定義指標與活動日志,本文將繼續介紹如何將SQL Server添加為容器依賴項,歡迎繼續關注我們~
Aspire最大的優點之一是它可以為您處理應用程序系統的基礎設施依賴關系。現在有許多NuGet包,通常以Aspire.Hosting.開頭命名,它提供了與特定體系結構組件接口的封裝器。其中一個這樣的組件是SQL Server,Aspire.Hosting.SqlServer包使其可用。
注意,NuGet包引用需要添加到項目XafAspire.AppHost中,因為SQL Server實例將在這里配置。
第二個注意事項:要將容器作為Aspire業務流程的一部分運行,您需要安裝容器運行時。如果您需要這一步的幫助,請查看。
要聲明業務流程需要一個SQL Server組件,并且它是Blazor服務器進程的依賴,您只需要在文件XafAspireDemo.AppHost/Program.cs中添加幾行代碼:
var builder = DistributedApplication.CreateBuilder(args); --> var sql = builder.AddSqlServer("sql") --> .WithLifetime(ContainerLifetime.Persistent); --> var db = sql.AddDatabase("XafAspireDemoDb"); builder .AddProject<Projects.XafAspireDemo_Blazor_Server>("xafaspiredemo-blazor-server") .WithHttpsEndpoint() --> .WithReference(db) --> .WaitFor(db); builder.Build().Run();
首先,對AddSqlServer的調用為您的應用程序系統建立業務流程的組件。調用WithLifetime(ContainerLifetime.Persistent)在開發中通常很有用,因為容器將隨著應用程序系統的每次運行而啟動和停止,這將導致任何測試數據的丟失。使用Persistent參數,當應用程序系統的其余部分停止時,容器仍在運行,這加快了下一次運行的速度并保留了數據。
演示數據庫的數據庫引用被傳遞給Blazor Server項目,WaitFor調用確保在Blazor Server應用程序嘗試訪問數據庫之前,數據庫已準備好進行操作。
這種與SQL Server一起工作的方法不需要您了解任何關于連接字符串和其他特定細節,這是非常方便的!
當然,我們現在需要弄清楚Blazor服務器應用程序是如何連接到新的依賴項的。Aspire有一些自動處理,可以發現如何與SQL Server的容器聯系,并且在環境變量中自動提供連接字符串。該變量的名稱的構造類似于重載配置文件內容的環境變量,并且它在設置中合并了數據庫的名稱。對于上面的代碼,環境變量名是ConnectionStrings__XafAspireDemoDb。
通過在當前點運行應用程序,記住到新容器化數據庫的連接尚未被使用,您可以看到SQL Server容器已經啟動(例如在Docker Desktop中),并且儀表板正確顯示了新的依賴項,帶有連接字符串的環境變量也可以在儀表板中看到。
連接字符串包括一個本地端口號,由Aspire提供的代理服務提供,數據庫用戶sa的密碼由Aspire適配器自動生成。
現在缺少一個允許Blazor Server應用程序使用容器化SQL Server的更改,編輯文件XafAspireDemo.Blazor.Server/Startup.cs,并在ConfigureServices方法中找到分配connectionString的塊。在默認的XAF模板中,代碼通過調用Configuration.GetConnectionString加載連接字符串,將此代碼替換為對環境變量的簡單求值:
//options.UseInMemoryDatabase("InMemory"); // The environment variable is published by the Aspire Host --> string connectionString = --> Environment.GetEnvironmentVariable("ConnectionStrings__XafAspireDemoDb"); #if EASYTEST if ( Configuration.GetConnectionString("EasyTestConnectionString")
現在您可以再次運行應用程序,容器中的SQL Server將被使用,替代之前使用的任何其他實例。
將項目設置為使用基礎設施容器的一個重要細節是,其他開發人員可以輕松地在他們的機器上執行項目,而無需準備環境。例如,此時我能夠在自己的Mac上運行完整的演示解決方案!在這方面,我想提兩個細節。
首先,我只是在Mac上使用dotnet run --project XafAspireDemo.AppHost,當試圖在儀表板中執行任何操作時,就會出現大量的警告和錯誤。事實證明,發生這種情況是因為沒有明確信任.NET生成的開發時HTTPS證書。這通常不是什么大問題,它只是偶爾會導致警告,但Aspire Dashboard似乎在更大程度上依賴于這些證書來進行gRPC連接。
您可以在中閱讀有關在ASP.NET Core中使用HTTPS的所有內容,簡單的命令dotnet dev-certs https --trust可以建立必要的信任,并消除gRPC連接問題。
其次,在沒有附加調試器的情況下運行時,XAF的標準操作在自動數據庫模式更新和更新程序執行方面發生了變化。在生產部署中,您可以按照這里的XAF文檔中的描述來處理這個問題,但是出于開發目的,我決定擴展自動更新機制,以涵蓋正在使用的Aspire場景。
我們編輯了文件XafAspireDemo.Blazor.Server/BlazorApplication.cs,其中包含一行,用于檢查環境是否有附加的調試器—如果找到了,則執行自動更新。我們拓展了這一行,來接受一個環境變量作為替代:
--> if(Environment.GetEnvironmentVariable("ASPIRE_DEBUG") != null || System.Diagnostics.Debugger.IsAttached) { e.Updater.Update(); e.Handled = true; } 現在修改了XafAspireDemo.AppHost/Program.cs中的Aspire主機啟動邏輯,以便在啟動時設置這個變量: builder .AddProject<Projects.XafAspireDemo_Blazor_Server>("xafaspiredemo-blazor-server") --> .WithEnvironment("ASPIRE_DEBUG", "true") .WithHttpsEndpoint() .WithReference(db) .WaitFor(db);
有了這些改變,演示解決方案現在可以在Mac上完美運行了!
未完待續,我們下期再見!更多產品資訊及授權,歡迎來電咨詢:023-68661681
慧都是?家?業數字化解決?案公司,專注于軟件、?油與?業領域,以深?的業務理解和?業經驗,幫助企業實現智能化轉型與持續競爭優勢。
慧都科技是DevExpress的中國區的合作伙伴,DevExpress作為用戶界面領域的優秀產品,幫助企業高效構建權限管理、數據可視化(如網格/圖表/儀表盤)、跨平臺系統(WinForms/ASP.NET/.NET MAUI)及行業定制解決方案,加速開發并強化交互體驗。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網