2011-10-11 25 views
6

Tôi có hai ứng dụng web khác nhau cần giao tiếp với nhau (hiện tại tôi có thể thực hiện bằng cách sử dụng Silverlight Duplex nhưng không có quy mô lớn). Sau khi đọc về SignalR, tôi muốn thử nhưng không tìm thấy nhiều tài liệu về cách thực hiện điều này. Bất kỳ lời khuyên về ho để bắt đầu sẽ được đánh giá rất nhiều.Giao tiếp giữa nhiều ứng dụng web bằng SignalR

Cảm ơn!

Thông tin cụ thể hơn: Ví dụ: Ứng dụng A (Giao diện đặt giá thầu) - Trang web cho phép nhiều người dùng cuối đặt giá thầu trên một số mặt hàng nhất định.

Ứng dụng B (Quản lý giao diện) - Trang web cho phép người dùng (hoặc có thể có nhiều người dùng) giám sát/kiểm soát các hành động từ Giao diện đặt giá thầu.

Vì vậy, khi người dùng từ ứng dụng A đặt giá thầu trên một mảnh, tôi sẽ cần một cách để cảnh báo cho ứng dụng B rằng giá thầu đã được đặt. Sau đó, từ Ứng dụng B, nếu người dùng chọn chấp nhận giá thầu, tôi cần phải gửi lại cảnh báo đến Đơn đăng ký A (để cập nhật giá hiện tại, tăng giá thầu, v.v ...)

+0

Bạn có thể cung cấp thêm một số chi tiết về thiết lập cụ thể không? Làm thế nào để bạn cần phải giao tiếp? – davidfowl

+0

Tôi đã cập nhật yêu cầu với thông tin cụ thể hơn. Cảm ơn bạn đã giúp đỡ! – user989953

Trả lời

2

Trong tất cả sự trung thực, có thể đơn giản hơn để có mỗi ứng dụng đẩy thông báo cho nhau thông qua các cuộc gọi dịch vụ tiêu chuẩn (WCF, ASMX, các điểm xử lý HTTP, bộ điều khiển MVC, bất kỳ điều gì). SignalR rất hữu ích trong trình duyệt để truyền thông máy chủ vì không có cách nhất quán để đẩy từ máy chủ đến trình duyệt được kết nối. Nhưng từ ứng dụng web đến ứng dụng web đẩy thì đơn giản; Ứng dụng A chỉ gọi một điểm cuối dịch vụ trên Ứng dụng B để thông báo về điều gì đó đang xảy ra.

+0

Điều này có thể hoạt động ... giả sử Ứng dụng A và Ứng dụng B luôn hợp tác với nhau như một thực thể duy nhất ... thực tế không phải là cách mà thế giới thực hành ... Tôi sẽ nói rằng giải pháp này giới thiệu cả tấn khác nhức đầu là kết quả. Ngoài ra ... Tại sao ràng buộc chặt chẽ khi bạn có thể liên kết lỏng lẻo? – War

0

Giả sử rằng những gì bạn muốn là một cái gì đó giống như ...

tài (trình duyệt) --- Ứng dụng A --- Application B --- tài khoản (Browser)

giao tiếp thời gian thực có thể được thực hiện bằng cách làm như sau ...

Đây không phải là công việc của signalR tuy nhiên một cái gì đó như NServiceBus sẽ phù hợp với điều này rất tốt.

bạn tham chiếu tệp dll bus và các trung tâm có thể tăng và trả lời các sự kiện. Trong trường hợp của bạn, bạn sẽ có cả SignalR và công nghệ Bus Service của bạn làm việc cùng nhau để cho phép đồng bộ ứng dụng chéo.

Vì vậy, quá trình này là một cái gì đó giống như ...

  1. người dùng trong đám cháy ứng dụng A lên trình duyệt và yêu cầu trang.
  2. Ứng dụng A tạo trường hợp Trung tâm đăng ký nội bộ cho sự kiện Dịch vụ xe buýt
  3. Người dùng trong ứng dụng B kích hoạt trang trình duyệt và yêu cầu.
  4. Ứng dụng B tạo ra trường hợp Trung tâm đăng ký nội bộ cho sự kiện Dịch vụ xe buýt
  5. Người dùng trên một trong hai ứng dụng thực hiện một số hành động dẫn đến việc SignalR nhận một thông báo.
  6. SignalR tăng sự kiện xe buýt để nói "Người dùng này đã làm điều gì đó" trên xe buýt dịch vụ.
  7. Trung tâm khác trên Ứng dụng khác thông qua đăng ký sự kiện được thông báo về sự kiện và thực hiện bất kỳ hành động nào để thông báo cho người dùng được kết nối của sự kiện đó.

Bài học ở đây ... Đừng cố gắng và làm cho một công nghệ làm điều gì đó vượt ra ngoài mục đích của nó ... sử dụng đúng công cụ cho công việc.

Toàn bộ giải pháp này có thể được thực hiện với ít hơn 20 dòng mã sau khi thiết lập khung lõi.

NServiceBus có thể được tìm thấy ở đây:

http://particular.net/nservicebus

Disclaimer: Có thể có các giải pháp khác nhưng có một đề nghị này đừng cho rằng đây là cách duy nhất này có thể được giải quyết, và các công nghệ duy nhất mà được sử dụng theo cách này. Tôi không liên kết theo bất kỳ cách nào với sản phẩm Đặc biệt hoặc NServiceBus.

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