-3

WCF サービスを作成しました。WCF サービスからクライアントにデータベース レコードを返したいと考えています。

私のクライアント アプリケーションは、そのレコードが Web ページに表示されることを取得します。クライアントは、PHP、JAVA、.NET などの任意のプラットフォームでアプリケーションを開発します。彼らは私の WCF サービスを使用して詳細を取得します。

XMLまたはその他の方法を使用して、WCFサービスからクライアントアプリケーションにデータを返す方法は?

私の疑問を解決するために、これに関する提案/コードスニペットを提供してください。

4

2 に答える 2

2

WCF をデプロイするbasicHttpBindingと、WCF サービスがレガシー ASMX Web サービスとして公開されるため、古いクライアントは新しいサービスで動作し、SOAP プロトコル (XML ベース) でデータを公開できます。wsHttpBinding(より高度な)で同様のことを行うこともできます。PHP、Java、および NET から使用するため、基本的なものをお勧めします。よりシンプルなものを選ぶとうまくいくかもしれません。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.serviceModel>
        <bindings>
            <!—- Default binding for basicHttpBinding -->
            <basicHttpBinding>
                <binding name="myBindingConfiguration1" closeTimeout="00:01:00" />
                <binding name="myBindingConfiguration2" closeTimeout="00:02:00" />
                <binding closeTimeout="00:03:00" />  
            </basicHttpBinding>
        </bindings>
        <services>
            <!—- change to your namespace & contract details -->
            <service name="MyNamespace.myServiceType">
                <endpoint 
                 address="myAddress" binding="basicHttpBinding" 
                 bindingConfiguration="myBindingConfiguration1"
                 contract="MyContract"  />
                <endpoint 
                 address="myAddress2" binding="basicHttpBinding" 
                 bindingConfiguration="myBindingConfiguration2"
                 contract="MyContract" />
            </service>
        </services>
     </system.serviceModel>
</configuration>

詳細はこちら

データを REST プロトコルとして公開するように WCF を構成することもできます ( WebHttpBinding)。このオプションは、WCF の能力を制限します。JavaScript から WCF を使用する場合は、試してみてください。

于 2012-11-28T07:20:19.690 に答える
0

使用できる最善のアプローチは、相互運用可能なxml、json会話用に設計されたWebHttpBindingを使用してRESTfulWCFサービスを公開することです。次に、任意のクライアントがエンドポイントにHTTPリクエストを発行し、プレーンなREST結果を取得できます。この手法の欠点の1つは、ここで説明されているWCFRESTfulプログラミングモデルに精通している必要があることです。http ://msdn.microsoft.com/en-us/magazine/dd315413.aspxこのトピックはこちらhttp://social.msdn.microsoft.com/Forums/en-US/wcf/thread/90716451-fd29-4917-a5ca-f7f3bcaa96c9

2番目のアプローチは、その単純さのためにおそらくもっと好きになるでしょうが、PHP組み込みのSoapClientを介してアクセスされるBasicHttpBindingサービスを使用することです。PHPクライアントへの.Netデータ型の送信を説明する優れた情報源があります。したがって、データに対して同じアプローチを使用できます。オブジェクトの配列をWCFからPHPに渡す-情報を抽出する[DataContract] / [DataMember]属性を使用して、データコントラクトクラスを注意深く適切に設計してください。

そして、以下はPHP WCF / BasicHttpIntegrationスターター向けです:https ://github.com/geersch/WcfServicesWithPhp5

REST とSOAPRESTがWCFの能力を制限しているのは事実ではありません。実際には、WebHttpBindingの制限のために、一部の高度なWCF機能に対して制限があります。しかし、RESTは、SOAPのように、どのRPCプロトコルよりもはるかに相互運用性があります。さらに、その場合は軽量のJSONサポートを利用できます。したがって、決定は、ニーズとシステムの全体的な要件/アーキテクチャによって異なります。同意します。オブジェクトのようなデータセットを少数のクライアントに配信する必要がある場合(特に、インターネット経由で公開されていないローカルシステムの場合)、簡単にするために、BasicHttpBinding/SOAPが最適です。

もう1つ言及すべきことは、多くのWebサービスがRESTfulであるか、RESTに変換されていることです。マイクロソフトもそうです。これは、データをクライアントのブラウザーに直接配信するための最良の方法です(JSが処理します)。

于 2012-11-28T08:53:48.640 に答える