Microsoft 365 データ(メール、カレンダー、連絡先、タスクなど)を扱う際、常にすべての項目を取得する必要はありません。メールアプリケーションで特定のデータプロパティをフィルタリング、ソート、取得できることも便利です。たとえば、送信者でメッセージをフィルタリングしたり、日付でカレンダーイベントをソートしたり、少数のフィールドだけを取得したりすることで、アプリのパフォーマンスを保つことができます。

それが OData クエリの出番です。Microsoft Graph は OData をサポートし、開発者がサーバー上で直接データをフィルタリング、ソート、選択できるようにし、アプリに送信される前に処理できます。その結果、パフォーマンスが向上し、ペイロードが小さくなり、アプリケーションの応答性が高まります。

Aspose.Email for .NET は、このプロセスを簡単にします。その [ODataQueryBuilder][2] クラスを使用して。本記事では、その動作と、C# で動的かつ強力な Microsoft Graph クエリを構築する方法を探ります。

OData クエリを使用する理由は?

Microsoft Graph API は豊富な機能を提供しますが、クエリを手動で構築する際は複雑になることがあります。OData パラメータを使用すると、サーバー側でのフィルタリング、ソート、ページング、プロパティ選択が可能になり、クライアント側の処理を最小限に抑えることができます。このアプローチにより、データ転送が削減され、応答時間が短縮されるため、アプリケーションがより高速かつスケーラブルになります。

OData のサポートにより、今すぐ以下が可能です:

  • カスタム条件を使用してメッセージ、連絡先、またはイベントをフィルタリングします。
  • OrderBy を使用してデータを昇順または降順にソートします。
  • 必要なプロパティだけを選択してペイロードサイズを最小化します。
  • 大規模なメールボックスに最適な TopSkip を使用してページングを実装します。
  • Expand を使用して関連エンティティ(例:添付ファイル)を展開します。
  • データセットをカウントおよび検索して、アクセスを高速化します。

これらの機能は、新しい [ODataQueryBuilder][2] クラスを介してアクセスでき、型安全です。

C#でMicrosoft Graphクエリを構築するための.NETコンポーネント

Aspose.Email for .NET は、メール処理のための強力な API で、開発者が C# で Microsoft 365、Exchange、Outlook データに直接アクセスできるようにします。MSG、EML、PST、MBOX などの一般的なメール形式の読み書きをサポートし、Microsoft Graph API を含むさまざまなプロトコルやサービスと統合します。

組み込みの [ODataQueryBuilder][2] を使用すると、C# で動的かつ型安全な OData クエリを構築できます。これにより、複雑なクエリ文字列を手動で記述することなく、メールボックスの特定データ(メッセージ、連絡先、またはカレンダー イベント)を簡単にフィルタリング、ソート、取得できます。

Microsoft Graph サーバーにクエリ ロジックをオフロードすることで、Aspose.Email for .NET は開発者が Microsoft 365 データとやり取りする、より高速で、より効率的かつスケーラブルなアプリケーションを作成するのに役立ちます。

始めるには、.NET プロジェクトに Aspose.Email NuGet パッケージをインストールします:

Install-Package Aspose.Email

このパッケージには、必要なすべてのクラスが含まれており、あなたのニーズを満たします。

ODataQueryBuilder クラスの紹介

[Aspose.Email.Clients.Graph.ODataQueryBuilder][2] クラスは、Graph クエリの記述を簡素化するために作成されています。以下のような複数の Graph クライアント メソッドと共に使用できます:

  • ListFolders
  • ListMessages
  • ListContacts
  • ListCalendarItems
  • ListAttachments
  • ListCategories
  • ListOverrides
  • ListRules
  • ListTaskLists
  • ListTasks
  • ListNotebooks

各々は、Graph リクエスト内で高度なフィルタリング、ソート、ページング、選択を行うためのオプションの ODataQueryBuilder パラメータをサポートしています。

実用例: メールボックス データのフィルタリングとソート

以下のコードサンプルは、基本的なクエリシナリオと高度なクエリシナリオの両方を示しています。フォルダーのソートと高度なメッセージフィルタリングを紹介し、順序、条件、ページング、選択されたフィールド、および関連エンティティの展開のための OData パラメータを示しています。

var accessParameters = Settings.User1;
var provider = new AzureConfidentialTokenProvider(
    accessParameters.TenantId,
    accessParameters.ClientId,
    accessParameters.ClientSecret);

var client = GraphClient.GetClient(provider, accessParameters.TenantId);
client.Resource = Aspose.Email.Clients.Graph.ResourceType.Users;
client.ResourceId = accessParameters.Username;
client.EndPoint = "https://graph.microsoft.com";

// List folders sorted by name
var builder = new ODataQueryBuilder { OrderBy = "name asc" };
var folders = client.ListFolders(builder);
foreach (var folder in folders)
    Console.WriteLine(folder.DisplayName);

// Advanced message filtering
var folderId = folders.Find(x => x.DisplayName == "Inbox").ItemId;
builder = new ODataQueryBuilder {
    Filter = "startswith(name,'A')",
    OrderBy = "name asc",
    Top = 10,
    Skip = 5,
    Select = new[] { "name", "age" },
    Expand = new[] { "children", "parents" },
    Count = true,
    Search = "\"John Doe\"",
    Format = "json"
};
var msgs = client.ListMessages(folderId, builder);
foreach (var msg in msgs)
    Console.WriteLine(msg.Subject);

実世界のシナリオ

Microsoft Graph データを .NET アプリケーションで扱う際に、[ODataQueryBuilder][2] を適用して作業を向上させる実用的なシチュエーションをいくつか考えてみましょう:

1. UI フォルダーリスト
フォルダーをアルファベット順に並べ替えて、[OrderBy][3] = "name asc" を使用し、クリーンなユーザーインターフェイスを実現します。

2. カスタムフィルタリング
特定の送信者からのメッセージや特定の件名のメッセージを見つけるには、[Filter][4] を使用します。

3. 大きなメールボックスのページング
[Top][5] と [Skip][6] を組み合わせて、巨大なメールボックスを管理しやすい結果に分割します。

4. 特定のプロパティを選択
必要なフィールドだけを [Select][7] で取得し、ペイロードを最小化し、パフォーマンスを向上させます。

5. 関連データを含める
単一のクエリで添付ファイル、カテゴリ、またはスレッドを含めるには、[Expand][8] を使用します。

OData を効果的に活用するためのヒント

  • ご使用のGraphClientResourceResourceId、およびEndPointを正確に指定していることを確認してください。
  • [AzureConfidentialTokenProvider][13]など、適切な認証プロバイダーを選択してください。
  • 最適なクエリのために[Filter][4]、[Select][7]、[OrderBy][3]、および[Top][5]を組み合わせます。
  • すべてのデータをロードせずに総アイテム数を取得するために[Count][14]を活用します。
  • 大規模データセットを効率的に処理できるよう、ページングロジックを準備してください。

結論

この記事では、Microsoft Graph クエリの構築と実行のために Aspose.Email for .NET ライブラリの [ODataQueryBuilder][2] クラスの使用方法を学びました。OData 構文を手動で作成する代わりに、C# コード内で型安全で動的かつ可読性の高いクエリを直接作成できるようになりました。Aspose.Email for .NET における OData クエリサポートの導入により、開発者は Microsoft Graph と連携する、よりスマートで効率的なアプリケーションを構築できるようになります。

Microsoft Graph を使用して、より高速で効率的な .NET アプリケーションを構築する準備はできていますか?

参照