.net SOAP toolkit performance for SOAP deserialization

Discussion in 'ASP .Net Web Services' started by Prabhu, Nov 12, 2004.

  1. Prabhu

    Prabhu Guest

    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?
     
    Prabhu, Nov 12, 2004
    #1
    1. Advertising

  2. Prabhu

    Dan Rogers Guest

    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: <>
    >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!TK2MSFTNGXA03.phx.gbl
    >Xref: cpmsftngxa10.phx.gbl

    microsoft.public.dotnet.framework.aspnet.webservices:26495
    >X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.webservices
    >
    >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?
    >
    >
     
    Dan Rogers, Nov 15, 2004
    #2
    1. Advertising

  3. Prabhu

    Prabhu Guest

    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: <>
    > >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!TK2MSFTNGXA03.phx.gbl
    > >Xref: cpmsftngxa10.phx.gbl

    > microsoft.public.dotnet.framework.aspnet.webservices:26495
    > >X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.webservices
    > >
    > >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?
    > >
    > >

    >
    >
     
    Prabhu, Nov 16, 2004
    #3
  4. Prabhu

    Dan Rogers Guest

    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: <>

    <>
    >Subject: RE: .net SOAP toolkit performance for SOAP deserialization
    >Date: Mon, 15 Nov 2004 21:17:01 -0800
    >Lines: 69
    >Message-ID: <>
    >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:26592
    >X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.webservices
    >
    >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: <>
    >> >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!TK2MSFTNGXA03.phx.gbl
    >> >Xref: cpmsftngxa10.phx.gbl

    >> microsoft.public.dotnet.framework.aspnet.webservices:26495
    >> >X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.webservices
    >> >
    >> >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?
    >> >
    >> >

    >>
    >>

    >
     
    Dan Rogers, Nov 16, 2004
    #4
  5. Prabhu

    Prabhu Guest

    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:part name="request" type="s1:AirfareQuotesRequest" />
    </wsdl:message>
    <wsdl:message name="getAirfareQuotesResponse">
    <wsdl:part name="getAirfareQuotesReturn" type="s1:AirfareQuotesResponse"
    />
    </wsdl:message>
    <wsdl:message name="APIException">
    <wsdl:part name="fault" type="s2:APIException" />
    </wsdl:message>
    <wsdl:portType name="API">
    <wsdl:eek:peration name="getAirfareQuotes" parameterOrder="request">
    <wsdl:input name="getAirfareQuotesRequest"
    message="tns:getAirfareQuotesRequest" />
    <wsdl:eek:utput name="getAirfareQuotesResponse"
    message="tns:getAirfareQuotesResponse" />
    <wsdl:fault name="APIException" message="tns:APIException" />
    </wsdl:eek:peration>
    </wsdl:portType>
    <wsdl:binding name="apiSoapBinding" type="tns:API">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
    style="rpc" />
    <wsdl:eek:peration name="getAirfareQuotes">
    <soap:eek: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:eek:utput name="getAirfareQuotesResponse">
    <soap:body use="encoded"
    namespace="http://someserver.com/api/services/api"
    encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
    </wsdl:eek: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:eek:peration>
    </wsdl:binding>
    <wsdl:service name="APIService">
    <wsdl:port name="api" binding="tns:apiSoapBinding">
    <soap:address location="http://testapi_host/api/services/api" />
    </wsdl:port>
    </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
     
    Prabhu, Nov 17, 2004
    #5
  6. Prabhu

    Dan Rogers Guest

    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: <>

    <>
    <>
    <>
    >Subject: RE: .net SOAP toolkit performance for SOAP deserialization
    >Date: Tue, 16 Nov 2004 22:25:02 -0800
    >Lines: 380
    >Message-ID: <>
    >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:part name="request" type="s1:AirfareQuotesRequest" />
    > </wsdl:message>
    > <wsdl:message name="getAirfareQuotesResponse">
    > <wsdl:part name="getAirfareQuotesReturn"

    type="s1:AirfareQuotesResponse"
    >/>
    > </wsdl:message>
    > <wsdl:message name="APIException">
    > <wsdl:part name="fault" type="s2:APIException" />
    > </wsdl:message>
    > <wsdl:portType name="API">
    > <wsdl:eek:peration name="getAirfareQuotes" parameterOrder="request">
    > <wsdl:input name="getAirfareQuotesRequest"
    >message="tns:getAirfareQuotesRequest" />
    > <wsdl:eek:utput name="getAirfareQuotesResponse"
    >message="tns:getAirfareQuotesResponse" />
    > <wsdl:fault name="APIException" message="tns:APIException" />
    > </wsdl:eek:peration>
    > </wsdl:portType>
    > <wsdl:binding name="apiSoapBinding" type="tns:API">
    > <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
    >style="rpc" />
    > <wsdl:eek:peration name="getAirfareQuotes">
    > <soap:eek: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:eek:utput name="getAirfareQuotesResponse">
    > <soap:body use="encoded"
    >namespace="http://someserver.com/api/services/api"
    >encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
    > </wsdl:eek: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:eek:peration>
    > </wsdl:binding>
    > <wsdl:service name="APIService">
    > <wsdl:port name="api" binding="tns:apiSoapBinding">
    > <soap:address location="http://testapi_host/api/services/api" />
    > </wsdl:port>
    > </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

    >
    >
     
    Dan Rogers, Nov 18, 2004
    #6
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Sham Ramakrishnan
    Replies:
    2
    Views:
    8,378
    Sham Ramakrishnan
    Jul 1, 2003
  2. Abubakar
    Replies:
    0
    Views:
    376
    Abubakar
    Aug 31, 2008
  3. Tony C
    Replies:
    2
    Views:
    357
    Xiangyang Liu
    Jul 20, 2003
  4. Stephan Brunenr

    Access .NET DIME Service from COM SOAP Toolkit 3 client

    Stephan Brunenr, Aug 13, 2003, in forum: ASP .Net Web Services
    Replies:
    1
    Views:
    167
    Arthur Nesterovsky
    Aug 13, 2003
  5. Jim Griffiths

    Using .NET web service with SOAP Toolkit 3

    Jim Griffiths, Oct 9, 2003, in forum: ASP .Net Web Services
    Replies:
    0
    Views:
    166
    Jim Griffiths
    Oct 9, 2003
Loading...

Share This Page