.NET ヘルプ

OData C# (開発者のための仕組み)

オープンデータプロトコル(OData)は、Microsoft .NET 開発においてRESTful API の構築と利用を簡素化します。 これは、慣れ親しんだCRUD(作成、読み取り、更新、削除)操作を通じて、データの照会と操作に対する標準化されたアプローチを提供します。 この記事では、Open Data Protocolが.NETでのAPI開発をどのように効率化するのか、例を示しながらその主な利点を紹介します。 ODataについて詳しく知るには、ソースコードを確認するためにOData C# GitHub リポジトリをチェックしてください。

OData C#(開発者にとっての動作原理):図1 - OData C#- データアクセスプロトコル

イントロダクション

ODataは、RESTfulなWeb APIを構築するための標準的なプラクティスに従い、URLとGETやPOSTのようなHTTP動詞を使って操作を定義する。 それは、エンティティデータモデル (EDM) とメッセージエンコーディングのために JSON または AtomPub を使用してデータを表現します。 ODataはGraphQLに比べてAPI開発を簡素化する一方で、高度な機能を提供することは少ないかもしれない。

OData C#(開発者にとっての仕組み):図2 - OData

.NET で OData を使用するメリット

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

.NET FrameworkでODataを始める

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

.NETプロジェクトでODataを設定する

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

NuGet Package ManagerコンソールでODataをインストールするには、以下のコマンドを使用します。

Install-Package Microsoft.AspNetCore.OData
Install-Package Microsoft.AspNetCore.OData
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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

例.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; }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

コードの説明

ODataModelBuilder クラスは、サービスを管理するための C# で基本的なデータ構造を表します。このクラスには、次の 3 つのプロパティが含まれています:Id: サービスの整数識別子。FirstName: サービスに関連付けられた名前を表す文字列。Price: サービスの価格を示す 10 進数の値。このクラスは、.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);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

コードの説明

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

Program.csでODataサービスを登録する

ODataを.NET 6アプリケーションに統合するには、必要な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()
    );
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

コードの説明

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

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

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

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

サービスの実行

サービスを実行した後、次のようなさまざまなODataクエリオプションを使用してサービスに問い合わせることができます:

https://localhost:7131/odata/Service
https://localhost:7131/odata/Service
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

プログラムの出力

OData C#(開発者向けの動作方法):図5 - ODataサービス出力

IronPDFの紹介

IronPDFは、.NETアプリケーション内でファイルをPDFに変換PDFページを分割、およびPDFからページを削除する作業を簡素化するために設計された包括的なC#ライブラリです。 HTML、CSS、画像、JavaScriptからPDFを生成する機能など、幅広い機能を備えており、開発者はウェブコンテンツを高品質のPDF文書に簡単に変換することができます。 IronPDFの直感的なAPIと強力なレンダリングエンジンにより、開発者はPDF生成プロセスを合理化し、アプリケーションにダイナミックなドキュメント生成機能を簡単に統合することができます。

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

プロジェクトにIronPDFを追加する

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

Install-Package IronPdf
Install-Package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronPdf
$vbLabelText   $csharpLabel

PDFの作成

.NETアプリケーションでHTMLコンテンツからPDFドキュメントを生成するには、DinkToPdfなどのライブラリからChromePdfRendererクラスを使用します。 この例では、Employeeレコードの詳細を含む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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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

OData C#(開発者のための動作方法):図7 - PDF出力

結論

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

チペゴ
ソフトウェアエンジニア
チペゴは優れた傾聴能力を持ち、それが顧客の問題を理解し、賢明な解決策を提供する助けとなっています。彼は情報技術の学士号を取得後、2023年にIron Softwareチームに加わりました。現在、彼はIronPDFとIronOCRの2つの製品に注力していますが、顧客をサポートする新しい方法を見つけるにつれて、他の製品に関する知識も日々成長しています。Iron Softwareでの協力的な生活を楽しんでおり、さまざまな経験を持つチームメンバーが集まり、効果的で革新的な解決策を提供することに貢献しています。チペゴがデスクを離れているときは、良い本を楽しんだり、サッカーをしていることが多いです。
< 以前
スタイルコップ C# (開発者のための仕組み)
次へ >
IdentityServer .NET (開発者のための仕組み)