2010-12-27 4 views
3

既存の.NETアプリケーションにWCFサービスレイヤを追加する作業を進めています。このレイヤーはIISでホストされ、さまざまなUIによって消費されますが、少なくとも1つはMicrosoftテクノロジを使用しません。WCFサービスを非.NETコンシューマと互換性を持たせる方法

.NETアプリケーションで消費されるWebサービスをWCFで作成できます。しかし、私は.NETの世界では動作しますが、他のテクノロジでは動作しないものが心配です。

たとえば、単にWCFサービスから例外をスローすると、.NETで正常に動作します。しかしthis articleによれば、非.NETコンシューマとの互換性を保証するために、フォールトコントラクトによる例外処理に近づくべきです。著者はこの先見性の欠如を、としています。.NETのみの世界の虚偽です。

WCFと非.NETコンシューマ間の相互運用性をカバーする記事へのハイレベルな提案やリンクはありますか?

私は潜在的にYAGNIの原則に反対していると思います。私は、非.NETコンシューマの開発者が私に問題を報告したときに後で克服することは非常に困難なことを避けるために実際に探しています。

+0

を動作することを確認? –

答えて

6
  • netでないスタートを行うWCFバインディングのいずれかを使用する - - netTcp, netMsmqなどを避けるためここで

    は、あなたが開始することができますいくつかの良いリンクです。それらは.NETだけです

  • パラメータを簡単かつきれいにシリアライズさ

  • は、あなたのデータコントラクトに任意の.NETの特定の種類のを避けるためですあなたの方法を入力するようにして返す、のDataContract/DataMemberプロパティの属性を十分に活用してください - Exceptionやバック渡しませんそのような何か - SOAP(またはREST)を使用してそれらのもののための要素の代わりに

  • DataSetのようなものを使用していない、DataTableなど - 彼らはすべて重く.NET

  • に結びついているのを確認してくださいサービス側のすべてのエラーを適切にキャッチします。IErrorHandlerを実装し、代わりにSOAPフォールトを返す(SOAPバインディングを使用している場合)またはHTTPエラーコード(RESTの場合)

  • サービスを非.NETクライアントでテストしてください。それらに対してPHPページを実行し、コードアップルビーで何か - 何でも - それをテストし、それはあなただけの障害を使用するように例外をスローしないように提案を見た

2

あなたのサービスを作る良い方法は、RESTfulです。

ウィキペディア - Representational State Transfer (REST)は、World Wide Webなどの分散型ハイパーメディアシステムのためのソフトウェアアーキテクチャのスタイルです。

RESTスタイルのWebサービスは、既存のHTTP機能を利用してサービスを公開します。ソフトウェアを構築するほとんどの技術がHTTPを扱うことができるので、あなたのWebサービスがDotNet以外のどのコンシューマーによっても消費されることを確かめることができます。

RESTfulサービスの非常に良い例は、stackOverflow APIです。

http://www.oracle.com/technetwork/articles/javase/index-137171.html

http://msdn.microsoft.com/en-us/magazine/dd315413.aspx

関連する問題