Login | Register

RoboZZle Forums

Forums / RoboZZle / RoboZZle client data transfers

Log in to comment.

:-)

Apparently, as of Silverlight 3, WCF in Silverlight (the communication library) uses binary encoding instead of XML. I'm not sure how compact the binary encoding is, though.

Once I recompile the client in SL3, the response size should go down. I need to better understand the Silverlight plugin update story before I do that.

Paging is probably the right long-term solution anyways, though.

igoro, 46 months ago.

Normally I'd write a stinker about XML at a time like this, but I think the point is already proven well beyond what I could manage with simple words :-P

Anyway, there is no way to code with XML, you can only code against it. (People who claim otherwise are just unknowingly being slaughtered on the digital battlefield.)

When coding against XML a key strategy is long unbroken strings, base64 encode it, comma separate it, whatever it takes. Your long strings can only be attacked on the flanks and the damage will be limited.

Of course you could also find a better lib, but that is not a lot of sport.

eBusiness, 46 months ago.

The library that I use sends responses back as XML, which blows up the size significantly. E.g., in theory you only need 4 bits to transfer an integer between 0-15, but with XML, you'll probably send something like "<intValue>5</intValue>"

igoro, 46 months ago.

Or you could simply device a more compact data format, given 7 different types of tiles you can easily fit 2 tiles into a byte, then a few more bytes for initial location and function lengths and ratings, and a variable amount for the texts. I'd say that should average about 150 bytes per puzzle.

But it is currently around 2000 bytes? How come?

eBusiness, 46 months ago.

Yeah, it is a 2MB download on each startup. I am looking into fixing this soon. It's not entirely trivial, as all the puzzle filtering and sorting logic will have to move on the server.

igoro, 46 months ago.

I've noticed that it takes a while (about 20s) to start robozzle.

Looking at network traffic it seems that SOAPAction: "http://tempuri.org/IRobozzleService/GetLevels3" is getting a 2 megabyte response! So I assume the client loads all the levels when it starts. Is this truly necessary? Couldn't the client load only those levels it needs?

I believe this would drastically reduce the startup time, and probably also lessen the load on the server (not that it's really any problem of mine)

Grez, 46 months ago.

Previous page (1 / 1) Next page

©2009 Igor Ostrovsky and other contributors. Terms of use