Loadtest of silverlight web app server

Loadtest of silverlight web app server

Old forum URL: forums.lhotka.net/forums/t/10312.aspx


zhuz posted on Thursday, April 28, 2011

Hi!

I need to test silverlight web application so that I recorded requests from client side  to server. For example:

 <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
<s:Header>
 <a:Action s:mustUnderstand="1">http://ws.lhotka.net/WcfDataPortal/IWcfPortal/Fetch</a:Action>
  <a:MessageID>urn:uuid:07368c01-c9ed-47e9-9ecb-39156837528c</a:MessageID>
- <a:ReplyTo>
  <a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
  </a:ReplyTo>
  <a:To s:mustUnderstand="1">https://server/WCF/WcfPortal.svc</a:To>
  </s:Header>
- <s:Body>
- <Fetch xmlns="http://ws.lhotka.net/WcfDataPortal">
- <request xmlns:b="http://schemas.datacontract.org/2004/07/Csla.Server.Hosts.Silverlight" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <b:ClientContext>eNqlkDFPhEAUhENjuFjZWdKa4O4iGIMJCRdsLnpqvMvF9rE8ZOOye9ldgtj6J/y5AtHitLR5xUzmy8zLT5fGwPBQb9AIkOIdnNBqpWrtLxvn9teUWt5gC5ZU4IBr5QxwR7R5oReMJZRd0cJKIAd5stalkLjwxNk3pO970sc/sYg+r+82M/dcKOtAccxP/lTI/aIRsjKoFh6kv+q0ghttde0I1+0EjWnE6AGDztuslx8/YY0jhuOq+sj97bDHe2jxs5qrF9rgeJTDN3cj+JQEM4TBZIbBDo0dlSwhEWGEjXInXWcwU9iNv5Bh8NiVUvBbHLb6FVWWxiVe1hVnaYwJj5mXH+1Admj/N8LzvgDFopLL</b:ClientContext>
  <b:ClientCulture i:nil="true" />
  <b:ClientUICulture i:nil="true" />
  <b:CriteriaData>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</b:CriteriaData>
  <b:GlobalContext>eNqlkDFPhEAUhENjuFjZWdKa4O4iGIMJCRdsLnpqvMvF9rE8ZOOye9ldgtj6J/y5AtHitLR5xUzmy8zLT5fGwPBQb9AIkOIdnNBqpWrtLxvn9teUWt5gC5ZU4IBr5QxwR7R5oReMJZRd0cJKIAd5stalkLjwxNk3pO970sc/sYg+r+82M/dcKOtAccxP/lTI/aIRsjKoFh6kv+q0ghttde0I1+0EjWnE6AGDztuslx8/YY0jhuOq+sj97bDHe2jxs5qrF9rgeJTDN3cj+JQEM4TBZIbBDo0dlSwhEWGEjXInXWcwU9iNv5Bh8NiVUvBbHLb6FVWWxiVe1hVnaYwJj5mXH+1Admj/N8LzvgDFopLL</b:GlobalContext>
  <b:Principal>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</b:Principal>
  <b:TypeName>SMOR.SMAP.Customer.Customer, SMOR.SMAP.Business, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</b:TypeName>
  </request>
  </Fetch>
  </s:Body>
  </s:Envelope>

I was faced with the issue of parametrization of data contained in the binary code marked with bold. In fact I need to decode this code.

I would be grateful if you tell me how to do it.

 

RockfordLhotka replied on Thursday, April 28, 2011

That will be somewhat challenging.

Those are serialized byte arrays that contain data serialized using the DataContractSerializer, and that original data was copied into a set of DataContract objects from the business objects using the MobileFormatter.

You can find information about the MobileFormatter in the FAQ: http://www.lhotka.net/cslanet/faq/SilverlightFaq.ashx

The MobileFormatter and DataContractSerializer are invoked by the data portal to create that outbound request message. I suspect you'll need to replicate the data portal's behavior to get meaningful test results.

You should also understand that in any real application there's the requirement to use compression. In that case the data you see on the wire is still a byte array - but it is a byte array of compressed data, where the original data is the byte array that would have been on the wire without compression.

The almost-finished Using CSLA 4: Data Portal Configuration ebook also has a lot of information about serialization and how the data portal works - including demonstrating how to implement compression within the context of the data portal.

zhuz replied on Friday, April 29, 2011

Thank you, Rocky!

Now I finally know where to dig!


RockfordLhotka replied on Friday, April 29, 2011

Assuming your load tester can run .NET code in the simulated clients, your best bet is probably to create a .NET implementation of the Silverlight client-side data portal WcfProxy object.

The MobileFormatter and related code is already on .NET (to support the server-side operations). The only real thing missing is a .NET data portal proxy (and related service reference) for the Silverlight data portal endpoint.

Copyright (c) Marimer LLC