Chúng tôi đã bắt đầu điều tra việc sử dụng Windows Azure Service Bus như một sự thay thế cho hàng đợi hiện tại của chúng tôi khi chúng tôi chuyển sang một kiến trúc hướng dịch vụ.Kiểu nối tiếp Bus dịch vụ Azure
Hầu hết tài liệu rõ ràng; tuy nhiên tôi gặp khó khăn trong việc xác định loại serialization nào mà BrokeredMessage
sử dụng khi được cung cấp với một cơ thể.
Ví dụ, giả sử tôi tạo một đối tượng BrokeredMessage
như sau:
ICommand sendMessageCommand = new SendMessageCommand
{
Title = "A new message title",
Body = "A new message body"
};
BrokeredMessage brokeredMessage = new BrokeredMessage(sendMessageCommand);
queueClient.Send(brokeredMessage);
SendMessageCommand
là một DTO đơn giản đánh dấu với thuộc tính [Serializable]
; trong hàng đợi cũ của chúng tôi, mã nhị phân này được tuần tự hóa sao cho nó có thể được lưu trữ nhanh hơn và bảo toàn dữ liệu meta của nó. Điều này quan trọng đối với chúng tôi khi chúng tôi sử dụng hàng đợi để gửi lệnh bằng cách sử dụng pattern outlined here với vai trò người lao động nhận được deserialzing lệnh với một hỗn hợp của generics và gõ năng động.
Tuy nhiên theo THIS bài viết nội dung được truyền vào hàm tạo của BrokeredMessage
là "Phân loại XML nhị phân". Giả định của tôi sau đó là đây là tiêu chuẩn hóa tuần tự XML sau đó được truyền qua một trình định dạng nhị phân, đúng không?
Thêm vào đó; điều đó có nghĩa là nếu tôi sử dụng chức năng cơ thể thông báo mặc định BrokeredMessage
; Tôi sẽ phải đảm bảo tất cả các đối tượng là XML Serializable, bao gồm tất cả các vấn đề trình bày? (Mất trường riêng tư, không có dữ liệu meta để deserializing sử dụng generics, xml serialization thuộc tính)
Cuối cùng; Nếu đây là trường hợp; là có một cách đơn giản xung quanh này? Tôi đã xem xét việc làm serialization nhị phân của riêng của chúng tôi sau đó lưu trữ các byte[]
trong một tài sản trên BrokeredMessage
.
Liên kết thực tiễn tốt nhất đã chết – MPavlak
Nhiều ví dụ trong [Kho lưu trữ Azure-mẫu GitHub] (https://github.com/Azure-Samples/azure-servicebus-messaging-samples) cũng sử dụng tuần tự hóa JSON với các đối tượng động . Tôi thích cách tiếp cận này ngay cả đối với các đối tượng tĩnh như bạn không phải xả rác mô hình của bạn với các thuộc tính DataContract và DataMember. –