12

希望どおりに機能する WCF サービスを正常に作成しました。唯一の問題は、WCF サービスが実行されている実際のマシン以外から Web サービスにアクセスできないことです。

Cassini Web サービスはローカルのみであることを理解しています。デスクトップ アプリケーションでサービスが必要なときはいつでも、顧客のシステムで WCF サービスを実行できるようにしたいと考えています。

顧客が .NET Framework 以外のものをインストールせずにこれを行う簡単な方法を知っている人はいますか?

ありがとう

4

5 に答える 5

12

セルフホスティングを使用して、独自のアプリ / サービスでホストします。既に WCF サービスがある場合は、Windows サービスを作成してそこでホストするのは簡単なことです (リンクを参照)。

于 2012-06-19T20:50:27.407 に答える
3

WCF は、サービスをホストするために Web サーバーを必要としません。ただし、コンソール/ホスト アプリケーションまたは Windows サービスのいずれかが実行されている必要があります。その後、起動時に、ServiceHost クラスのインスタンスを作成してサービスを公開できます。http://msdn.microsoft.com/en-us/library/system.servicemodel.servicehost.aspxで MSDN のサンプルを参照してください。

于 2012-06-19T20:50:33.417 に答える
2

WCF サービスを実行するには、ホスト プロセスが必要です。それを回避する方法はありません。

ホスト プロセスが (要件、展開モデル、ネットワークの制約など、ケースに適用されるものに応じて) デスクトップ アプリケーションと同じである場合は、サービスをデスクトップ アプリケーションに埋め込みます。この手法は、"インプロセス" WCF ホスティングと呼ばれます。これは基本的に、クライアント アプリケーションのサービスである「セルフ ホスティング」です。このソリューションを採用する場合は、より最適な IPC (net.pipe) バインディングを使用し、潜在的なネットワーク/ファイアウォールの考慮事項をすべて削除してください。

サービスを別のコンピューターまたは別のプロセスで実行する必要がある場合は、ホスト アプリケーションを使用または実装する必要があります。IIS、WAS、AppFabric、および WCFServiceHost (運用グレードのホストではない) は、すぐに使用できるホストの例です。それらを使用できない、または使用したくない場合は、独自のホスト アプリケーションを実装し、その中に WCF サービスを "セルフ ホスト" する必要があります。アプリケーションは、コンソール、デスクトップ、Windows サービスなど、何でもかまいません。ホストを起動する方法とタイミングについてユーザーに心配させたくない場合は、ホストが常に実行されていることを確認してください。自動的に開始される Windows サービスをお勧めします。

サービスをクライアントとは別のコンピューターで実行する必要がある場合は、サーバーとクライアントの間のすべてのネットワーク デバイスとソフトウェア (ファイアウォール、ルーター、ゲートウェイなど) が、バインドが機能するように正しく構成されていることを確認してください。バインディングが動作するプロトコル (http、tcp など) とポート (80、443、808 など) に注意してください。

于 2012-06-23T02:13:51.510 に答える
1

以下の記事からホスティングのステップを試すことができます。

http://www.codeproject.com/Articles/34668/GeoPlaces-Hybrid-smart-client-involving-RESTful-WC

サービスをテストするには、サービスにリクエストを送信し、レスポンスを確認します。サービス メタデータを公開していない場合、WSDL をダウンロードできない場合があります。

ビール!

于 2012-06-22T13:11:42.303 に答える
0

ここに提案があるかもしれませんが、適切でない場合は無視してください。@driis が述べたように、自己ホスト型サービスを使用してください。これは、シナリオに最適なオプションです。WCF サービス内で HTML ページをホストすることについて...はい、可能ですが、これは簡単な解決策ではありません。一言でまとめると、カスタム メッセージ フォーマッタを作成し、WCF が提供する既定のメッセージ フォーマッタをバイパスする必要があります。WebHttpBehavior から継承する必要がある HtmlBehavior を作成し、BehaviorExtensionElement から継承する必要がある HtmlBehaviorExtension を作成し、最後に IDispatchMessageFormatter を実装する HtmlFormater を作成します。次のリンクには、カスタムフォーマッタに関する優れた記事があります。

于 2012-06-28T19:31:18.830 に答える