2011-12-18 38 views
6

Tôi đã làm việc với Spring một thời gian để nhận ra rằng không phải tất cả các yêu cầu gửi đến tôi nhận được trong ứng dụng của tôi đều dựa trên HTTP. Một số yêu cầu dựa trên email và cần phản hồi dựa trên email, một số yêu cầu khác dựa trên socket (nhận thông báo khi giá trị thay đổi trong cửa hàng NOSQL của tôi). Tất cả trong số họ, mặc dù sử dụng nhiều hay ít cơ sở hạ tầng MVC giống nhau.Bộ tách điều khiển MVC của Spring từ HTTPServlet

Vì vậy, tôi nghĩ rằng có thể nghiên cứu ứng dụng, để loại bỏ sự ghép nối giữa các bộ điều khiển và cơ sở hạ tầng HTTP sẽ giúp ích.

Bộ điều phối không còn gọi trực tiếp các phương thức điều khiển, mà phải trích xuất các tham số yêu cầu và sử dụng chúng để tạo một thông báo trừu tượng (hoặc sự kiện). Mặt khác, mọi bộ điều khiển sẽ đăng ký các hành động của nó (các cá thể của lớp Action - một sự triển khai thực hiện mẫu lệnh) cho các sự kiện khác nhau.

Vì tôi khá mới mẻ với Spring Integration, JMS, và những thứ khác như thế, tôi không có ý tưởng, mà công nghệ nhắn tin để lựa chọn. Ngoài ra, tôi khá chắc chắn rằng một kiến ​​trúc như thế này đã được phát triển rồi. Có lẽ, tôi có thể thậm chí không đi đúng hướng.

Tôi chấp nhận tất cả các loại đề xuất về cách tiến hành.

Trả lời

5

Bạn đúng là giải pháp nhắn tin với sự trợ giúp nhỏ của một số mẫu tích hợp là cách "đúng" để đi.

Bạn đang nói rằng e-mail và một số cơ sở dữ liệu NoSQL đã đánh bộ điều khiển của bạn? Điều này có nghĩa là có một số lớp dịch giữa các hệ thống này và bộ điều khiển của bạn. Với Spring integration bạn sẽ sử dụng Mail-Receiving Channel Adapter để xử lý e-mail đến và TCP and UDP Support cho thông báo NoSQL. Bộ điều khiển MVC Spring vẫn có thể được sử dụng cho các yêu cầu web "true", truy cập vào kênh tin nhắn bên dưới.

Mỗi bộ điều hợp kênh sẽ có một bộ duy nhất là transformers để dịch biến thể cụ thể message thành định dạng âm thanh. Tại các tin nhắn cuối cùng từ mỗi điểm cuối sẽ là routed đến cùng một message channel.

Vì vậy, thực sự, ví dụ của bạn là hoàn toàn phù hợp với giải pháp giống như ESB. Ngoài ra, hãy xem Mule ESB, thậm chí còn trưởng thành và mạnh mẽ hơn.

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