2012-02-29 26 views
25

私は要素の数を必要とするプロジェクトに取り組んでするつもりです:WCFサービスまたはWeb API

  • ASP.NET MVCのウェブサイト
  • C#コンソールアプリケーション
  • iPhoneアプリ

これらのアプリケーションをすべてデータベースと通信するには、すぐにWCFサービスを使用することを考えました。

はしかし、私は今、サードパーティが独自のアプリケーションからレコードを選択挿入および更新できるようにするためにサイトにAPIを追加する必要があります。私の心の中で

は、私はちょうど認証を使用してロックダウンされるだろうとだけ特定のメソッドへのアクセスを与えるだろう、私のWCFサービス上の別のRESTfulなサービスエンドポイントを作成します。

しかし、私はRESTfulなAPIの最新のものであることを意味するMVC 4でのWeb APIの機能について、今日読んでいますか?

私はWeb APIを使用していますか?または他のアプリケーションでWebサービスが必要な場合は、WCFサービスを利用する必要がありますか?

+0

(http://stackoverflow.com/questions/9348639/wcf-vs-asp-net-web-api)[ASP.NETウェブAPI VS WCF]の可能重複 – nawfal

答えて

16

RESTful開発を行う場合は、ASP.Net Web Api(これは元々WCF Web Apiと呼ばれ、の目標で作成されました。「RESTを.NETで第一級市民にする」)

もう1つのことは、WCF RESTスターターキットがno longer supportedであることです。

Web Apiを使用しても、ASP.Net MVCまたはIISを使用する必要はありません。self hostedでも可能です。

本来CRUD以外の操作を処理する場合は、Googleで「REST非CRUD」をおすすめします。私はこのブログ投稿RESTful URLs for non-CRUD operations(特に興味深いコメント)を見つけました。 RPC呼び出しが必要な場合は、WCFで処理する必要があります。 WCF RESTが殺されて以来、最高の解決策が何になるのか分かりません。両方を持つのがおそらく最良の答えですが、同時にそれは必ずしも良い答えではありません。

もう1つの方法はWCF ODataサービスですが、iPhoneからサポートが得られるかどうかはわかりません。

作るための一つの最後のポイントは、(これは時間に敏感であるとしてそれが将来的に削除することができます)

Microsoftは、それは、マイクロソフトでサポートされて、あなたはshouldnことを意味ベータ版でライブ配信ライセンスを提供してきましたファイルRTMにアップグレードする際に問題がありません。

+0

ご意見ありがとうございます。確かに私はMVCのWebサイトにもservice/apiを使用しているので、service/api全体をRESTfulにしたくないのですか?それはWeb APIで可能ですか?WCFサービスでは、RESTfulのエンドポイントを別途用意することができます。 –

+0

投稿する情報を追加しました。 –

+0

私はあなたの追加情報を完全に理解していません。解決策はMVCのWebサイトから参照できるWCFサービスを使用することです。次に、WCFサービスと通信してデータを取得するWeb API(認証付き)を使用できますか? –

6

Service Stackもオプションのようです。

デモ、概要、および例はavailable hereです。

+2

+1私が聞いたことのないサービススタック。しかし、彼らの枠組みを見てみると、私の最初の印象は、クライアントの「コードなし」という彼らの目標は完全に正確ではないということです。パブリックAPIの可能性が高いシナリオであるサービスDTOにアクセスできない場合は、コードジェン(明らかにマニュアル)が必要です。それでも、フレームワークは有望に見えるので、私は確かにそれを勉強しています。リンクありがとう! – Randolpho

+0

あなたがあなたのWebサービスを定義したのと同じDTOを再利用できるので、コードジェニックはありません。したがって、高速でバージョン管理可能な型付きの簡潔な汎用サービス・クライアントがエンドツーエンドでシリアライズされます。 C#の例外でさえ慣用であり、https://github.com/ServiceStack/ServiceStack/wiki/Validation – mythz

+0

@mythzとタイプされています.DTOを定義した.DLLにアクセスできない場合はどうなりますか?これは一般にアクセス可能なWebサービスの一般的なシナリオです。 – Randolpho

4

ここで正解はありません。あなたは確かにWCF RESTfulサービスでかなりうまくいくでしょう。または、ASP.NET MVCを使用することもできます。どちらも完全に有効で、どちらも長所と短所を持っています。

最終的には、あなたが最も保守的であると感じるものがあればお勧めします。

私はMVC 4はベータ版であることに注意することが好きなので、バグに注意し、それがベータ版の外になるまで生きて行かないでしょう。

1

私はiPhoneアプリがあなたの選択肢を駆動終わる可能性が疑われる、あなたが使用しようとしているすべてのプラットフォーム上で最高のサポートを持っているものを見てinlclinedされるだろう。

純粋だったなら、私はまだSOAPサービスに頼る傾向があります - 最近は涼しいとは言えませんが、通常はカスタムソリューションをロールバックすることなくほとんどのプラットフォームで必要なことを行います。

EDIT

ASP.NETのWeb APIは、.NETは今安らかなAPIを開発するための優れたフレームワークを提供することを意味し、私は今、この方に傾くだろうと言って私の答えを改訂 - 進行は素晴らしいです!

1

あなたはASP.NET MVCのWebサイトを作成しようとしているので、プログラミングモデルは非常に似ており、これらのソリューションは、多かれ少なかれ統合化されているので、また、ASP.NETのWeb APIを使用して非常に快適になります。

0

私は同じ質問があります。 MSDNのサイトで

、彼らはiPhoneまたはJSONやXML、ウェブAPIのWebアプリケーションクライアントのような機械cosumptionためのオプションを推奨していることを言ったビデオチュートリアルを発見 http://msdn.microsoft.com/en-us/library/jj823172(v=vs.110).aspx

。そのビデオの最後の部分の周りに。

より複雑なマシン間通信ではWCFが優先されますが、ここで

http://channel9.msdn.com/Series/Building-Web-Apps-with-ASP-NET-Jump-Start/Building-Web-Apps-with-ASPNET-Jump-Start-04-Building-a-Service-Layer-with-ASPNET-Web-API

彼らのプレゼンテーションからのスクリーンショットです。言及するため

enter image description here

関連する問題