간단한 질문이 있습니다. .NET에서 웹 서비스를 통해 공개 할 때 바이트 배열을 반환하거나 단순히 이진 데이터를 base64로 인코딩해야합니까? 대부분 지원되는 두 가지 방법 중 하나가 장단점이 있습니까?.NET 웹 서비스에서 이진 데이터를 반환하기 위해 Base64 인코딩 또는 바이트 []를 사용해야합니까?
답변
바이트 배열을 사용하십시오. SOAP 프로토콜을 통해이 바이트 배열은 base64 인코딩을 사용하여 자동으로 직렬화됩니다. 바이트 배열을 사용하면 웹 서비스도 더 잘 설명됩니다. 웹 서비스와 그 서명 방법을보고 소비를 원하는 사람을 상상하는 것은 다음과 같습니다
string GetBinaryImageFromDatabase();
이 방법이 나는 경우 동안,이 캐릭터와 함께 할 갈 거 야 문자열을 반환하고 않는 이유를 그는 궁금 할 것이다 그것은 훨씬 더 명확 바이트 배열을 반환합니다.
I는 다음과 같이 웹 서비스 메서드를 본 적이 :
string SaveCustomer(string customer);
customer
및 반환 유형이 무엇인지 추측 : 그들이 어떤 독점 XML했다. 사람들이 프로토콜을 재발 명할 경우 SOAP 사용에 대한 인식이 전혀 없습니다.
Base64로 인코딩 된 문자열을 사용하면 문제를 디버그하는 데 "테스트 양식"을 사용할 수 있습니다. 바이트 배열은 다음과 같습니다. 복잡한 유형이므로 테스트 양식이 작동하지 않습니다.
그러나 인코딩 된 문자열의 내용은 여전히 바이트 배열이됩니다. 디버그가 필요한 경우 Convert.ToBase64String (byte [] inArray)을 항상 호출 할 수 있습니다. – Siewers
그렇습니다. 요점은 순전히 메서드를 호출하고 테스트하기 위해서는 바이트 배열을 전달/수신하는 테스트 장치를 만들어야한다는 것입니다. base64 문자열을 사용하는 경우 테스트 하네스를 작성하지 않고 수동으로 webmethod를 호출 할 수 있습니다. –
흥미로운 점. 나는 그들이 다른 이의가 있는지보기 위해 나의 팀의 다른 멤버와 이것을 토론 할 것이다 :) – Siewers