2009-12-09 35 views
7

Tôi hiện đang làm việc trên một ứng dụng mà một thành phần của ứng dụng cần tương tác với nhiều thành phần hệ thống khác dựa trên các sự kiện nhất định. Các sự kiện này xảy ra dựa trên nhiều trình kích hoạt khác nhau ... một số sự kiện được gây ra bởi hành động của người dùng nơi người dùng khác cần được thông báo, một số sự kiện dựa trên thời gian và các sự kiện khác dựa trên thay đổi trạng thái của đối tượng.Công nghệ nào có sẵn cho mô hình xuất bản/đăng ký sử dụng .NET?

Dựa trên những gì tôi đã xem cho đến nay, có vẻ như cách sạch nhất để tách các thành phần ứng dụng là thiết lập mô hình xuất bản/đăng ký nơi các đối tượng của tôi xuất bản các sự kiện mà các thành phần ứng dụng quan tâm khác có thể đăng ký đến.

Tôi đã thấy nServiceBus và vì lý do "nhà cung cấp-khóa-in" tôi không thể sử dụng Dịch vụ .NET trong Azure. Có công nghệ nào khác không? Có cách tiếp cận khác mà tôi nên cân nhắc không?

Chỉnh sửa - để rõ ràng, đây là một ứng dụng có khối lượng cao dựa trên web. Ứng dụng này là ASP.NET MVC và ứng dụng MVC đang giao tiếp với nhiều dịch vụ WCF cho dữ liệu của nó.

+0

Tôi không phải là chuyên gia Net. Tuy nhiên, tôi nghĩ. Net Message Queuing (System.Messaging) là cho vấn đề cụ thể này. –

+0

Hầu hết tất cả các xe buýt dịch vụ đều được xây dựng trên hàng đợi của cửa sổ tin nhắn. –

Trả lời

6

WCF chắc chắn có khả năng xử lý các trường hợp pub/sub - và sẽ nhiều hơn một lần .NET 4 với các ràng buộc tiếp sức WCF Azure mới.

Còn bây giờ, hãy kiểm tra các bài báo về chủ đề này:

Đối với pub/sub nhắn Azure dựa trên tương lai bằng cách sử dụng.NET Dịch vụ xe buýt, xem những bài viết này ở đây:

+0

Điều này có vẻ là tùy chọn có tài liệu hoàn chỉnh nhất và có vẻ như sẽ dễ dàng hơn khi chuyển sang Dịch vụ .NET Bus xuống đường, đó là lý do tại sao tôi chấp nhận câu trả lời này . – mkedobbs

0

Prism đi kèm với một EventAggregator cung cấp các sự kiện lỏng lẻo.

3

Ngoài ra còn có MassTransit. Không bao giờ sử dụng nó nhưng nó thường được đề cập trong cùng một cuộc trò chuyện với nServiceBus.

Tùy thuộc vào chính xác những gì bạn đang cố gắng làm, cũng có Managed Extensibility Framework. Không thực sự là một khung công tác xuất bản/đăng ký nhưng nó là một cái gì đó để nhận thức được nếu bạn chưa có.

+0

Tôi không nghĩ rằng MEF hoàn toàn phù hợp với những gì tôi đang cố gắng làm. 1 cho MassTransit rec ... – mkedobbs

2

Udi (tác giả của nServiceBus) có một phiên bản tinh gọn của khái niệm của ông về miền Sự kiện trên số blog

Chúng tôi đã sử dụng cơ sở này làm cơ sở để phát triển triển khai đơn giản hơn như nServiceBus mà chúng tôi có thể sử dụng giải pháp của chúng tôi.

0

Câu trả lời cho đến nay là những câu trả lời tốt cho rằng bạn có kiến ​​trúc đa tiến trình hoặc SOA.

Nếu đó là một ứng dụng độc lập đơn giản, có lẽ mô hình sự kiện C# được xây dựng hoạt động tốt trong trường hợp của bạn. Ngoài ra, người ta cũng có thể sử dụng các đại biểu hoặc một giao diện để chuyển đến máy chủ/nhà xuất bản.

Điều này observer pattern link có thể hữu ích.

1

Để triển khai mô hình xuất bản/đăng ký cổ điển với .net, tôi sẽ sử dụng ActiveMQ. Nó rất dễ hiểu và nếu bạn đã biết JMS, đường cong học tập thực sự là phẳng.

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