.NETでサービスレイヤーを構築するための適切なテクノロジーの選択

アプリケーションでサービスレイヤーを設計する場合、サービスレイヤーで使用するテクノロジーの選択は、多くの要因によって異なります。この記事では、.Netでアプリケーションを設計するときに、サービスレイヤーを実装するための適切なテクノロジをいつどのように選択できるかについて説明します。

.Netでサービスレイヤーを設計する際の2つの主要な候補は、WCFとWebAPIです。 WCFはSOAの開発プラットフォームであり、多くの機能を提供し、さまざまなトランスポートプロトコルをサポートします。 WCFはサービス指向アプリケーションを構築するための統合フレームワークですが、Web APIは、さまざまなクライアントが利用できるRESTfulサービスを構築するための軽量な代替手段です。 RESTfulサービスは基本HTTPを使用し、SOAPサービスと比較してペイロードがはるかに少ないシンプルです。 WCFでWebHttpBindingを使用して、HTTPを介して非SOAPRESTfulサービスを構築できます。 WCFは、HTTP、TCPなどの多くのトランスポートプロトコルをサポートできるという意味で、はるかに用途が広いです。WCFを活用して、メッセージング、二重通信、TCPなどの高速トランスポートチャネルをサポートできる、安全で信頼性の高いトランザクションサービスを構築できます。 、名前付きパイプまたはUDP。

HTTPプロトコルの全機能を活用し、バージョン管理、ブラウザーのキャッシュ制御、およびEtagsを使用した同時実行を使用できる、HTTPを介した軽量のリソース指向サービスを構築する必要がある場合は、WebAPIが適しています。 Webブラウザー、モバイル、タブレットなどの幅広いクライアントにサービスを公開する場合は、サービスレイヤーでWCFではなくWeb APIを選択する必要があります。WebAPIは軽量であり、限られたデバイスに適しています。スマートフォンのような帯域幅。 WCFの使用中に直面した主な制約の1つは、その広範な構成です。WebAPIは、はるかに単純で使いやすいものです。 WCFはWebAPIに比べてはるかに用途が広いことを認めますが、WCFが提供する機能を必要とせず、必要なのはHTTPを介したRESTfulサービスだけです。軽量で使いやすいので、私は常にWebAPIを好みます。

また、WebAPIとASP.NetMVCの違いについても説明します。どちらを選択するかについては、誤解があるためです。 ASP.NetMVCとWebAPIのどちらを選択するかは、多くの要因によって異なります。それらのいずれかを使用することを決定する前に覚えておく必要がある特定の考慮事項があります。

Web APIはHTTP動詞を使用するため、メソッドをそれぞれのルートにマッピングするためにHTTP動詞ベースのマッピングを使用することに注意してください。特定のルートの同じHTTP動詞に対してオーバーロードされたメソッドを持つことはできません。 ASP.NetMVCとWebAPIのどちらかを選択するときは、この設計上の制約に注意する必要があります(回避策はありますが)。 ASP.Net MVCとは異なり、Web APIは、アクションを含むURIではなくHTTP動詞に基づくルーティングを使用します。したがって、Web APIを使用して、HTTPプロトコルを活用できるRESTfulサービスを作成できます。つまり、テストと保守がより簡単なサービスを設計できます。 Web APIでのルーティングははるかに簡単で、コンテンツネゴシエーションをシームレスに活用できます。 ASP.Net MVCのルーティングモデルには、URIにアクションが含まれています。

考慮したいもう1つのポイントは、特定のアプリケーションに対して機能を公開するかどうか、または機能を汎用にする必要があるかどうかです。 1つのアプリケーションのみに固有のサービスを公開する場合は、ASP.NetMVCを使用する必要があります。ASP.NetMVCアプリケーションのコントローラーはアプリケーション固有です。それどころか、ビジネスニーズで機能を一般的に公開する必要がある場合は、WebAPIアプローチが必要になります。機能がよりデータ中心である場合はWebAPIアプローチを使用し、機能がよりUI中心である場合はASP.NetMVCアプローチを使用することをお勧めします。

コントローラがJSON、XMLなどの複数の形式でデータを返すようにする場合は、ASP.NetMVCを介したWebAPIを使用する必要があります。また、Web APIでのデータ形式の指定は、構成が簡単です。Web APIは、自己ホスト型(WCFと同様)の機能においてもASP.NetMVCを上回っています。ASP.Net MVCコントローラーは同じアプリケーションの一部であるため、アプリケーションがホストされているのと同じWebサーバーでASP.NetMVCコントローラーをホストする必要があります。それどころか、IISの外部でWeb APIコントローラーをホストすることもできます。軽量のカスタムホストでホストして、さまざまなクライアントがサービスを利用できるようにすることができます。