2013-05-08 25 views
8

Cách tốt nhất để chia sẻ dữ liệu giữa các ứng dụng khác nhau trên cùng một máy và thông báo cho chúng nếu dữ liệu đã thay đổi là gì?Cách thực hành tốt nhất để chia sẻ dữ liệu và thông báo giữa các ứng dụng

Tôi có 4 ứng dụng đang sử dụng cùng một dự án cài đặt để thay đổi cài đặt của chúng. Khi tôi thay đổi cài đặt trong dự án, các ứng dụng khác phải thực hiện thay đổi này và phải biết rằng cài đặt đã được thay đổi.

Tôi đã nghĩ về IPC để thực hiện thay đổi cài đặt và sau đó phát thông tin thay đổi cho tất cả người dùng nhưng sẽ tuyệt vời nếu thư viện đó đã tồn tại.

EDIT:

Tôi tìm thấy một giải pháp mà làm việc cho tôi. Chúng tôi quyết định không dành nhiều thời gian vào chức năng này vì nó không cực kỳ nghiêm túc để cập nhật các ứng dụng khác.

Chúng tôi lưu cài đặt của mình, như trước đây, trong tệp XML và tôi đã đăng ký FileSystemWatcher trên tệp đó để nhận tất cả thay đổi. Vì vậy, nếu tôi thay đổi các thiết lập tất cả 4 ứng dụng đi và đọc các tập tin cài đặt và xác định xem họ có để có một hành động hay không.

Trả lời

1

Giải pháp được chọn phụ thuộc vào các thông số khác nhau:

  1. bao nhiêu nỗ lực bạn có thể đầu tư trong việc thực hiện.
  2. Làm thế nào quan trọng là các ứng dụng sẽ được cập nhật nhanh chóng.
  3. Môi trường nào có sẵn cho bạn/khách hàng của bạn.
  4. ...

Ví dụ:

  • lưu thay đổi vào tập tin cơ sở dữ liệu/config, và để cho các ứng dụng chạy một thread riêng biệt, đó là dành riêng để kiểm tra các thiết lập thay đổi mỗi n giây. Đó là rẻ và dễ thực hiện giải pháp này, nhưng không phải là "tốt đẹp", và nhiều nhà phát triển sẽ từ chối giải pháp như vậy.
  • Tạo một dịch vụ WCF, trong đó "xuất bản" các thay đổi đối với các ứng dụng. Trường hợp đó, sử dụng các ràng buộc kép, các ứng dụng sẽ được cập nhật ngay lập tức. Tất nhiên, giải pháp này tốn kém hơn ....

Đó chỉ là 2 ví dụ trong số nhiều giải pháp khả dụng (bộ nhớ dùng chung, miền ứng dụng dùng chung, v.v.).

+0

Hei Cảm ơn câu trả lời của bạn. Tôi đã tìm thấy một giải pháp hiệu quả cho tôi. – neutron

+0

Neutron, Chỉ vì sự tò mò của tôi ... bạn đã chọn giải pháp nào và tại sao? –

+0

Hi Amit, tôi đã chỉnh sửa bài đăng chính và mở rộng nó bằng giải pháp mà tôi chọn. Tôi chọn giải pháp này bởi vì nó là cách simpelst/rẻ nhất trong bối cảnh hiện tại và nên hoạt động tốt. – neutron

0

Làm thế nào về việc sử dụng các đối tượng phụ thuộc được xây dựng? như:

  1. CacheDependency - http://msdn.microsoft.com/en-us/library/system.web.caching.cachedependency.aspx
  2. SqlDependency - http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldependency.aspx

đây là khá đơn giản để thực hiện và và họ làm việc khá tốt

+0

Tôi có một ứng dụng winforms và không sử dụng cơ sở dữ liệu. Và CacheDependency chỉ dành cho các ứng dụng web, phải không? – neutron

+0

Xin chào, Nếu bạn đang sử dụng .net 4 thì không. Có một không gian tên mới http://msdn.microsoft.com/en-us/library/system.runtime.caching.aspx System.Runtime.Caching. Tôi đã tìm thấy ví dụ về cách sử dụng của nó tại đây: http://www.codeproject.com/Articles/290935/Using-MemoryCache-in-Net-4-0 – JanivZ

1

gì bạn đã làm dường như wisely.And Tôi có trải nghiệm khác sử dụng MSMQ. Bạn có thể tạo Hàng đợi Riêng tư hoặc Công cộng, vì bạn có tất cả ứng dụng của mình trên cùng một máy, hàng đợi riêng tư là ok, nếu không, bạn nên sử dụng hàng đợi Công cộng. Trong thời gian đó tôi đã chọn Spring.Net làm khuôn khổ của tôi (đối tượng xây dựng & phụ thuộc Injector). Spring.net đã xuất sắc QuickStart và một trong số họ đang sử dụng MSMQ làm cầu nối giao tiếp giữa các ứng dụng. Nếu tôi là bạn, tôi sẽ sử dụng phương pháp xếp hàng, bởi vì bạn có thể thông báo cho các ứng dụng chạy trên các máy khác nhau.

Ngoài ra, WCF cung cấp các phương tiện tiện lợi để phát triển dịch vụ phân tán trên thành phần MSMQ cơ bản.

Hơn nữa, Đăng ký-đăng ký là mẫu thiết kế chung được sử dụng rộng rãi trong ứng dụng khách/máy chủ giao tiếp. Trong WCF phát triển dịch vụ, Xuất bản theo dõi mẫu sẽ cũng giúp trong các trường hợp đó ứng dụng dịch vụ sẽ hiển thị dữ liệu cho các nhóm nhất định của khách hàng quan tâm đến dịch vụ và dữ liệu được cung cấp cho khách hàng model chủ động (thay vì bỏ phiếu bởi khách hàng)

0

Làm thế nào về ổ cắm mạng? Bạn có thể làm cho người nghe và người gửi trên các cổng khác nhau

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