2009-09-03 32 views
0

SOAP HTTPリクエストのまったく新しいものです。誰かが私にそれを遅くするかもしれない事についての幅広い説明を与えることができますか?私はSOAP、WSDLを使用する.NETアプリケーションに取り組んでいます。リクエストは毎回約50秒かかります。 Imはおそらく意味がないので、私の無知を許してください。ページが読み込まれなくても要求を実行できるように、私の最後にできることがありますか?おそらくAJAX。SOAP HTTPリクエストが非常に遅い

--m

編集(2009年9月8日):

OK、私はSOAPUI、その2つのオプションWebServiceSoap12とWebServiceSoapを考え出すを使用しました。最初のものは私の迅速なミリ秒の応答をgovingされ、第二は、私に「400不正な要求を与えている。なぜ私は2番目の1?

は以下

は、あなたが最初に試してみてくださいWSDL

<?xml version="1.0" encoding="utf-8"?> 
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://www.example.com" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://www.example.com" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> 
    <wsdl:types> 
    <s:schema elementFormDefault="qualified" targetNamespace="http://www.example.com"> 
     <s:element name="EventGetList"> 
     <s:complexType> 
      <s:sequence> 
      <s:element minOccurs="0" maxOccurs="1" name="regionId" type="s:string" /> 
      </s:sequence> 
     </s:complexType> 
     </s:element> 
     <s:element name="EventGetListResponse"> 
     <s:complexType> 
      <s:sequence> 
      <s:element minOccurs="0" maxOccurs="1" name="EventGetListResult" type="tns:ArrayOfOpenEvent" /> 
      </s:sequence> 
     </s:complexType> 
     </s:element> 
     <s:complexType name="ArrayOfOpenEvent"> 
     <s:sequence> 
      <s:element minOccurs="0" maxOccurs="unbounded" name="OpenEvent" nillable="true" type="tns:OpenEvent" /> 
     </s:sequence> 
     </s:complexType> 
     <s:complexType name="OpenEvent"> 
     <s:sequence> 
      <s:element minOccurs="0" maxOccurs="1" name="Id" type="s:string" /> 
      <s:element minOccurs="0" maxOccurs="1" name="Title" type="s:string" /> 
      <s:element minOccurs="1" maxOccurs="1" name="EventStart" type="s:dateTime" /> 
      <s:element minOccurs="1" maxOccurs="1" name="EventEnd" type="s:dateTime" /> 
      <s:element minOccurs="0" maxOccurs="1" name="RegionId" type="s:string" /> 
      <s:element minOccurs="0" maxOccurs="1" name="EventSubject" type="s:string" /> 
      <s:element minOccurs="0" maxOccurs="1" name="EventAdditionalDetails" type="s:string" /> 
      <s:element minOccurs="0" maxOccurs="1" name="EventDelivery" type="s:string" /> 
      <s:element minOccurs="0" maxOccurs="1" name="Location" type="tns:EventLocation" /> 
      <s:element minOccurs="1" maxOccurs="1" name="OnlineRegistrations" type="s:boolean" /> 
     </s:sequence> 
     </s:complexType> 
     <s:complexType name="EventLocation"> 
     <s:sequence> 
      <s:element minOccurs="0" maxOccurs="1" name="Name" type="s:string" /> 
      <s:element minOccurs="0" maxOccurs="1" name="Address1" type="s:string" /> 
      <s:element minOccurs="0" maxOccurs="1" name="Address2" type="s:string" /> 
      <s:element minOccurs="0" maxOccurs="1" name="Address3" type="s:string" /> 
      <s:element minOccurs="0" maxOccurs="1" name="Town" type="s:string" /> 
      <s:element minOccurs="0" maxOccurs="1" name="Postcode" type="s:string" /> 
      <s:element minOccurs="0" maxOccurs="1" name="AddressOther" type="s:string" /> 
     </s:sequence> 
     </s:complexType> 
     <s:element name="EventRegisterClient"> 
     <s:complexType> 
      <s:sequence> 
      <s:element minOccurs="0" maxOccurs="1" name="registration" type="tns:OpenEventRegistration" /> 
      </s:sequence> 
     </s:complexType> 
     </s:element> 
     <s:complexType name="OpenEventRegistration"> 
     <s:sequence> 
      <s:element minOccurs="0" maxOccurs="1" name="EventId" type="s:string" /> 
      <s:element minOccurs="0" maxOccurs="1" name="ForeName" type="s:string" /> 
      <s:element minOccurs="0" maxOccurs="1" name="Surname" type="s:string" /> 
      <s:element minOccurs="0" maxOccurs="1" name="TelephoneNumber" type="s:string" /> 
      <s:element minOccurs="0" maxOccurs="1" name="EmailAddress" type="s:string" /> 
     </s:sequence> 
     </s:complexType> 
     <s:element name="EventRegisterClientResponse"> 
     <s:complexType> 
      <s:sequence> 
      <s:element minOccurs="1" maxOccurs="1" name="EventRegisterClientResult" type="s:boolean" /> 
      </s:sequence> 
     </s:complexType> 
     </s:element> 
    </s:schema> 
    </wsdl:types> 
    <wsdl:message name="EventGetListSoapIn"> 
    <wsdl:part name="parameters" element="tns:EventGetList" /> 
    </wsdl:message> 
    <wsdl:message name="EventGetListSoapOut"> 
    <wsdl:part name="parameters" element="tns:EventGetListResponse" /> 
    </wsdl:message> 
    <wsdl:message name="EventRegisterClientSoapIn"> 
    <wsdl:part name="parameters" element="tns:EventRegisterClient" /> 
    </wsdl:message> 
    <wsdl:message name="EventRegisterClientSoapOut"> 
    <wsdl:part name="parameters" element="tns:EventRegisterClientResponse" /> 
    </wsdl:message> 
    <wsdl:portType name="WebServiceSBSpEventsSoap"> 
    <wsdl:operation name="EventGetList"> 
     <wsdl:input message="tns:EventGetListSoapIn" /> 
     <wsdl:output message="tns:EventGetListSoapOut" /> 
    </wsdl:operation> 
    <wsdl:operation name="EventRegisterClient"> 
     <wsdl:input message="tns:EventRegisterClientSoapIn" /> 
     <wsdl:output message="tns:EventRegisterClientSoapOut" /> 
    </wsdl:operation> 
    </wsdl:portType> 
    <wsdl:binding name="WebServiceSBSpEventsSoap" type="tns:WebServiceSBSpEventsSoap"> 
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" /> 
    <wsdl:operation name="EventGetList"> 
     <soap:operation soapAction="http://www.example.com/EventGetList" style="document" /> 
     <wsdl:input> 
     <soap:body use="literal" /> 
     </wsdl:input> 
     <wsdl:output> 
     <soap:body use="literal" /> 
     </wsdl:output> 
    </wsdl:operation> 
    <wsdl:operation name="EventRegisterClient"> 
     <soap:operation soapAction="http://www.example.com/EventRegisterClient" style="document" /> 
     <wsdl:input> 
     <soap:body use="literal" /> 
     </wsdl:input> 
     <wsdl:output> 
     <soap:body use="literal" /> 
     </wsdl:output> 
    </wsdl:operation> 
    </wsdl:binding> 
    <wsdl:binding name="WebServiceSBSpEventsSoap12" type="tns:WebServiceSBSpEventsSoap"> 
    <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" /> 
    <wsdl:operation name="EventGetList"> 
     <soap12:operation soapAction="http://www.example.com/EventGetList" style="document" /> 
     <wsdl:input> 
     <soap12:body use="literal" /> 
     </wsdl:input> 
     <wsdl:output> 
     <soap12:body use="literal" /> 
     </wsdl:output> 
    </wsdl:operation> 
    <wsdl:operation name="EventRegisterClient"> 
     <soap12:operation soapAction="http://www.example.com/EventRegisterClient" style="document" /> 
     <wsdl:input> 
     <soap12:body use="literal" /> 
     </wsdl:input> 
     <wsdl:output> 
     <soap12:body use="literal" /> 
     </wsdl:output> 
    </wsdl:operation> 
    </wsdl:binding> 
    <wsdl:service name="WebServiceSBSpEvents"> 
    <wsdl:port name="WebServiceSBSpEventsSoap" binding="tns:WebServiceSBSpEventsSoap"> 
     <soap:address location="http://www.example.com/webserviceexternal/WebServiceSBSpEvents.asmx" /> 
    </wsdl:port> 
    <wsdl:port name="WebServiceSBSpEventsSoap12" binding="tns:WebServiceSBSpEventsSoap12"> 
     <soap12:address location="http://www.example.com/webserviceexternal/WebServiceSBSpEvents.asmx" /> 
    </wsdl:port> 
    </wsdl:service> 
</wsdl:definitions> 
+0

減速する一般的な理由はありませんが、いくつかの特定のものがあります。残念ながら、あなたはコードを投稿していないので、コードに何が間違っているのかわかりません。 –

答えて

1

であることを必要とするでしょうあなたの主な関心事は、サーバー側または(お客様の)クライアント側で遅延が発生した場合です。

遅延が発生した場合は、遅延の原因を特定することができます。サーバー側では(結果を作成するための複雑な操作である可能性がありますが、サーバーの速度が遅いなどの可能性があります)、次にcで処理する回避策を探すことができますlient、例えば:

  • 最初のページを作成し、定期的な間隔でのサービスの先行からデータを引っ張って
  • を示唆したように、その後、AJAXを介してサービスからデータを引き出し、ローカルキャッシュに格納そこからあなたがなど
  • ...

遅延は、クライアント側で起こっている場合は、あなたが根本的な原因を見つけるために試してみてください、あなたのページの構築(例:ネットワーク構成、逆引きなどでタイムアウト)と、それを修正;)


編集:が投稿されたWSDLを考えると、Webサービスは2つのバリエーション、「デフォルト」SOAP用と1のために自分自身を提供していますSOAP 1.2。 400レスポンスは、クライアントが非標準に準拠した方法でリクエストを発行していることを示しますが、サービス終了がwsdlで提供するプロトコルバージョンに対して正しく設定されていない可能性もあります。

あなたはどちらか一方が必要な理由について、答えは簡単です:両方とも全く同じ方法を提供するので、必要なのは1つだけです。 になる可能性があります。遅れはクライアントが最初に無効なバージョンを数回使用していて、しばらくしてから別のバージョンに切り替えることによって引き起こされているということですか? SOAPUIが1.2バージョンでうまくいく場合、私はクライアントにそれを使用するように指示し、それがスピードアップするかどうかを確認しようとします。

+0

が死んでいる可能性のあるリンクが見つかった場合、その原因になります。 madphp

+0

非常にありそうもない - ネームスペースURIは、ネームスペースを一意に識別するためだけに使用されているため、実際のコンテンツを実際に指す必要はありません。まだ多くの人が名前空間を説明するURIアドレスに読み取り可能な文書を置いていますが、XMLパーサー/ツールはそれを実際に見たいとは思っていません。 –