I have a simple question. Should I return a byte-array or simply base64 encode my binary data, when exposing it through a web service in .NET? Is there any pros/cons with either method, which is mostly supported etc.
views:
239answers:
2One consideration is that a Base64 encoded string enables you to use the "Test Form" to help debug any issues, etc. The Byte array is a complex type and therefore the test form will not work.
Use byte array. Over a SOAP protocol this byte array will automatically be serialized using base64 encoding. Your web service will be also more descriptive if you use a byte array. Imagine someone who wants to consume your web service and looking at a method whose signature looks like this:
string GetBinaryImageFromDatabase();
He might wonder why does this method returns a string and what am I going to do with this string, while if it returns a byte array it is much more clear.
I've seen web service method that look like this:
string SaveCustomer(string customer);
Guess what the customer
and the return types were: they were some proprietary XML. There's absolutely no sense of using SOAP if people reinvent protocols over it.