2009-06-01 30 views
1

特定の機能を実行するWindowsサービスがあり、処理のためにその情報をWebサービスに送信する必要があります。 Webサービスは、リモートWebアプリケーションによってホストされます。私は、各Webアプリケーションが2.0または3.5などである可能性があるので、Webサービスを呼び出す最良の方法を確認しようとしています。私のWindowsサービスでは、app.configの各 "クライアント"を定義しています。どちらを使うか... REST、ASMX、WSE、WCF?

<Client WebServiceUrl="http://location.com/webservice.svc" Username="" Password=""> 

</Client> 

Webアプリケーションは、Windowsサービスを実行するために必要な2つのWebサービスを実装する必要がありますが、Webアプリケーションの「ルール」を実装する最良の方法は不明です。

EDIT:Windowsサービスは30秒ごとに実行され、情報の一覧を取得

私がしようとすると言い換えます.. 。上記のように、このサービスは複数の「クライアント」をサポートしています。各クライアントプロセスが実行されると、データが収集され、サポートするWebアプリケーションに送信する必要があります。

Windowsサービスはデータの処理方法を知らず、送信しているだけです。クライアント用の各Webアプリケーションは異なる場所にあり、2.0,3.5、PHPなどで構築することができます.Windowsサービスが気にするのは、クライアントの処理を実行するときに、 Windowsサービスのapp.configで定義されたWebサービスの場所にデータをコピーします。

私が決定しようとしているのは、Webサービス(どのようにWCFに向いていますか、BasicかWSかわかりません)に接続する方法と、ビルド方法のWebアプリケーションにどのようなルールを定義する必要があるかですレスポンス。

WindowsサービスがPHPアプリケーションなどをサポートする場合、WSHttpBindingはオプションではないため、BasicHttpBindingが動作することを意味します。もう1つの決定は、RESTfulサービスまたはSOAPサービスを利用するかどうかです。

これは理にかなっています。

+0

私はこの質問をよく理解していないのではないかと心配しています。 .NET Frameworkのバージョンへの参照の上に2.0,3.5などの参照がありますか?あなたのWindowsサービスは、さまざまな方法で実装された様々な異なるWebアプリケーションを呼び出さなければならないかもしれないと言っていますか?または、Webサービスを実装して、最良の方法を見つけようとしていますか? – sfitts

+0

うん、ミッキーかもしれないが、それは私にも分かりませんので、あなたは質問をすることができます。 – Cheeso

+0

あなたは本当に "顧客を払って"という意味の "クライアント"と言うとき、実際には "クライアント"は分散システム設計で "サーバ"と呼ばれるものです。 – Cheeso

答えて

10

私はあなたがしていることについて本当に明確ではありません。

あなたには3つのことがあるようです:WindowsサービスとWebアプリケーションでホストされているWebサービス。
WindowsサービスアプリケーションをリモートWebサービスと相互接続するとき、ご質問は、REST、ASMX、WSEまたはWCFと考えています。

ASMX、WSEおよびWCFは、Webサービスの代替プログラミングモデルです。 RESTはプログラミングモデルではありません。それは他の3つのようではありません。

ASMXとWSEでは、WebサービスとSOAPを使用する必要があります。
WCFを使用すると、HTTP経由でWebサービスとSOAP、REST(XMLまたはJSON)、その他のオプションの中でTCPを介したバイナリ形式を使用できます。

これは柔軟で最新の技術なので、WCFをお勧めします。 ASMXは現在Microsoftによって「レガシーテクノロジ」と呼ばれています。それがうまくいかないことを意味するわけではありませんが、アップデートを取得しません。 (WPFとWinFormsのように)。私が知る限り、WSEはもはや主流のサポートにはありません。これらの理由から、私はWSEやASMXで新しいプロジェクトを開始することはお勧めしません。


WCFはASMXよりも一般的であり、その理由から、より複雑に見えることがあります。しかし、いったんいくつかの選択肢を作って、あなたが望むもの(たとえば、HTTPとRESTを選択するか、バイナリとTCPを選択するなど)をゼロにすると、より強力です。 WCFは、クライアントまたは送信者(あなたの場合はWindowsサービスと思われる)および/またはサーバー(WebアプリケーションでホストされているWebサービス)のプログラミングモデルとして使用できます。

クライアント側でWCFを使用しても、サーバー側で使用する必要はなく、逆も同様です。一方、両端でソースコードを制御する場合は、WCFを両側で使用することをお勧めします。

「ウェブアプリケーションのルールを実装する方法」については、あなたが何を求めているのか分かりません。たぶん、あなたがその質問にもっと具体的であれば、誰かが助けてくれるでしょう。


アップデート:追加の説明に基づいて、WCF for .NET 3.5のRESTに関する記事をお勧めします。 PHPでは、RESTスタイルのサービスを実装するのが非常に簡単で、WCFでは.NETについても同様です。今の場合、Windowsサービスはクライアントであり、お客様のネットワーク上にあるサーバーに、更新依頼をリクエストしています。 RESTの原則によれば、コールのセマンティクスに応じて、これらのアウトバウンドリクエストのPUTまたはPOSTを行います。

次に、アウトバウンドPUT/POSTメッセージを受信するために必要なものを構築するために、(大文字)クライアントにいくつかのサンプルサービスコードを提供することができます。

セキュリティは関心事です。あなたはまったく言及していませんでしたが、それは驚くべきことです。セキュリティは最も遅れたものの1つではないので、「後で追加する」ことができます。早期に考える必要があります。プロトコルの選択に影響する可能性があります。たとえば、クライアントとサーバー(後者は大文字のクライアントのネットワークにある)を相互認証する必要がある場合は、SOAPを使用してセキュリティを確保するためのプロトコルオプションを選択できます。セキュアなWebサービス拡張(WS-Secなど)はWCFでよくサポートされていますが、PHPでのこの機能の状態については不明です。

+0

+1は、ASMX/WSEでWCFを推奨しています.-今日、新しいプロジェクトを開始すると、はるかに強力で柔軟性の高い後継者が利用可能になると、ASMXやWSEのような時代遅れの技術が使われています。 –

+0

元の説明ではセキュリティについて言及していませんでしたが、送信される情報は機密扱いであるため、これは間違いなく考えられています。調査やその他の投稿に基づいて、支払う顧客がウェブサービスを実装する方法について最低限の要件を設定する必要があります。 認証が必須です。 – mickyjtwin

+0

私はmarc_sに同意します、WSEからWCFに移動した後、私は戻ってこないでしょう。 –

関連する問題