2

私はWCFが初めてで、wcfでいくつかのサービスを書きました。現在はイントラネットで公開されており、一部のアプリケーションは既にそのサービスを使用しています。現時点では、他の開発者向けに入力パラメーター/データ型と出力パラメーターに関するドキュメントを作成する必要があります。.Net プラットフォームを使用してサービスを利用すれば問題ありません。WebReferences フォルダーにサービス/クラスが自動的に作成され、Intellisense は完全に機能します。

しかし、ユーザーが PHP または従来の ASP を使用している場合、そのようには機能しません。彼らは正確な名前とパラメーターの型を知っている必要があり、私はサービスを非常に注意深く文書化する必要があります。

以下のように WSDL を使用すると、使用したいサービスのデータ型とパラメーターをどのように知ることができますか? WSDL に表示されない場合、これらの情報はどこで確認できますか? ドキュメントなしで WCF サービスを提供された場合、そのサービスの使用方法をどのように知ることができますか?

どうもありがとう。

これは、サービスに関する私のインターフェースです

[ServiceContract]
public interface IEmail
{
    [OperationContract]
    bool InsertEmail(string Subject, string SentFrom, string SentTo, int ApplicationID, int TemplateID, string DataText);
}

以下は、私のサービスに関する正確な WSDL 情報です。

    <?xml version="1.0" encoding="utf-8" ?> 
- <wsdl:definitions name="Email" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:tns="http://tempuri.org/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
- <wsdl:types>
- <xsd:schema targetNamespace="http://tempuri.org/Imports">
  <xsd:import schemaLocation="http://myservice/Email.svc?xsd=xsd0" namespace="http://tempuri.org/" /> 
  <xsd:import schemaLocation="http://myservice/Email.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/" /> 
  </xsd:schema>
  </wsdl:types>
- <wsdl:message name="IEmail_InsertEmail_InputMessage">
  <wsdl:part name="parameters" element="tns:InsertEmail" /> 
  </wsdl:message>
- <wsdl:message name="IEmail_InsertEmail_OutputMessage">
  <wsdl:part name="parameters" element="tns:InsertEmailResponse" /> 
  </wsdl:message>
- <wsdl:portType name="IEmail">
- <wsdl:operation name="InsertEmail">
  <wsdl:input wsaw:Action="http://tempuri.org/IEmail/InsertEmail" message="tns:IEmail_InsertEmail_InputMessage" /> 
  <wsdl:output wsaw:Action="http://tempuri.org/IEmail/InsertEmailResponse" message="tns:IEmail_InsertEmail_OutputMessage" /> 
  </wsdl:operation>
  </wsdl:portType>
- <wsdl:binding name="BasicHttpBinding_IEmail" type="tns:IEmail">
  <soap:binding transport="http://schemas.xmlsoap.org/soap/http" /> 
- <wsdl:operation name="InsertEmail">
  <soap:operation soapAction="http://tempuri.org/IEmail/InsertEmail" style="document" /> 
- <wsdl:input>
  <soap:body use="literal" /> 
  </wsdl:input>
- <wsdl:output>
  <soap:body use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
  </wsdl:binding>
- <wsdl:service name="Email">
- <wsdl:port name="BasicHttpBinding_IEmail" binding="tns:BasicHttpBinding_IEmail">
  <soap:address location="http://myservice/Email.svc" /> 
  </wsdl:port>
  </wsdl:service>
  </wsdl:definitions>
4

1 に答える 1

2

サービスが WSDL で使用するすべての型を表示できない場合、これは WCF が作成する WSDL が多くの場合 (おそらく常に) いくつかのビットに分割されているためです。これらの他のビットは、メインの WSDL からリンクされています。

を参照するとhttp://myservice/Email.svc?wsdl、質問に入力した WSDL が表示されます。ここでは、他の 2 つのスキーマへのリンクを見ることができます -http://myservice/Email.svc?xsd=xsd0http://myservice/Email.svc?xsd=xsd1. これらを参照すると、探しているタイプ情報が見つかります。

于 2012-08-16T14:55:54.760 に答える