1

GETリクエストのメソッドを公開するサードパーティのRESTfulWebサービスを利用したいと思います。GETリクエストはWindowsサービス+タイマー内で実行され、すべてJSONを返します。

可能であれば、上位互換性を実装しながら、JSON->POCOの逆シリアル化にWCFライブラリを使用したいと思います。後者は、私が理解している限り、IExtensibleDataObjectを実装するDataContractsを介して実装されます。このアプローチを使用して、サードパーティのRESTful(JSON)Webサービスを利用できますか?

フィードバックをいただければ幸いです。ありがとう。

4

2 に答える 2

1

WCFクライアント側ライブラリを使用してサードパーティのサービスを利用しようとしているようです。WCFクライアント側ライブラリは、WSDLドキュメントから、またはServiceContractクラスと関連するマークされたメソッドOperationContractとクラスを含むアセンブリから、定義されたサービスコントラクトを使用するように設計されています。DataContractクライアント側のライブラリを使用してJSONを使用できますが、サードパーティのサービスをSOAPベースのサービスとして「再作成」して、WSDLを生成したりServiceContract、サービスコントラクトのアセンブリを記述したりする必要があります。

この短いCodeProjectの記事を見て、WCF JSON出力サービスを作成する方法と、WCFでWebHttpBindingを構成する方法を確認してください。

IExtensibleDatObjectJSONでの使用に関しては、この他のCodeProjectの記事にいくつかの良い情報がありますが、サードパーティのサービス契約を管理する必要があるため、シナリオには当てはまらないと思います。

于 2012-08-28T12:40:40.653 に答える
0

IService1.csページ:-

[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "Json/{id}")]
string myfun(string id);

Service1.csページ:-

public string myfun(string id)
{
    string ConnectString = "server=localhost;database=test_local;integrated security=SSPI";
    string QueryString = "select * from tbl_af_register where id=" + id;

    SqlConnection myConnection = new SqlConnection(ConnectString);
    SqlDataAdapter da = new SqlDataAdapter(QueryString, myConnection);
    DataSet ds = new DataSet();
    da.Fill(ds, "TestName");
    string i = ds.Tables[0].Rows[0]["name"].ToString();

    return "your name is " + i;
}

Web.Configファイル内:-

->'system.serviceModel'セクション

<system.serviceModel>
    <services>
      <service name="WcfService2.Service1">
        <!-- Service Endpoints -->
        <!-- Unless fully qualified, address is relative to base address supplied above -->
        <endpoint address ="" binding="webHttpBinding" contract="WcfService2.IService1" behaviorConfiguration="web">
          <!-- 
              Upon deployment, the following identity element should be removed or replaced to reflect the 
              identity under which the deployed service runs.  If removed, WCF will infer an appropriate identity 
              automatically.
          -->
        </endpoint>
      </service>
    </services>

web.configの「behaviors」セクション:-

   <behaviors>
    <endpointBehaviors>
            <behavior name="web">
              <webHttp/>
            </behavior>
          </endpointBehaviors>

注:-この名前「web」は-> BehaviorConfiguration="web"と同じである必要があります

于 2013-10-17T08:12:22.750 に答える