Tôi có một câu hỏi đơn giản. Tôi có nên trả về một mảng byte hoặc đơn giản base64 mã hóa dữ liệu nhị phân của tôi, khi phơi bày nó thông qua một dịch vụ web trong .NET? Có bất kỳ ưu điểm/khuyết điểm nào với một trong hai phương pháp được hỗ trợ chủ yếu hay không.Tôi có nên sử dụng mã hóa Base64 hoặc byte [] để trả về dữ liệu nhị phân trong dịch vụ web .NET
Trả lời
Sử dụng mảng byte. Qua một giao thức SOAP mảng byte này sẽ tự động được tuần tự hóa bằng cách sử dụng mã hóa base64. Dịch vụ web của bạn cũng sẽ mang tính mô tả hơn nếu bạn sử dụng một mảng byte. Hãy tưởng tượng một người muốn tiêu thụ dịch vụ web của bạn và nhìn vào một phương pháp có chữ ký trông như thế này:
string GetBinaryImageFromDatabase();
Ông có thể thắc mắc tại sao phương pháp này trả về một chuỗi và những gì tôi sẽ làm gì với chuỗi này, trong khi nếu nó trả về một mảng byte nó rõ ràng hơn nhiều.
Tôi đã nhìn thấy phương pháp dịch vụ web mà trông như thế này:
string SaveCustomer(string customer);
Đoán những gì customer
và kiểu trả về là: họ một số XML độc quyền. Hoàn toàn không có ý nghĩa khi sử dụng SOAP nếu mọi người phát minh lại các giao thức trên nó.
Một xem xét là chuỗi mã hóa Base64 cho phép bạn sử dụng "Biểu mẫu thử nghiệm" để giúp gỡ lỗi mọi vấn đề, vv. một loại phức tạp và do đó biểu mẫu thử nghiệm sẽ không hoạt động.
Nhưng nội dung của chuỗi được mã hóa vẫn sẽ là một mảng byte. Nếu tôi cần phải gỡ lỗi, tôi luôn có thể gọi Convert.ToBase64String (byte [] inArray). – Siewers
Vâng, quan điểm của tôi là hoàn toàn để gọi/thử nghiệm phương pháp của bạn, bạn sẽ cần phải xây dựng một dây chuyền thử nghiệm mà đi/nhận một mảng byte. Nếu bạn sử dụng chuỗi base64 thì bạn có thể gọi phương thức webmethod của mình theo cách thủ công mà không cần viết khai thác thử nghiệm. –
Điểm thú vị. Tôi sẽ thảo luận điều này với các thành viên khác trong nhóm của tôi, để xem họ có bất kỳ phản đối nào không :) – Siewers