2010-03-26 30 views
8

'da ikili verileri döndürmek için Base64 kodlaması veya bayt [] kullanmalı mıyım? Basit bir sorum var. Bir bayt dizisi döndürmeli mi yoksa basit bir şekilde base64 kodlarımı ikili verilerimi kodlamalı mıyım? Her iki yöntemde de çoğunlukla desteklenen bir artı/eksiler var mı?.NET web hizmeti

cevap

10

Bayt dizisi kullan. Bir SOAP protokolü üzerinde, bu bayt dizisi, base64 kodlaması kullanılarak otomatik olarak serileştirilecektir. Bayt dizisi kullanırsanız, web hizmetiniz de daha açıklayıcı olacaktır. Web hizmeti ve kimin imzası bir yöntem bakarak tüketmek isteyen biri düşünün şuna benzer:

string GetBinaryImageFromDatabase(); 

bu yöntem ben eğer ederken, bu dize ile yapacağım ne dize döndürür ve yok neden o merak edebilirsiniz Bayt dizisini döndürür, daha nettir.

Ben şuna benzer web hizmeti yöntemi gördüm:

string SaveCustomer(string customer); 

customer ve dönüş türleri vardı ne var: onlar bazı özel XML idi. İnsanların protokolleri yeniden icat etmesi durumunda SOAP kullanmanın kesinlikle bir anlamı yoktur.

+0

İlginç noktalar. Bunu herhangi bir itirazı olup olmadığını görmek için ekibimin diğer üyeleriyle tartışacağım :) – Siewers

0

Tek bir nokta, bir Base64 kodlanmış dizenin, herhangi bir sorunu, vb. Hata ayıklamaya yardımcı olmak için "Test Formu" nu kullanmanıza olanak tanımasıdır. karmaşık bir tip ve bu nedenle test formu çalışmayacak.

+0

Ancak kodlanmış dizenin içeriği hala bir bayt dizisi olacaktır. Hata ayıklamaya ihtiyacım varsa, her zaman Convert.ToBase64String (byte [] inArray) öğesini arayabilirim. – Siewers

+0

Evet, benim amacım, yönteminizi çağırmak/test etmek için bir bayt dizisini geçen/alan bir test koşulu oluşturmanız gerektiğidir. Bir base64 dizesi kullanırsanız, webmethod'unuzu bir test demeti yazmadan manuel olarak çağırabilirsiniz. –