当前您所在的位置:首页>科学计算 数据统计分析

TMS--StellarDS SDK for .NET

将我们的网络 .NET SDK 集成到 WPF 数据网格中

上周刚刚推出的 StellarDS SDK for .NET 提供了一种强大且结构化的方式来与基于云的数据进行交互。此 SDK 旨在简化开发和优化 API 交互,它提供强类型、直观的设计和无缝集成 - 让您轻松使用 StellarDS。作为一种快速且可扩展的后端即服务 (BaaS) 解决方案,StellarDS.io 可处理存储、安全性和可扩展性,因此您可以专注于构建出色的应用程序,而无需担心后端复杂性。通过其强大的 REST API,开发人员可以高效地检索和操作数据,同时确保流畅的性能。

演示

由于此演示包含大量源代码,我们不会详细介绍每一行。相反,我们提供了完整的源代码,您可以在此处下载,它是 Github 存储库的一部分。

在这篇博文中,我们将重点介绍应用程序的核心功能——它如何工作以及如何集成 StellarDS .Net SDK。我们将跳过 UI 设计方面和其他细节,将重点放在关键的实施步骤上。

创建我们的应用程序

首先,打开 Visual Studio 并使用 .NET 9 创建一个新的 WPF 应用程序。

创建项目后,我们需要安装所需的依赖项。我们的应用程序与 StellarDS.io 交互并需要某些库。在 Visual Studio 中打开 NuGet 包管理器 并安装以下内容:

1. StellarDS SDK → StellarDs.SDK

2. WebView2 → Microsoft.Web.WebView2

3. 依赖注入 → Microsoft.Extensions.DependencyInjection

这些包将允许我们与 StellarDS API 交互,显示基于 Web 的内容(如果需要),并有效地管理依赖项。

Appsettings

为了保持 API 配置的灵活性,我们将它们存储在 appsettings.json 文件中。这使我们能够轻松更改设置而无需修改代码。

在项目的根目录中创建一个 appsettings.json 文件并添加以下内容:

"StellarDSSettings": {

        "ApiKey": "",

        "ClientId": "",

        "Secret": "",

        "ReturnURL": "http://localhost:3030",

        "AuthCodeURL": "https://stellards.io/oauth"

 

}

ApiUrl 定义了 StellarDS 的基本 URL,ApiKey 用于进行 API 调用时的身份验证。请务必将“your-api-key-here”替换为您的实际密钥。

依赖注入

设置应用程序的第一步是启用依赖注入 (DI)。通过使用 DI,我们可以将 SDK 类注册为服务,使它们在整个应用程序中都易于访问。

为了实现这一点,我们需要重写 App.xaml.cs 中的 OnStartup 方法并对其进行如下修改:

 protected override void OnStartup(StartupEventArgs e)

    {

        var builder = new ConfigurationBuilder()

            .SetBasePath(Directory.GetCurrentDirectory())

            .AddJsonFile("appsettings.json", false, true);

 

        Configuration = builder.Build();

 

        var serviceCollection = new ServiceCollection();

        ConfigureServices(serviceCollection);

        Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

        _serviceProvider = serviceCollection.BuildServiceProvider();

        var mainWindow = _serviceProvider.GetRequiredService();

        mainWindow.Show();

    }

接下来,我们需要定义 ConfigureServices 方法,在该方法中我们在 ServiceCollection 中注册所有必需的服务。这可确保我们的 API 客户端、配置设置和其他依赖项得到正确管理。您可以像这样添加该方法:

 private void ConfigureServices(ServiceCollection serviceCollection)

    {

        serviceCollection.AddTransient();

        var config = new StellarDs.SDK.Client.Configuration();

 

        var oauthConfig = Configuration?.GetSection("StellarDSSettings").Get();

 

        if (oauthConfig == null) return;"

        config.ApiKey.Add("Authorization", oauthConfig.ApiKey);

        config.ApiKeyPrefix.Add("Authorization", "Bearer");      

        var dataApi = new DataApi(config);

        var oauthApi = new OAuthApi( new StellarDs.SDK.Client.Configuration());

           

        serviceCollection.AddSingleton(dataApi);

        serviceCollection.AddSingleton(oauthApi);

        serviceCollection.AddSingleton(oauthConfig);

 

        serviceCollection.AddSingleton();

    }

创建我们的视图

为了显示我们的客户列表,我们将使用 WPF DataGrid。DataGrid 控件提供了一种在 UI 中显示和管理表格数据的简便方法。

打开 MainWindow.xaml 并在 元素内添加以下 DataGrid:

 

                  CanUserDeleteRows="True">

加载并绑定数据

现在我们已经在表单中添加了 DataGrid,下一步是集成必要的服务,以便我们检索和管理客户数据。我们使用依赖注入 (DI) 实现这一点,确保我们的应用程序保持模块化和可维护性。

为此,请修改 MainWindow 的构造函数,如下所示:

public MainWindow(DataApi dataApi, RefreshTimer refreshTimer, OauthConfiguration oauthConfiguration)

    {

        _dataApi = dataApi;

        _refreshTimer = refreshTimer;

        _oauthConfiguration = oauthConfiguration;

 

        InitializeComponent();

    }

这可确保我们的 API 客户端、令牌刷新处理程序和 OAuth 配置在整个应用程序中都可用。

现在我们已经设置了依赖注入,让我们仔细看看如何从 StellarDS API 中检索数据并填充我们的 DataGrid。以下方法 GetData 负责获取客户数据并将其显示在 UI 中。让我们一步一步地分解。

创建获取数据的方法

要从 StellarDS 检索客户记录,我们需要一种向 API 发送请求的异步方法。在 MainWindow.xaml.cs 中,添加以下方法:

private async Task GetData(int take = 0, int offset = 0)

此方法将负责从 StellarDS 检索数据。take 和 offset 这两个参数允许我们控制分页:

· take 指定每个请求要获取多少条记录。

· offset 决定从哪里开始检索数据(加载下一页时很有用)。

通过使此方法异步,我们确保它在后台运行,而不会在等待 API 响应时冻结 UI。

接下来,在 GetData 方法内部,我们调用 StellarDS API 来检索数据:

var result = await _dataApi.GetAsync(_project, Table, offset, take);

以下是具体情况:

· _dataApi 是我们 StellarDS 的 API 客户端实例,通过依赖注入进行注入。

· _project 是我们的 StellarDS 项目 ID,它指定我们正在查询哪个数据集。

· Table 是存储客户记录的数据库表的名称。

· offset 和 take 用于分页,允许我们一次只加载一部分数据,而不是一次检索所有内容。

调用 _dataApi.GetAsync() 后,API 将返回包含以下内容的响应:

· 所请求的数据(客户记录列表)。

· 可用记录的总数。

· 成功状态,表示请求是否成功。

在继续处理数据之前,我们需要验证 API 请求是否成功。在 GetData 中添加以下检查:

if (result is not { IsSuccess: true, Data: not null }) return;

这确保了:

· API 请求成功(IsSuccess:true)。

· 返回的数据不为空(意味着我们确实收到了记录)。

如果请求失败,我们会提前退出该方法以防止出现错误。

StellarDS 返回的数据是 JSON 格式,因此我们需要先将其转换为 C# 对象,然后才能在应用程序中使用它。添加以下内容:

var source = data.Select(d => d.ToObject()).ToList();

这一行:

· 循环遍历数据中的每个 JSON 记录。

· 使用 .ToObject() 将其转换为 Customer 对象。

· 将转换后的记录存储在源中,源是客户对象的列表。

通过将 JSON 转换为强类型对象,我们可以在 C# 代码中更轻松地处理数据。

将数据绑定到 DataGrid

现在我们有了客户对象列表,我们需要在 DataGrid 中显示它们。添加以下行:

DataGrid.ItemsSource = source;

这会将源列表分配给 DataGrid 的 ItemsSource 属性,该属性会自动更新 UI 并显示客户记录。

使用 DataGrid 创建和编辑记录

为了支持 WPF DataGrid 中的内联编辑和记录创建,我们使用 RowEditEnding 事件将更新发送到 StellarDS。由于修改网格内的数据可以递归触发此事件,因此我们首先在处理编辑之前取消订阅:

dataGrid.RowEditEnding -= DataGrid_OnRowEditEnding;

dataGrid.CommitEdit();

然后,我们提取编辑后的记录,确保它是一个有效的客户对象,并在将其发送到 API 之前删除 Id 字段:

if (e.EditAction != DataGridEditAction.Commit){

    dataGrid.RowEditEnding += DataGrid_OnRowEditEnding;

    return;

}

此时,我们确定是否更新现有记录或创建新记录。每次 API 调用之前,我们都会刷新访问令牌以确保身份验证有效。

更新现有记录

如果客户已经有 ID,我们会发送 PUT 请求来更新记录:

if (e.Row.DataContext is not Customer rep){

    dataGrid.RowEditEnding += DataGrid_OnRowEditEnding;

    return;

}

var request = rep.AsDictionary();

request.Remove("Id");

创建新纪录

如果 Id 为空,则表示该记录是新的,因此我们发送 POST 请求来创建它:

else{

    _dataApi.Configuration.ApiKey["Authorization"] = await _refreshTimer.RefreshAccessToken();

    var result = await _dataApi.PostAsync(_project, Table,

        new CreateRecordRequest(new List> { request }));

 

    if (result.IsSuccess) await GetData(10, _offset);

}

最后,我们重新订阅该事件以确保处理未来的编辑:

dataGrid.RowEditEnding += DataGrid_OnRowEditEnding;

为什么要取消订阅并重新订阅?

这可以防止提交编辑时发生递归事件调用,确保每次编辑只发生一次 API 请求。它还可以使 DataGrid 保持响应而不会发生冲突。

删除记录

为了允许用户删除记录,我们首先需要在表单中添加一个删除按钮。打开您的 XAML 文件并在布局中添加以下按钮:

 

处理删除按钮点击

在 ButtonBase_OnClick 事件中,我们从 DataGrid 检索选定的记录,并向 StellarDS 的 API 发送 DELETE 请求。如果成功,我们将刷新数据以更新 UI:

private async void ButtonBase_OnClick(object sender, RoutedEventArgs e){

    var rep = (Customer)DataGrid.SelectedItem;

    await _dataApi.DeleteAsync(Guid.Parse("5f28959b-f6cd-43f1-64eb-08dcc0e23b55"), 288, (int)rep.Id);

    await GetData(10, _offset);

}

这可确保当用户选择一条记录并点击删除时,该记录会从 StellarDS DataGrid 中删除。

此演示展示了如何使用 StellarDS .NET SDK 有效地管理 StellarDS 项目中的表。我们构建了一个 WPF 应用程序,允许用户查看、创建、更新和删除表中的记录,同时集成依赖注入以获得更好的结构和可维护性。UI 使用 WPF DataGrid 构建,提供了一种熟悉且有效的数据交互方式。

到目前为止,我们已经设置了 WPF 项目,集成了 StellarDS SDK,并实现了用于管理记录的核心 CRUD 功能。在第二部分中,我们将通过实现 OAuth2 身份验证进一步实现这一点,允许用户在应用程序内安全地进行身份验证和管理他们的会话。

立即开始

StellarDS C# SDK 现已推出,其中包含示例代码和详细文档,可帮助您快速上手。探索我们的客户管理演示,深入了解 SDK 的功能,并立即开始使用 StellarDS 构建强大的应用程序。

下载 SDK 或查看文档,立即开始使用!

现在就关注我们吧!

 

北京哲想软件有限公司