Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > ASP .Net Web Services > .net SOAP toolkit performance for SOAP deserialization

Reply
Thread Tools

.net SOAP toolkit performance for SOAP deserialization

 
 
Prabhu
Guest
Posts: n/a
 
      11-12-2004
Hi All.
We are building an ASP.net application using C# & .net 1.1 framework.
The ASP.net application consumes web services (Java/Apache Axis
implementation) and we are facing issues that the application is very slow.

Initially we suspected network and server side responses as culprits.
But on further investigation (we override GetWebResponse and GetWebRequest
methods SOAPClient) we have found that the application is spending
considerable amount of time (1+ minute) in deserializing the SOAP response
from the server.

We are using VS.net 2003 for generating the proxies.

Has anyone faced such performance issues and any suggestions?

 
Reply With Quote
 
 
 
 
Dan Rogers
Guest
Posts: n/a
 
      11-15-2004
Hi,

How big is the response? Are there other implementations of clients that
deserialize more rapidly?

Regards

Dan Rogers
Microsoft Corporation
--------------------
>Thread-Topic: .net SOAP toolkit performance for SOAP deserialization
>thread-index: AcTIpKogGJkADvEfQymOXvVBC0AhVg==
>X-WBNR-Posting-Host: 203.123.182.26
>From: =?Utf-8?B?UHJhYmh1?= <>
>Subject: .net SOAP toolkit performance for SOAP deserialization
>Date: Fri, 12 Nov 2004 02:45:02 -0800
>Lines: 15
>Message-ID: <476D5BFD-4063-4233-9CE4->
>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.webservic es
>NNTP-Posting-Host: TK2MSFTNGXA03.phx.gbl 10.40.1.29
>Path: cpmsftngxa10.phx.gbl!TK2MSFTNGXA03.phx.gbl
>Xref: cpmsftngxa10.phx.gbl

microsoft.public.dotnet.framework.aspnet.webservic es:26495
>X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.webservic es
>
>Hi All.
>We are building an ASP.net application using C# & .net 1.1 framework.
>The ASP.net application consumes web services (Java/Apache Axis
>implementation) and we are facing issues that the application is very

slow.
>
>Initially we suspected network and server side responses as culprits.
>But on further investigation (we override GetWebResponse and GetWebRequest
>methods SOAPClient) we have found that the application is spending
>considerable amount of time (1+ minute) in deserializing the SOAP response
>from the server.
>
>We are using VS.net 2003 for generating the proxies.
>
>Has anyone faced such performance issues and any suggestions?
>
>


 
Reply With Quote
 
 
 
 
Prabhu
Guest
Posts: n/a
 
      11-16-2004
Hi.
The responses are on an avg about 250K.
But the object nesting is quite deep (4 or 5 levels) in the WSDL (and the
proxy classes generated).

We are sort of first clients to these services, but there are some stubs
written in Java. We will try to measure deserialization performance in these
clients.

regards




"Dan Rogers" wrote:

> Hi,
>
> How big is the response? Are there other implementations of clients that
> deserialize more rapidly?
>
> Regards
>
> Dan Rogers
> Microsoft Corporation
> --------------------
> >Thread-Topic: .net SOAP toolkit performance for SOAP deserialization
> >thread-index: AcTIpKogGJkADvEfQymOXvVBC0AhVg==
> >X-WBNR-Posting-Host: 203.123.182.26
> >From: =?Utf-8?B?UHJhYmh1?= <>
> >Subject: .net SOAP toolkit performance for SOAP deserialization
> >Date: Fri, 12 Nov 2004 02:45:02 -0800
> >Lines: 15
> >Message-ID: <476D5BFD-4063-4233-9CE4->
> >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.webservic es
> >NNTP-Posting-Host: TK2MSFTNGXA03.phx.gbl 10.40.1.29
> >Path: cpmsftngxa10.phx.gbl!TK2MSFTNGXA03.phx.gbl
> >Xref: cpmsftngxa10.phx.gbl

> microsoft.public.dotnet.framework.aspnet.webservic es:26495
> >X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.webservic es
> >
> >Hi All.
> >We are building an ASP.net application using C# & .net 1.1 framework.
> >The ASP.net application consumes web services (Java/Apache Axis
> >implementation) and we are facing issues that the application is very

> slow.
> >
> >Initially we suspected network and server side responses as culprits.
> >But on further investigation (we override GetWebResponse and GetWebRequest
> >methods SOAPClient) we have found that the application is spending
> >considerable amount of time (1+ minute) in deserializing the SOAP response
> >from the server.
> >
> >We are using VS.net 2003 for generating the proxies.
> >
> >Has anyone faced such performance issues and any suggestions?
> >
> >

>
>

 
Reply With Quote
 
Dan Rogers
Guest
Posts: n/a
 
      11-16-2004
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
--------------------
>Thread-Topic: .net SOAP toolkit performance for SOAP deserialization
>thread-index: AcTLm4C6l0/0QdSwTn+csRydbUV2eg==
>X-WBNR-Posting-Host: 203.123.182.26
>From: =?Utf-8?B?UHJhYmh1?= <>
>References: <476D5BFD-4063-4233-9CE4->

<>
>Subject: RE: .net SOAP toolkit performance for SOAP deserialization
>Date: Mon, 15 Nov 2004 21:17:01 -0800
>Lines: 69
>Message-ID: <2E47E781-8883-4AAC-82AB->
>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.webservic es
>NNTP-Posting-Host: TK2MSFTNGXA03.phx.gbl 10.40.1.29
>Path: cpmsftngxa10.phx.gbl!TK2MSFTNGXA01.phx.gbl!TK2MSFT NGXA03.phx.gbl
>Xref: cpmsftngxa10.phx.gbl

microsoft.public.dotnet.framework.aspnet.webservic es:26592
>X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.webservic es
>
>Hi.
>The responses are on an avg about 250K.
>But the object nesting is quite deep (4 or 5 levels) in the WSDL (and the
>proxy classes generated).
>
>We are sort of first clients to these services, but there are some stubs
>written in Java. We will try to measure deserialization performance in

these
>clients.
>
>regards
>
>
>
>
>"Dan Rogers" wrote:
>
>> Hi,
>>
>> How big is the response? Are there other implementations of clients

that
>> deserialize more rapidly?
>>
>> Regards
>>
>> Dan Rogers
>> Microsoft Corporation
>> --------------------
>> >Thread-Topic: .net SOAP toolkit performance for SOAP deserialization
>> >thread-index: AcTIpKogGJkADvEfQymOXvVBC0AhVg==
>> >X-WBNR-Posting-Host: 203.123.182.26
>> >From: =?Utf-8?B?UHJhYmh1?= <>
>> >Subject: .net SOAP toolkit performance for SOAP deserialization
>> >Date: Fri, 12 Nov 2004 02:45:02 -0800
>> >Lines: 15
>> >Message-ID: <476D5BFD-4063-4233-9CE4->
>> >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.webservic es
>> >NNTP-Posting-Host: TK2MSFTNGXA03.phx.gbl 10.40.1.29
>> >Path: cpmsftngxa10.phx.gbl!TK2MSFTNGXA03.phx.gbl
>> >Xref: cpmsftngxa10.phx.gbl

>> microsoft.public.dotnet.framework.aspnet.webservic es:26495
>> >X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.webservic es
>> >
>> >Hi All.
>> >We are building an ASP.net application using C# & .net 1.1 framework.
>> >The ASP.net application consumes web services (Java/Apache Axis
>> >implementation) and we are facing issues that the application is very

>> slow.
>> >
>> >Initially we suspected network and server side responses as culprits.
>> >But on further investigation (we override GetWebResponse and

GetWebRequest
>> >methods SOAPClient) we have found that the application is spending
>> >considerable amount of time (1+ minute) in deserializing the SOAP

response
>> >from the server.
>> >
>> >We are using VS.net 2003 for generating the proxies.
>> >
>> >Has anyone faced such performance issues and any suggestions?
>> >
>> >

>>
>>

>


 
Reply With Quote
 
Prabhu
Guest
Posts: n/a
 
      11-17-2004
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">
<wsdlart name="request" type="s1:AirfareQuotesRequest" />
</wsdl:message>
<wsdl:message name="getAirfareQuotesResponse">
<wsdlart name="getAirfareQuotesReturn" type="s1:AirfareQuotesResponse"
/>
</wsdl:message>
<wsdl:message name="APIException">
<wsdlart name="fault" type="s2:APIException" />
</wsdl:message>
<wsdlortType name="API">
<wsdlperation name="getAirfareQuotes" parameterOrder="request">
<wsdl:input name="getAirfareQuotesRequest"
message="tns:getAirfareQuotesRequest" />
<wsdlutput name="getAirfareQuotesResponse"
message="tns:getAirfareQuotesResponse" />
<wsdl:fault name="APIException" message="tns:APIException" />
</wsdlperation>
</wsdlortType>
<wsdl:binding name="apiSoapBinding" type="tns:API">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="rpc" />
<wsdlperation name="getAirfareQuotes">
<soapperation soapAction="" />
<wsdl:input name="getAirfareQuotesRequest">
<soap:body use="encoded" namespace="http://websrv.fbse.travel2.com"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
</wsdl:input>
<wsdlutput name="getAirfareQuotesResponse">
<soap:body use="encoded"
namespace="http://someserver.com/api/services/api"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
</wsdlutput>
<wsdl:fault name="APIException">
<soap:fault use="encoded"
namespace="http://someserver.com/api/services/api"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
</wsdl:fault>
</wsdlperation>
</wsdl:binding>
<wsdl:service name="APIService">
<wsdlort name="api" binding="tns:apiSoapBinding">
<soap:address location="http://testapi_host/api/services/api" />
</wsdlort>
</wsdl:service>
</wsdl:definitions>




"Dan Rogers" wrote:

> 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


 
Reply With Quote
 
Dan Rogers
Guest
Posts: n/a
 
      11-18-2004
Hi Prabhu,

These are pretty big, and pretty complex message structures. I'd not be
surprized if you are experiencing constuction delays because of all of the
repeating array of array of array nesting going on. Have you the ability
to switch this service design over to a document literal design instead of
an encoded design? In that approach, you'd have more complicated class
member types, but you might see a difference in how the "constructor" delay
is effecting your performance (if it is a constructor delay at all). In
other words, have you thought about schematizing this design and not
treating the data as arrays of types that contain other arrays?

I can't promise it would help, but I've been able to get awesome
performance in literal design, and also this would make the service design
more interoperable and follow interop guidelines such as those published on
WS-I.org.

Hope this helps

Dan
--------------------
>Thread-Topic: .net SOAP toolkit performance for SOAP deserialization
>thread-index: AcTMbiucldCHmwceQhWWXfbd5wyA7Q==
>X-WBNR-Posting-Host: 203.123.182.26
>From: =?Utf-8?B?UHJhYmh1?= <>
>References: <476D5BFD-4063-4233-9CE4->

<>
<2E47E781-8883-4AAC-82AB->
<>
>Subject: RE: .net SOAP toolkit performance for SOAP deserialization
>Date: Tue, 16 Nov 2004 22:25:02 -0800
>Lines: 380
>Message-ID: <6836D7E7-EC45-42F4-BA21->
>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.webservic es
>NNTP-Posting-Host: TK2MSFTNGXA03.phx.gbl 10.40.1.29
>Path: cpmsftngxa10.phx.gbl!TK2MSFTNGXA01.phx.gbl!TK2MSFT NGXA03.phx.gbl
>Xref: cpmsftngxa10.phx.gbl

microsoft.public.dotnet.framework.aspnet.webservic es:26656
>X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.webservic es
>
>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">
> <wsdlart name="request" type="s1:AirfareQuotesRequest" />
> </wsdl:message>
> <wsdl:message name="getAirfareQuotesResponse">
> <wsdlart name="getAirfareQuotesReturn"

type="s1:AirfareQuotesResponse"
>/>
> </wsdl:message>
> <wsdl:message name="APIException">
> <wsdlart name="fault" type="s2:APIException" />
> </wsdl:message>
> <wsdlortType name="API">
> <wsdlperation name="getAirfareQuotes" parameterOrder="request">
> <wsdl:input name="getAirfareQuotesRequest"
>message="tns:getAirfareQuotesRequest" />
> <wsdlutput name="getAirfareQuotesResponse"
>message="tns:getAirfareQuotesResponse" />
> <wsdl:fault name="APIException" message="tns:APIException" />
> </wsdlperation>
> </wsdlortType>
> <wsdl:binding name="apiSoapBinding" type="tns:API">
> <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
>style="rpc" />
> <wsdlperation name="getAirfareQuotes">
> <soapperation soapAction="" />
> <wsdl:input name="getAirfareQuotesRequest">
> <soap:body use="encoded"

namespace="http://websrv.fbse.travel2.com"
>encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
> </wsdl:input>
> <wsdlutput name="getAirfareQuotesResponse">
> <soap:body use="encoded"
>namespace="http://someserver.com/api/services/api"
>encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
> </wsdlutput>
> <wsdl:fault name="APIException">
> <soap:fault use="encoded"
>namespace="http://someserver.com/api/services/api"
>encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
> </wsdl:fault>
> </wsdlperation>
> </wsdl:binding>
> <wsdl:service name="APIService">
> <wsdlort name="api" binding="tns:apiSoapBinding">
> <soap:address location="http://testapi_host/api/services/api" />
> </wsdlort>
> </wsdl:service>
></wsdl:definitions>
>
>
>
>
>"Dan Rogers" wrote:
>
>> 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

>
>


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
performance issue on an asp.net page using ajax.net toolkit Abubakar ASP .Net 0 08-31-2008 03:14 PM
Deserialization Error--End Of Stream =?Utf-8?B?U29sZWwgU29mdHdhcmU=?= ASP .Net 1 07-30-2004 02:31 AM
Serialization/Deserialization or XML as DB umbertoeklat@yahoo.com ASP .Net 3 05-14-2004 03:47 PM
Serialization/Deserialization or XML as DB umbertoeklat@yahoo.com ASP .Net 3 05-14-2004 03:47 PM
SOAP Client creation in ASP.NET using MS SOAP Toolkit Sham Ramakrishnan ASP .Net 2 07-01-2003 11:29 AM



Advertisments
 



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57