プログラマーが理解する必要がある概念: SDK と API の違い

SDKとAPIの違い

C# では、SDK と API はどちらもソフトウェアとアプリケーションを作成するためのツールです。SDK (ソフトウェア開発キット) は、開発者がソフトウェア アプリケーションを作成するのに役立つツールとドキュメントのセットです。API (アプリケーション プログラミング インターフェイス) は、アプリケーションが相互に通信する方法を定義する一連のルール、プロトコル、およびツールです。

SDKとAPIの違い

SDK と API の主な違いは、その機能と目的です。SDK は、開発者がソフトウェア アプリケーションを作成するのに役立つ一連のツールとドキュメントを提供する完全なツールキットです。SDK には多くの API が含まれていますが、それらは SDK の一部にすぎません。API は、アプリケーションが相互に通信する方法を定義するルール、プロトコル、ツールのセットであり、完全なツールキットを提供するものではありません。

もう一つの大きな違いは、使用の難しさです。SDK にはより多くのツールやドキュメントが含まれているため、一般に API よりも使用するのが難しくなります。ただし、開発者がアプリケーションを完全に制御できるため、柔軟性と制御が向上します。

SDK を使用する場合

完全なアプリケーションを作成する必要がある場合は、通常、SDK を選択することをお勧めします。柔軟性と制御性が向上し、アプリケーションを完全に制御できるようになります。さらに、通常はより多くのツールとドキュメントが含まれており、開発がより効率的になります。

API を使用する場合

既存のアプリケーションまたはサービスの特定の機能にのみアクセスする必要がある場合には、API の方が適切な選択肢となることがよくあります。完全なアプリケーションを作成する必要はありません。必要なのは、API を使用して既存のアプリケーションまたはサービスと対話することだけです。

コード例

SDK と API を使用した例を次に示します。

SDKを使用した例

using System;
using Microsoft.Azure.CognitiveServices.Vision.ComputerVision;
using Microsoft.Azure.CognitiveServices.Vision.ComputerVision.Models;

namespace SDKExample
{
    class Program
    {
        static void Main(string[] args)
        {
            string subscriptionKey = "your-subscription-key";
            string endpoint = "your-endpoint";

            ComputerVisionClient client = new ComputerVisionClient(new ApiKeyServiceClientCredentials(subscriptionKey)) { Endpoint = endpoint };

            var result = client.RecognizeTextAsync("<https://example.com/image.jpg>").Result;

            foreach (var region in result.Regions)
            {
                foreach (var line in region.Lines)
                {
                    foreach (var word in line.Words)
                    {
                        Console.Write(word.Text + " ");
                    }
                    Console.WriteLine();
                }
            }
        }
    }
}

APIの使用例

using System;
using System.Net.Http;
using System.Threading.Tasks;

namespace APIExample
{
    class Program
    {
        static async Task Main(string[] args)
        {
            string subscriptionKey = "your-subscription-key";
            string endpoint = "your-endpoint";
            string url = "<https://example.com/image.jpg>";

            HttpClient client = new HttpClient();
            client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", subscriptionKey);

            var response = await client.GetAsync($"{endpoint}/vision/v3.0/read/analyze?mode=Printed");
            var operationLocation = response.Headers.GetValues("Operation-Location").FirstOrDefault();

            var result = await GetReadResult(operationLocation, client);

            foreach (var line in result.RecognitionResult.Lines)
            {
                foreach (var word in line.Words)
                {
                    Console.Write(word.Text + " ");
                }
                Console.WriteLine();
            }
        }

        static async Task<ReadOperationResult> GetReadResult(string operationLocation, HttpClient client)
        {
            ReadOperationResult result = null;
            do
            {
                var response = await client.GetAsync(operationLocation);
                result = await response.Content.ReadAsAsync<ReadOperationResult>();
                await Task.Delay(1000);
            } while (result.Status == OperationStatusCodes.Running || result.Status == OperationStatusCodes.NotStarted);

            return result;
        }
    }

    class ReadOperationResult
    {
        public string Status { get; set; }
        public RecognitionResult RecognitionResult { get; set; }
    }

    class RecognitionResult
    {
        public Line[] Lines { get; set; }
    }

    class Line
    {
        public Word[] Words { get; set; }
    }

    class Word
    {
        public string Text { get; set; }
    }
}

おすすめ

転載: blog.csdn.net/Documentlv/article/details/130290415