Subject: RE: .net SOAP toolkit performance for SOAP deserialization
Date: Tue, 16 Nov 2004 22:25:02 -0800
Lines: 380
Message-ID: <
[email protected]>
MIME-Version: 1.0
Content-Type: text/plain;
charset="Utf-8"
Content-Transfer-Encoding: 7bit
X-Newsreader: Microsoft CDO for Windows 2000
Content-Class: urn:content-classes:message
Importance: normal
Priority: normal
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.0
Newsgroups: microsoft.public.dotnet.framework.aspnet.webservices
NNTP-Posting-Host: TK2MSFTNGXA03.phx.gbl 10.40.1.29
Path: cpmsftngxa10.phx.gbl!TK2MSFTNGXA01.phx.gbl!TK2MSFTNGXA03.phx.gbl
Xref: cpmsftngxa10.phx.gbl microsoft.public.dotnet.framework.aspnet.webservices:26656
X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.webservices
Hi Dan.
Thanks for the help.
I am pasting the WSDL of the service below. The operation that is most
problematic is "getAirfareQuotes"
Meanwhile we still are trying to get performance numbers for Java clients. I
will update forum once we have some consistent results.
regards
- prabhu
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:s1="urn:BeanService"
xmlns:http="
http://schemas.xmlsoap.org/wsdl/http/"
xmlns:soap="
http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:s="
http://www.w3.org/2001/XMLSchema" xmlns:s2="
http://xxxxx"
xmlns:soapenc="
http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns="
http://linuxdev.travel2.com/api/services/api"
xmlns:tm="
http://microsoft.com/wsdl/mime/textMatching/"
xmlns:mime="
http://schemas.xmlsoap.org/wsdl/mime/"
targetNamespace="
http://xxxx.com/api/services/api"
xmlns:wsdl="
http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<s:schema xmlns="
http://www.w3.org/2001/XMLSchema"
targetNamespace="
http://xxxxx.com/api/services/api">
<s:import namespace="
http://schemas.xmlsoap.org/soap/encoding/" />
<s:complexType name="ArrayOf_xsd_string">
<s:complexContent mixed="false">
<s:restriction base="soapenc:Array">
<s:attribute wsdl:arrayType="s:string[]" ref="soapenc:arrayType"
/>
</s:restriction>
</s:complexContent>
</s:complexType>
<s:complexType name="ArrayOf_tns1_SeatAvailability">
<s:complexContent mixed="false">
<s:restriction base="soapenc:Array">
<s:attribute wsdl:arrayType="s1:SeatAvailability[]"
ref="soapenc:arrayType" />
</s:restriction>
</s:complexContent>
</s:complexType>
<s:complexType name="ArrayOf_tns1_Sector">
<s:complexContent mixed="false">
<s:restriction base="soapenc:Array">
<s:attribute wsdl:arrayType="s1:Sector[]"
ref="soapenc:arrayType" />
</s:restriction>
</s:complexContent>
</s:complexType>
<s:complexType name="ArrayOf_tns1_Leg">
<s:complexContent mixed="false">
<s:restriction base="soapenc:Array">
<s:attribute wsdl:arrayType="s1:Leg[]" ref="soapenc:arrayType" />
</s:restriction>
</s:complexContent>
</s:complexType>
<s:complexType name="ArrayOf_tns1_RuleInfo">
<s:complexContent mixed="false">
<s:restriction base="soapenc:Array">
<s:attribute wsdl:arrayType="s1:RuleInfo[]"
ref="soapenc:arrayType" />
</s:restriction>
</s:complexContent>
</s:complexType>
<s:complexType name="ArrayOf_tns1_StringArray">
<s:complexContent mixed="false">
<s:restriction base="soapenc:Array">
<s:attribute wsdl:arrayType="s1:StringArray[]"
ref="soapenc:arrayType" />
</s:restriction>
</s:complexContent>
</s:complexType>
<s:complexType name="ArrayOf_tns1_FareDetail">
<s:complexContent mixed="false">
<s:restriction base="soapenc:Array">
<s:attribute wsdl:arrayType="s1:FareDetail[]"
ref="soapenc:arrayType" />
</s:restriction>
</s:complexContent>
</s:complexType>
</s:schema>
<s:schema xmlns="
http://www.w3.org/2001/XMLSchema"
targetNamespace="urn:BeanService">
<s:import namespace="
http://schemas.xmlsoap.org/soap/encoding/" />
<s:complexType name="FareId">
<s:sequence>
<s:element name="contractId" nillable="true" type="s:string" />
<s:element name="contractedFare" type="s:boolean" />
<s:element name="destination" nillable="true" type="s:string" />
<s:element name="issuedDate" type="s:long" />
<s:element name="origin" nillable="true" type="s:string" />
<s:element name="publishedFare" type="s:boolean" />
<s:element name="publishedFareBasis" nillable="true"
type="s:string" />
<s:element name="routeRef" type="s:int" />
</s:sequence>
</s:complexType>
<s:complexType name="SearchParams">
<s:sequence>
<s:element name="airlineCode" nillable="true" type="s:string" />
<s:element name="cabinClassCode" nillable="true" type="s:string" />
<s:element name="departureDate" type="s:long" />
<s:element name="destinationCode" nillable="true" type="s:string" />
<s:element name="numAdults" type="s:int" />
<s:element name="numChildren" type="s:int" />
<s:element name="originCode" nillable="true" type="s:string" />
<s:element name="quickFareCommand" nillable="true" type="s:string"
/>
<s:element name="returnDate" type="s:long" />
<s:element name="usingQuickFare" type="s:boolean" />
</s:sequence>
</s:complexType>
<s:complexType name="AvailabilityRequest">
<s:sequence>
<s:element name="fareId" nillable="true" type="s1:FareId" />
<s:element name="searchParams" nillable="true"
type="s1:SearchParams" />
<s:element name="threeDaySearch" type="s:boolean" />
</s:sequence>
</s:complexType>
<s:complexType name="AgentId">
<s:sequence>
<s:element name="accountCode" nillable="true" type="s:string" />
<s:element name="atol" type="s:boolean" />
<s:element name="branchNumber" type="s:int" />
<s:element name="consortiaMemberId" type="s:int" />
</s:sequence>
</s:complexType>
<s:complexType name="RuleInfo">
<s:sequence>
<s:element name="freeText" nillable="true" type="s:string" />
<s:element name="name" nillable="true" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="BasicSector">
<s:sequence>
<s:element name="airlineCode" nillable="true" type="s:string" />
<s:element name="arrivalDateAndTime" type="s:long" />
<s:element name="departureDateAndTime" type="s:long" />
<s:element name="destinationCode" nillable="true" type="s:string" />
<s:element name="flightDurationHrs" type="s:int" />
<s:element name="flightDurationMins" type="s:int" />
<s:element name="flightNumber" nillable="true" type="s:string" />
<s:element name="operatorCode" nillable="true" type="s:string" />
<s:element name="originCode" nillable="true" type="s:string" />
<s:element name="touchDowns" type="s:int" />
</s:sequence>
</s:complexType>
<s:complexType name="SeatAvailability">
<s:sequence>
<s:element name="bookClass" nillable="true" type="s:string" />
<s:element name="numSeatsAvailable" type="s:int" />
</s:sequence>
</s:complexType>
<s:complexType name="Sector">
<s:complexContent mixed="false">
<s:extension base="s1:BasicSector">
<s:sequence>
<s:element name="aircraftTypeCode" nillable="true"
type="s:string" />
<s:element name="destinationName" nillable="true"
type="s:string" />
<s:element name="originName" nillable="true" type="s:string" />
<s:element name="remarks" nillable="true" type="s:string" />
<s:element name="seatAvailability" nillable="true"
type="tns:ArrayOf_tns1_SeatAvailability" />
<s:element name="statusStr" nillable="true" type="s:string" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="Leg">
<s:sequence>
<s:element name="journeyDurationHrs" type="s:int" />
<s:element name="journeyDurationMins" type="s:int" />
<s:element name="sectors" nillable="true"
type="tns:ArrayOf_tns1_Sector" />
</s:sequence>
</s:complexType>
<s:complexType name="CustomerFareBreakdown">
<s:sequence>
<s:element name="adultCount" type="s:int" />
<s:element name="allAdultsFare" type="s:double" />
<s:element name="allAdultsINA" type="s:double" />
<s:element name="allAdultsTax" type="s:double" />
<s:element name="allChildrenFare" type="s:double" />
<s:element name="allChildrenINA" type="s:double" />
<s:element name="allChildrenTax" type="s:double" />
<s:element name="childCount" type="s:int" />
<s:element name="partyTotal" type="s:double" />
<s:element name="perAdultFare" type="s:int" />
<s:element name="perAdultINA" type="s:double" />
<s:element name="perAdultTax" type="s:double" />
<s:element name="perAdultTotal" type="s:double" />
<s:element name="perChildFare" type="s:int" />
<s:element name="perChildINA" type="s:double" />
<s:element name="perChildTax" type="s:double" />
<s:element name="perChildTotal" type="s:double" />
</s:sequence>
</s:complexType>
<s:complexType name="RequoteAirfareRequest">
<s:sequence>
<s:element name="agentId" nillable="true" type="s1:AgentId" />
<s:element name="consumerFacing" type="s:boolean" />
<s:element name="fareId" nillable="true" type="s1:FareId" />
<s:element name="inboundClasses" nillable="true" type="s:string" />
<s:element name="inboundLeg" nillable="true" type="s1:Leg" />
<s:element name="originalQuote" nillable="true"
type="s1:CustomerFareBreakdown" />
<s:element name="outboundClasses" nillable="true" type="s:string" />
<s:element name="outboundLeg" nillable="true" type="s1:Leg" />
<s:element name="searchParams" nillable="true"
type="s1:SearchParams" />
</s:sequence>
</s:complexType>
<s:complexType name="AgentFareBreakdown">
<s:sequence>
<s:element name="INA" type="s:double" />
<s:element name="bookingId" nillable="true" type="s1:BookingId" />
<s:element name="nettDue" type="s:double" />
<s:element name="nettFare" type="s:double" />
<s:element name="paidAccrued" type="s:double" />
<s:element name="tax" type="s:double" />
</s:sequence>
</s:complexType>
<s:complexType name="Availability">
<s:sequence>
<s:element name="eitherLegMissing" type="s:boolean" />
<s:element name="inboundClasses" nillable="true"
type="tns:ArrayOf_xsd_string" />
<s:element name="inboundLegMissing" type="s:boolean" />
<s:element name="inboundLegs" nillable="true"
type="tns:ArrayOf_tns1_Leg" />
<s:element name="outboundClasses" nillable="true"
type="tns:ArrayOf_xsd_string" />
<s:element name="outboundLegMissing" type="s:boolean" />
<s:element name="outboundLegs" nillable="true"
type="tns:ArrayOf_tns1_Leg" />
<s:element name="returnTrip" type="s:boolean" />
</s:sequence>
</s:complexType>
<s:complexType name="StringArray">
<s:sequence>
<s:element name="value" nillable="true"
type="tns:ArrayOf_xsd_string" />
</s:sequence>
</s:complexType>
<s:complexType name="FareDetail">
<s:sequence>
<s:element name="agentBreakdown" nillable="true"
type="s1:AgentFareBreakdown" />
<s:element name="airlineCode" nillable="true" type="s:string" />
<s:element name="availability" nillable="true"
type="s1:Availability" />
<s:element name="bookable" type="s:boolean" />
<s:element name="bookingClasses" nillable="true" type="s:string" />
<s:element name="cabinClassCode" nillable="true" type="s:string" />
<s:element name="destinationCode" nillable="true" type="s:string" />
<s:element name="destinationName" nillable="true" type="s:string" />
<s:element name="displayableRules" nillable="true"
type="tns:ArrayOf_tns1_RuleInfo" />
<s:element name="fareBreakdown" nillable="true"
type="s1:CustomerFareBreakdown" />
<s:element name="fareId" nillable="true" type="s1:FareId" />
<s:element name="fareSeasonFromDate" type="s:long" />
<s:element name="fareSeasonToDate" type="s:long" />
<s:element name="inboundAvailable" type="s:boolean" />
<s:element name="originCode" nillable="true" type="s:string" />
<s:element name="originName" nillable="true" type="s:string" />
<s:element name="outboundAvailable" type="s:boolean" />
<s:element name="touchdownCount" type="s:int" />
<s:element name="transitAirports" nillable="true"
type="tns:ArrayOf_tns1_StringArray" />
<s:element name="validity" nillable="true" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="AirfareQuotesResponse">
<s:sequence>
<s:element name="fareDetails" nillable="true"
type="tns:ArrayOf_tns1_FareDetail" />
<s:element name="moreAvailable" type="s:boolean" />
</s:sequence>
</s:complexType>
<s:complexType name="AirfareQuotesRequest">
<s:sequence>
<s:element name="agentId" nillable="true" type="s1:AgentId" />
<s:element name="availabilityRequired" type="s:boolean" />
<s:element name="consumerFacing" type="s:boolean" />
<s:element name="priorFareId" nillable="true" type="s1:FareId" />
<s:element name="searchParams" nillable="true"
type="s1:SearchParams" />
</s:sequence>
</s:complexType>
<s:complexType name="NonAtolAgentFareBreakdown">
<s:complexContent mixed="false">
<s:extension base="s1:AgentFareBreakdown">
<s:sequence>
<s:element name="commission" type="s:double" />
<s:element name="grossFare" type="s:double" />
<s:element name="grossTotal" type="s:double" />
<s:element name="nettTotal" type="s:double" />
<s:element name="vatOnCommission" type="s:double" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
</s:schema>
<s:schema xmlns="
http://www.w3.org/2001/XMLSchema"
targetNamespace="
http://xxx.com">
<s:import namespace="
http://schemas.xmlsoap.org/soap/encoding/" />
<s:complexType name="APIException">
<s:sequence />
</s:complexType>
</s:schema>
</wsdl:types>
<wsdl:message name="getAirfareQuotesRequest">
<wsdl
art name="request" type="s1:AirfareQuotesRequest" />
</wsdl:message>
<wsdl:message name="getAirfareQuotesResponse">
<wsdl
art name="getAirfareQuotesReturn" type="s1:AirfareQuotesResponse"
/>
</wsdl:message>
<wsdl:message name="APIException">
<wsdl
art name="fault" type="s2:APIException" />
</wsdl:message>
<wsdl
ortType name="API">
<wsdl
peration name="getAirfareQuotes" parameterOrder="request">
<wsdl:input name="getAirfareQuotesRequest"
message="tns:getAirfareQuotesRequest" />
<wsdl
utput name="getAirfareQuotesResponse"
message="tns:getAirfareQuotesResponse" />
<wsdl:fault name="APIException" message="tns:APIException" />
</wsdl
peration>
</wsdl
ortType>
<wsdl:binding name="apiSoapBinding" type="tns:API">
<soap:binding transport="
http://schemas.xmlsoap.org/soap/http"
style="rpc" />
<wsdl
peration name="getAirfareQuotes">
<soap
peration soapAction="" />
<wsdl:input name="getAirfareQuotesRequest">
<soap:body use="encoded" namespace="
http://websrv.fbse.travel2.com"
encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/" />
</wsdl:input>
<wsdl
utput name="getAirfareQuotesResponse">
<soap:body use="encoded"
namespace="
http://someserver.com/api/services/api"
encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/" />
</wsdl
utput>
<wsdl:fault name="APIException">
<soap:fault use="encoded"
namespace="
http://someserver.com/api/services/api"
encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/" />
</wsdl:fault>
</wsdl
peration>
</wsdl:binding>
<wsdl:service name="APIService">
<wsdl
ort name="api" binding="tns:apiSoapBinding">
<soap:address location="
http://testapi_host/api/services/api" />
</wsdl
ort>
</wsdl:service>
</wsdl:definitions>
Dan Rogers said:
In general a 250K response won't cause undue perf issues, nor will nesting
of a few levels. I would start to suspect constructor issues in the
classes that the XML maps to, but without a neutral test based on a schema,
and code output from a tool like XSD.exe or XsdObjectGen.exe, I'm unable to
troubleshoot this further.
If you can share schema or a reproducable end point where I can try this
out, I can help you more.
Regards,
Dan