2011-02-08 16 views

Trả lời

28

Xuất bản được sử dụng để thông báo cho nhiều Người đăng ký của một sự kiện cụ thể. Điểm cuối xuất bản sẽ có bộ nhớ đăng ký để xác định vị trí gửi tin nhắn đến. Gửi thường được sử dụng để phát hành một lệnh đến một điểm cuối. Một lệnh là nói cho điểm cuối để làm một cái gì đó và không nên mong đợi một câu trả lời (mặc dù đôi khi bạn muốn có một trả lời và NSB hỗ trợ này).

Lý do bạn không thấy điểm đến cho Gửi() là bạn chỉ định đích thông qua cấu hình. Trong app.config của bạn, bạn sẽ ánh xạ các loại tin nhắn (toàn bộ một hội đồng hoặc một lớp) đến một đích. Khi bạn làm như vậy, bạn không phải cung cấp điểm đến.

+0

Cảm ơn Adam - điều đó có nghĩa là tôi không thấy vai trò của cấu hình phát. –

+0

Err, nhận xét ở trên nên đã đọc: Cảm ơn Adam - điều đó có ý nghĩa bây giờ tôi thấy vai trò của cấu hình phát. –

+0

Một trong các ghi đè cho Bus.Send là Bus.Send (chuỗi đích, thư), vì vậy bạn có thể sử dụng Bus.Gửi để gửi đến một hàng đợi cụ thể. – RandomUs1r

14

Bus.Publish: được sử dụng khi bạn không biết vị trí của thông báo (0 cho nhiều người đăng ký).
Bus.Send: khi bạn đang gửi thư đến một trình xử lý cụ thể (máy khách đến máy chủ).

+0

Được rồi, nhưng sau đó tại sao một số Gửi() quá tải không phải là một điểm đến? Bối rối ... –

+4

Chúng tôi lấy ý nghĩa ngữ nghĩa hơn một chút. Xuất bản là một sự kiện, và chúng tôi đối xử với các sự kiện như "này, một cái gì đó vừa xảy ra. Tôi không quan tâm bạn làm gì với thông tin này, nhưng ở đây bạn đi", khi chúng ta xử lý Bus.Gửi như lệnh, có nghĩa là "Này, Tôi cần bạn làm điều gì đó, và tôi quan tâm đến những gì xảy ra như vậy (và do đó biết tôi gửi nó cho ai) " – Matt

+2

@SeanKearon Có, bạn đã đăng 4 năm trước, nhưng với bất kỳ ai khác. Điểm đến của lệnh gửi có thể được định nghĩa trong cấu hình. Bạn không thực sự muốn trong thông tin cấu hình mã của mình, vì vậy bạn có thể sử dụng biểu mẫu Send() đơn giản hơn, không lấy đích làm tham số nếu nó được xác định trong cấu hình của bạn. – XenoPuTtSs

0

ususally Context.Publish() là dành cho xuất bản Loại sự kiện và Context.Send() là dành cho Loại lệnh

+1

Chào mừng bạn đến với SO. Có vẻ như có điều gì đó thiếu trong câu trả lời của bạn? –

+0

yest tôi vừa chỉnh sửa nó .thanks – Vakar

Các vấn đề liên quan