.NET ヘルプ

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

更新済み 8月 13, 2024
共有:

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

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操作やフィルタリングを実行するための統一されたデータクエリ方法をサポートしています。 (フィルター)ソート (昇順/降順)(オーダーバイ)ページング (トップ、スキップ) 機能により、クライアントは特定のデータセットを効率的に取り出すことができる。
  • 開発者エクスペリエンスの向上: OData用の.NETライブラリは、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
VB   C#

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
VB   C#

コードの説明

ODataModelBuilder クラスは、サービスを管理するための基本的なデータ構造を C# で表しています。これには 3 つのプロパティが追加されています。 ここで、プロパティ名は以下の通りである: Id:サービスの整数識別子。 FirstName:FirstName: サービスに関連付けられたファーストネームを表す文字列。 Price**:サービスの価格を示す 10 進値。このクラスは、.NET開発でより複雑なサービス関連機能を作成するためのビルディングブロックとして使用できます。 また、シナリオに応じて、Collectionプロパティやナビゲーション・プロパティを使用することもあります。

ここでは、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
VB   C#

コードの説明

提供されるコードは、ASP.NET CoreアプリケーションでServiceControllerという名前のODataControllerを定義し、ODataプロトコルを使用したクエリーとデータ操作を可能にする。 これはリクエストを "odata/Service "にルーティングし、ラップトップやスマートフォンを含むServiceオブジェクトの静的リストを提供する。 で装飾された 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
VB   C#

コードの説明

このコードは、.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
VB   C#

プログラムの出力

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

IronPDFの紹介

IronPDFはC#の包括的なライブラリです。 作成, 操作、および レンダリング .NETアプリケーション内でPDF文書を処理します。 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
VB   C#

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: {person.FirstName} {person.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: {person.FirstName} {person.LastName}</p>");
        pdf.SaveAs("PersonRecord.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

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

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

結論

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

< 以前
スタイルコップ C# (開発者のための仕組み)
次へ >
IdentityServer .NET (開発者のための仕組み)

準備はできましたか? バージョン: 2024.9 新発売

無料のNuGetダウンロード 総ダウンロード数: 10,659,073 View Licenses >