フッターコンテンツにスキップ
.NETヘルプ

OData C#(開発者向けの仕組み)

オープンデータプロトコル (OData) は、Microsoft .NET 開発における RESTful API の構築と利用を簡単にします。 これは、馴染みのある CRUD (作成、読み取り、更新、削除) 操作を通じてデータのクエリと操作を標準化した方法で提供します。 この記事では、オープンデータプロトコルが .NET における API 開発をどのように効率化するかを探索し、例を示しその主要な利点を強調します。 OData についてさらに探索するには、ソースコードを GitHub リポジトリの OData C# GitHub リポジトリ をチェックできます。

OData C# (開発者向けの仕組み): 図 1 - OData C# - データ アクセス プロトコル

OData は、URL や HTTP 動詞(GET や POST など)を使って操作を定義する RESTful Web API を構築するための標準的な手法に従います。 これは、Entity Data Model (EDM) とメッセージエンコーディングのために JSON または AtomPub を使用してデータを表現します。 OData は、API 開発を GraphQL と比較して簡素化しますが、高度な機能は少ない可能性があります。

OData C# (開発者向けの仕組み): 図 2 - OData

OData を .NET で使用する利点

  • 標準化: OData はエンティティデータモデルの定義、リクエスト処理、レスポンスフォーマットを一貫した方法で強制します。 これにより開発の複雑さが軽減され、クライアントアプリケーションの統合が容易になります。
  • 豊富なクエリ機能: OData はデータのクエリ操作を行うための一様な方法をサポートし、CRUD 操作、フィルタリング ($filter)、並べ替え(昇順/降順)($orderby)、ページング ($top,$skip) 機能を含めて、クライアントで特定のデータセットを効率的に取得できます。
  • 開発者の利便性向上: .NET ライブラリは OData によってAPI開発が効率化されます。 開発者は、ルーティング、クエリ処理、データシリアル化のための事前構築コンポーネントを活用でき、コード重複と開発時間を削減します。
  • 相互運用性: 異なるプラットフォームからの OData 準拠のクライアントが .NET ベースの OData サービスとシームレスに対話でき、より広範なアプリケーション統合を促進します。

.NET 内の OData の使い始め方

.NET の OData ライブラリは開発者の体験を向上させ、データセットを操作する効率的な方法を提供します。 それは .NET 開発における RESTful API の構築と利用を簡素化します。 これは、馴染みのある CRUD 操作(作成、読み取り、更新、削除)を通じてデータのクエリと操作を標準化した方法で提供します。

.NET プロジェクトでの OData 設定

まず、Visual Studio で新しいプロジェクトを開きます。 次に、ソリューション エクスプローラーに移動し、プロジェクトを右クリックして"NuGet パッケージの管理"を選択します。 Microsoft.AspNetCore.OData を検索してインストールします。 現在の OData バージョンは 8.2.5 です。

NuGet パッケージ マネージャー コンソールで OData をインストールするには、次のコマンドを使用します。

Install-Package Microsoft.AspNetCore.OData

OData C# (開発者向けの仕組み): 図 3 - OData のインストール

例: ASP.NET Core で OData サービスを作成する

ASP.NET Core アプリケーションでシンプルな OData モデル クラスを作成しましょう。 以下のコードでは、OData 構文を使用してクエリ可能なサービスのリストを公開します。

public class Service
{
    public int Id { get; set; } 
    public string FirstName { get; set; }
    public decimal Price { get; set; }
}
public class Service
{
    public int Id { get; set; } 
    public string FirstName { get; set; }
    public decimal Price { get; set; }
}
$vbLabelText   $csharpLabel

コードの説明

Service クラスは C# でサービスを管理するための基本的なデータ構造を表します。このクラスには3つのプロパティが含まれます。Id: サービスの整数識別子。FirstName: サービスに関連付けられた名を表す文字列。Price :サービスの価格を示す小数値。このクラスは、 .NET開発において、より複雑なサービス関連機能を作成するための構成要素として使用できます。 シナリオに基づいてコレクションまたはナビゲーションプロパティを使用することもできます。

Visual Studio の ASP.NET Core アプリケーションで、標準化された OData エンドポイントを介してサービスのリストを公開する OData コントローラーを設定する方法を以下に示します。 以下の例は、サービスの静的リストを使用した基本的な実装と、Web API で OData クエリ機能を有効にする方法を示します。

using DemoOData.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.OData.Query;
using Microsoft.AspNetCore.OData.Routing.Controllers;

namespace DemoOData.Controllers
{
    [Route("odata/[controller]")]
    public class ServiceController : ODataController
    {
        private static readonly List<Service> Products = new List<Service>
        {
            new Service { Id = 1, FirstName = "Laptop", Price = 6239.9M },
            new Service { Id = 2, FirstName = "Smartphone", Price = 2585.9M }
        };

        [HttpGet]
        [EnableQuery]
        public IActionResult Get() => Ok(Products);
    }
}
using DemoOData.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.OData.Query;
using Microsoft.AspNetCore.OData.Routing.Controllers;

namespace DemoOData.Controllers
{
    [Route("odata/[controller]")]
    public class ServiceController : ODataController
    {
        private static readonly List<Service> Products = new List<Service>
        {
            new Service { Id = 1, FirstName = "Laptop", Price = 6239.9M },
            new Service { Id = 2, FirstName = "Smartphone", Price = 2585.9M }
        };

        [HttpGet]
        [EnableQuery]
        public IActionResult Get() => Ok(Products);
    }
}
$vbLabelText   $csharpLabel

コードの説明

提供されたコードは、 ASP.NET Coreアプリケーションで ServiceController という名前の ODataController を定義し、OData プロトコルを使用してデータのクエリと操作を可能にします。 リクエストを odata/Service にルーティングし、ラップトップやスマートフォンなどの Service オブジェクトの静的リストを提供します。 Get メソッドは、[EnableQuery] で装飾されており、クライアントが製品リストに対して OData クエリ (フィルタリング、並べ替え、ページング) を実行し、結果を HTTP GET 要求の IActionResult として返すことを可能にします。

Program.cs 内で OData サービスを登録します

.NET 6 アプリケーションに OData を統合するためには、必要な OData パッケージをインストールして構成する必要があります。 これには、OData モデルの定義、OData ミドルウェアの設定、フィルタリング、順序設定、展開などの OData 機能をサポートするためのサービスの設定が含まれます。

using DemoOData.Models;
using Microsoft.AspNetCore.OData;
using Microsoft.OData.Edm;
using Microsoft.OData.ModelBuilder;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

static IEdmModel GetEdmModel()
{
    ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
    builder.EntitySet<Service>("Services");
    return builder.GetEdmModel();
}

builder.Services.AddControllers()
    .AddOData(options => options
        .AddRouteComponents("odata", GetEdmModel())
        .Select()
        .Filter()
        .OrderBy()
        .SetMaxTop(20)
        .Count()
        .Expand()
    );
using DemoOData.Models;
using Microsoft.AspNetCore.OData;
using Microsoft.OData.Edm;
using Microsoft.OData.ModelBuilder;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

static IEdmModel GetEdmModel()
{
    ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
    builder.EntitySet<Service>("Services");
    return builder.GetEdmModel();
}

builder.Services.AddControllers()
    .AddOData(options => options
        .AddRouteComponents("odata", GetEdmModel())
        .Select()
        .Filter()
        .OrderBy()
        .SetMaxTop(20)
        .Count()
        .Expand()
    );
$vbLabelText   $csharpLabel

コードの説明

このコードは、.NET 6 アプリケーションでの OData サポートを構成します。 まず、必要な名前空間をインポートし、WebApplicationBuilder インスタンスを作成します。 GetEdmModel メソッドは、ODataConventionModelBuilder を使用して OData モデルを定義します。これは、Service エンティティのエンティティ セットを指定します。 次に、AddOData メソッドが呼び出され、選択、フィルター、並べ替え、カウント、展開の有効化や、クエリ結果の最大値 20 の設定など、OData サービスが構成されます。 このセットアップにより、アプリケーションは効果的に OData クエリを処理できるようになります。

AddOData() メソッドは、クエリに使用されるデータモデルを取得し、OData サービスの基盤を形成する GetEdmModel() メソッドを採用しています。このサービスは、エンティティ データ モデル (EDM) と呼ばれる抽象データ モデルを使用して、公開されるデータを定義します。 ODataConventionModelBuilder クラスは、デフォルトの命名規則を使用して EDM を生成し、コード要件を最小限に抑えます。 あるいは、開発者は、EDM をより細かく制御するために、ODataModelBuilder クラスを利用することもできます。

コードのスクリーンショット

OData C# (開発者向けの仕組み): 図 4 - Visual Studio のコード

サービスの実行

サービスを実行した後、さまざまな OData クエリオプションを使用してサービスをクエリできます。たとえば:

https://localhost:7131/odata/Service

プログラムの出力

OData C# (開発者向けの仕組み): 図 5 - OData サービスの出力

IronPDFの紹介

IronPDF は、.NET アプリケーション内でファイルを PDF に変換し、PDF ページを分割し、PDF からページを削除することを簡素化するように設計された包括的な C# ライブラリです。 これは、HTML、CSS、画像、JavaScript から PDF を生成する機能を含む、幅広い機能を提供し、開発者が Web コンテンツを高品質の PDF ドキュメントに容易に変換することを可能にします。 その直感的な API と強力なレンダリングエンジンにより、IronPDF は開発者が PDF 生成プロセスを簡素化し、動的ドキュメント生成機能をアプリケーションに容易に統合することを支援します。

OData C# (開発者向けの仕組み): 図 6 - IronPDF

プロジェクトへの IronPDF の追加

Visual Studio の NuGet パッケージ マネージャー コンソールに移動し、次のコマンドを使用して IronPDF をインストールします。

Install-Package IronPdf

PDF の生成

.NETアプリケーションで HTML コンテンツから PDF ドキュメントを生成するには、DinkToPdf などのライブラリの ChromePdfRenderer クラスを使用できます。 この例は、従業員の記録の詳細を PDF にする方法を示しています。

public record Employee (string FirstName, string LastName);

class Program
{
    static void Main(string[] args)
    {
        var employee = new Employee("Iron", "Developer");
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf($"<h1>Person Record</h1><p>Name: {employee.FirstName} {employee.LastName}</p>");
        pdf.SaveAs("PersonRecord.pdf");
    }
}
public record Employee (string FirstName, string LastName);

class Program
{
    static void Main(string[] args)
    {
        var employee = new Employee("Iron", "Developer");
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf($"<h1>Person Record</h1><p>Name: {employee.FirstName} {employee.LastName}</p>");
        pdf.SaveAs("PersonRecord.pdf");
    }
}
$vbLabelText   $csharpLabel

この例では、簡単な 従業員 のレコードを作成し、その後 IronPDF を使用してその人の名前を表示する PDF ドキュメントを生成します。 これは、C# レコードが .NET アプリケーションでの PDF 生成と如何にシームレスに統合できるかを示します。

OData C# (開発者向けの仕組み): 図 7 - PDF 出力

結論

OData は、標準化されたクエリと操作機能を提供することで、.NET における RESTful API の開発と利用を簡素化します。 Entity Framework との統合も可能で、データアクセ管理を簡素化することで開発効率を向上させることができます。 OData は API 開発を効率化し、豊富なクエリ機能と向上された開発者体験で、さまざまなプラットフォームとシームレスな統合と相互運用性を実現します。 さらに、IronPDF は .NET アプリケーション内の堅牢な PDF 操作のための包括的な機能とサポートを提供します。

よくある質問

ODataは.NETでのAPI開発をどのように簡素化しますか?

ODataは、CRUD操作を使用してデータのクエリと操作を行うための標準化されたプロトコルを提供することで、.NETでのAPI開発を簡素化します。URLとHTTP動詞を用いたRESTfulプラクティスに従い、JSONまたはAtomPub形式でデータを表現するEntity Data Model(EDM)を利用します。

.NETアプリケーションでODataを使用する主な利点は何ですか?

.NETアプリケーションでODataを使用する主な利点には、標準化、豊富なクエリ機能、開発者の体験向上、異なるプラットフォーム間での相互運用性があり、複雑さを軽減し効率的なデータ取得を促進します。

ASP.NET CoreアプリケーションでODataサービスを設定するにはどうすればよいですか?

ASP.NET CoreアプリケーションでODataサービスを設定するには、ODataモデルを定義し、ミドルウェアを設定する必要があります。Microsoft.AspNetCore.OData NuGetパッケージをインストールし、ODataConventionModelBuilderを使用してエンティティデータモデルを定義することでこれを行うことができます。

ODataにおけるEnableQuery属性の役割は何ですか?

ODataのEnableQuery属性は、ODataコントローラーによって公開されるデータに対して、フィルタリング、ソート、およびページングのような操作をクライアントが実行できるようにし、APIの柔軟性と使いやすさを向上させます。

.NETでHTMLコンテンツからPDFを生成するにはどうすればよいですか?

IronPDFライブラリを使用して.NETでHTMLコンテンツからPDFを生成できます。HTML文字列を作成し、ChromePdfRendererクラスを用いることで、HTMLをPDFドキュメントとしてレンダリングし、その後ファイルに保存することが可能です。

.NETにおけるODataConventionModelBuilderの目的は何ですか?

.NETのODataConventionModelBuilderは、デフォルトの命名規則を使用してエンティティデータモデル(EDM)を自動的に生成し、アプリケーション内でODataモデルを定義するために必要なコード量を削減します。

.NETでPDF操作のための包括的なライブラリは何ですか?

IronPDFは、.NETアプリケーション内でのHTMLからのPDF生成、ファイルのPDFへの変換、PDFページの分割および削除などのタスクを容易にするC#の包括的なライブラリです。

ODataは.NETサービスにおける相互運用性をどのように向上させますか?

ODataはOData標準に準拠するクライアントが.NETベースのODataサービスとシームレスに相互作用することを可能にし、異なるアプリケーションやプラットフォーム間のより広範な統合を促進します。

ODataにおけるCRUD操作とは何ですか?

ODataにおけるCRUD操作は、RESTful API内でデータを操作するために必要な基本操作である作成、読み取り、更新、および削除を指します。

Jacob Mellor、Ironチームの最高技術責任者(CTO)
最高技術責任者(CTO)

ジェイコブ・メラーはIron Softwareの最高技術責任者(CTO)であり、C# PDFテクノロジーを開拓する先見的なエンジニアです。Iron Softwareのコアコードベースを支えるオリジナル開発者として、彼は創業以来、会社の製品アーキテクチャを形成し、CEOのCameron Rimingtonとともに、会社をNASA、Tesla、および世界的な政府機関にサービスを提供する50人以上の会社に変えました。1999年にロンドンで最初のソフトウェアビジネスを開業し、2005年に最初 for .NETコンポーネントを作成した後、Microsoftのエコシステム全体で複雑な問題を解決することを専門としました。

彼の主要なIronPDFとIron Suite .NETライブラリは、世界中で3000万以上のNuGetインストールを達成し、彼の基礎となるコードは世界中で使用されている開発者ツールに力を与え続けています。25年の商業経験と41年のコーディングの専門知識を持つJacobは、次世代の技術リーダーを指導しながら、エンタープライズグレードのC#、Java、Python PDFテクノロジーにおけるイノベーションの推進に注力しています。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me