web-dev-qa-db-ja.com

Webサービスの理解と開発

この質問は、ホテル予約システムの開発にどのように取り組みますか?と組み合わせて使用​​します。

異なるインターフェースを持つシステム(または私が言っておくべきクライアント)の解決策は、Webサービスの開発に取り掛かり、他のシステムと相互作用することです。

私はWebサービスを開発する必要がなかったので、少し不足しています。 Webサービスは、HTTPプロトコルを使用してネットワーク経由でデータを変更、送信、または受信することを含むいくつかの操作を実行するシステムまたはアプリケーションです 。 (理解が間違っている場合はお知らせください)

さて、他の質問から、Webサービスを開発する必要があることは明確に理解されていますが、どうすればよいのかわかりません。私が選んだ言語はC#と.NET Frameworkです。

質問:Webサービスをどのように開発し、C#言語を使用して同じツール、テクノロジー、およびフレームワークを使用する必要がありますか?

質問:デスクトップのWPFアプリケーション、ウェブサイト、モバイルアプリからこれを操作するにはどうすればよいですか。

7
Pankaj Upadhyay

「Webサービス」は、通常HTTPで動作するデータ交換メカニズムを表す一般的な用語です(ただし、これに限定されません)。 Webサービスを実装する方法には多くの種類があり、特にデータを交換する方法があります。

SOAP Webサービス

ほとんどの(.NET)開発者が使い慣れている「Webサービス」のタイプは、 [〜#〜] soap [〜#〜] Webサービスです。 SOAP Webサービスはかなり成熟しており、明確に定義されており、w3.org standards と仕様がたくさんあります。 SOAP Webサービスのサポートはほとんどの開発フレームワークに組み込まれ、.NETはSOAP Webサービスのサポートを開始して以来、Visual StudioツールによりSOAP Webサービスの構築を非常に簡単に開始できます。ボックスの。

SOAP Webサービスの問題は、軽量ではないことです。サービスを記述するWSDLドキュメントを公開する必要があります。システム間で交換されるXMLは、SOAPメッセージの組み立てに使用される構成-エンベロープ、ヘッダー、および本文のために非常に重い場合があります。

SOAPメッセージの問題は、メッセージがWebブラウザー(Javascript)で簡単または自然に消費されないことです。これを実現するには、多くの作業を行うか、MicrosoftのAJAXクライアント側のようなものを使用する必要があります。正確でも軽量でもないスクリプトライブラリ。

XML-RPC

もう1つ古いタイプの「Webサービス」プロトコルは、XML-RPCです。これはおそらくHTTP Webサービスのお父さんであり、SOAPの基礎を提供しました。 XML-RPCは.NETで十分にサポートされておらず、SOAPと同様に、少量のデータを送信するだけのために、XMLペイロードにかなり大きなメタデータオーバーヘッドがあります。また、XML-RPCは、Webブラウザーによって簡単に、または自然に消費されることはありません。

カスタムXMLまたはその他の交換形式

カスタムXMLメッセージを使用してデータを交換するWebサービスを構築することは完全に可能です。実際、ウェブサービスはXMLを使用する必要さえありません(下記を参照)。プレーンな古いCSVを使用して、HTTP経由でデータを交換することもできます。ただし、非標準形式を使用する場合の欠点は、インターチェンジ形式をシリアル化または逆シリアル化するときに、独自のカスタムコードを記述してそれを行うことです。 SOAPとJSONは、これらの形式との間でオブジェクトをシリアル化および逆シリアル化する多くのフレームワークの組み込みサポートを備えています。理想的には、フレームワークが理解できる形式を使用し、すぐに大仕事をすることができます。

[〜#〜] json [〜#〜]

「Webサービス」エンドポイントへの呼び出しを行う予定であり、これらのサービスのコンシューマーが変化する場合(ケースの場合など)、たとえば.NET WPFアプリケーション、AJAXからの呼び出しブラウザまたはモバイルアプリケーション(iPhone、Androidなど)にデータを取得する場合、リストの一番上に配置する1つのデータ交換形式はJSONです。

JSONは非常に軽量なデータ交換フォーマットであり、さまざまなプログラミング言語やプラットフォームで利用できる多数のライブラリがあります。

.NETアプリケーションの場合、JSONのシリアライズとデシリアライズのための built-in support があり、James Newton Kingの優れたサードパーティライブラリ Json.NET ライブラリ(これは私の好みです)。

モバイルアプリケーションの場合、ほとんどのモバイルプラットフォームでSOAPはかなりしっかりとサポートされていますが、JSONはよりコンパクトであるため、より良い選択です。モバイルアプリケーションが低速でデータを取得している場合、コンパクトには大きな利点があります。 2Gまたは3G接続。

また、JSONはブラウザーのJavaScriptで簡単に使用できます。JavaScriptは、JSON形式のデータをブラウザー側のスクリプトで直接使用できるオブジェクトに再水和します。 jQueryを使用すると、ブラウザーとWebサービスの間でJSONデータを送受信するのが非常に簡単になります。実際、JSONはおそらくブラウザでWebサービスデータを利用するための事実上の方法です。

結論として、そしてあなたの二つの質問に答えるために-

C#言語を使用して、Webサービスをどのように開発し、同じためにどのツール、テクノロジー、フレームワークを使用すればよいですか?

Webサービス自体を構築する-ASP.NET MVCを使用して構築されたWebサービスエンドポイントは、おそらく最も抵抗の少ない方法です。 WCFを使用することはできますが、学習曲線はかなり高くなる可能性があり、領域に付随する構成とインフラストラクチャのコードはかなりあります。ただし、CodePlexには WCF Web API というMSプロジェクトがあり、HTTPを介したWCFの使用を簡略化することを目的としていますが、まだプレビュー段階です。

私のアドバイスは、ASP.MVCを使用してHTTP経由でJSONを送受信するコツを取得することから始めることです。組み込みの.NET JSONサポートを使用するか、 Json.NET のようなものを使用します。

デスクトップWPFアプリケーション、ウェブサイト、モバイルアプリからこれをどのように操作できますか?

  • WCFアプリケーションが上記のWebサービスと通信できるようにするには、確かに Json.NET を使用してJSONデータをシリアル化および逆シリアル化し、Webサービスにリクエストを送信します単純な HttpWebRequest を使用するエンドポイント

  • ブラウザベースのクライアントは、Webサービスとブラウザの間でJSONデータをプッシュおよびプルするためのAJAX呼び出しを行うことができます。ここで最も抵抗の少ないパスは jQuery を使用することです

  • モバイルアプリケーション(iPhone、Android、またはWindows Phone 7)の場合、JSONを送信、受信、使用する方法は多数あります。たとえば、 herehere および here

RESTに、またはRESTにしない

ある時点で行う必要がある決定は、Webサービスを [〜#〜] rest [〜#〜] fulにするかどうかです。 RESTの原則は well ですが、しばしば誤解されています(一部の開発者は、「クリーン」なURLを使用しているだけでWebサービスがRESTfulであると主張しています)。 RESTの哲学を説明し始めるのに十分なスペースがありません。この件について正義を行うことができなかったので、間違いを犯す可能性がありますが、 のコピーを入手することをお勧めしますRESTful Webサービス はO'Reilly Mediaによって公開されています。このサイトのRESTに いくつかの質問 がありますので、読んでみる価値はあります。

うまくいけば、この答えはあなたがあなたを始めるためのポイントのジャンプを与えるでしょう。

11
Kev

Webサービスは、ウィンドウとWebアプリケーションの間の通信を行うための優れたアプローチです。

MSDN Webサイトから簡単に開始して学習できます。ここでは、Webサービスを最初から学習するのに役立つリンクをいくつか紹介します。

MSDN-Webサービス -さまざまなタイプのWebサービスに関するすべての情報が含まれています。
1。シンプルなWebサービス
2。 XML Webサービス
3。 WCF Webサービスなど.

Webサービスの作成と呼び出し-ASP.Net -このビデオを見て、これらのすべてを実行する方法を理解してください。

Visual Web DeveloperでのASP.NET Webサービスの作成と使用 の段階的なアプローチにより、このためのコーディング方法がわかります。

.Net PlatformでのWebサービスの呼び出しと利用は、ほとんどのテクノロジーで同じです。それらを使用するには、プロジェクトにWebサービス参照を追加する必要があります。WPFアプリケーションまたはシンプルなWindowsフォームアプリケーションのいずれかです。

  1. Visual Studioでプロジェクトを開きます。 [プロジェクト]メニューの[Web参照の追加]をクリックします。
  2. ダイアログボックスで、URLを次のように設定します。 http://services.msdn.Microsoft.com/contentservices/contentservice.asmx?wsdl
  3. 「移動」、「参照の追加」の順に押して、Web参照を作成します。

これを確認してください Windows Presentation Foundation User Education-Web Servicesへのバインド

詳細については、「O.really Programming .NET Web Services- Chapter 2 online」を参照してください。

このすべてがアプリケーションでのWebサービスの理解と実装に役立つことを願っています。 Stackoverflowには、Webサービスに関する多くの質問があります。あなたがそれらを利用するかもしれません。

5
Niranjan Singh