2012-07-25 26 views
8

Trong môi trường đa người dùng: Làm cách nào để đảm bảo rằng tất cả khách hàng đều nhìn thấy từng người thay đổi? Cách tốt nhất để làm việc này là gì?Kỹ thuật trong ứng dụng đa người dùng C# nơi tất cả khách hàng có dữ liệu cập nhật từ cơ sở dữ liệu trung tâm

Trong quá khứ tôi đã tạo một ứng dụng C# và cài đặt nó trên 2 máy tính. Nó kết nối với một máy chủ SQL Express trung tâm (ứng dụng máy khách đã làm việc với Entity Framework Code First như ORM). Khi client1 thêm một bản ghi vào cơ sở dữ liệu, điều này không trực tiếp hiển thị với client2. Chỉ khi client2 lấy tất cả dữ liệu một lần nữa (làm mới cứng), thay đổi này có thể nhìn thấy được.

Bây giờ tôi đang tìm một giải pháp về cách 'đồng bộ' này (?) Có thể hoặc nên được thực hiện. Tôi thích làm việc Entity Framework Code Đầu tiên, nó sẽ là tốt đẹp một giải pháp có thể giữ điều này. Ngoài ra ứng dụng vẫn còn trong giai đoạn rất sớm. Tôi nghĩ rằng có một cơ sở dữ liệu trung tâm và nhiều khách hàng kết nối với nó, nhưng tôi không chắc chắn nếu đây là một giải pháp tốt. Nếu các đề xuất/giải pháp của bạn sẽ yêu cầu một ứng dụng máy chủ trung tâm nơi các máy khách kết nối tới (và nơi ứng dụng máy chủ thực hiện xử lý cơ sở dữ liệu) thì điều này sẽ không có vấn đề gì.

Nếu có thể một giải pháp mẫu cơ bản hoặc một số mã cơ bản cho thấy cách luôn làm việc với dữ liệu mới nhất có thể sẽ rất hữu ích!

câu hỏi tương tự:

Cảm ơn trước

Trả lời

2

Nó phụ thuộc vào môi trường của bạn và các dữ liệu bạn đang quản lý và kiến ​​trúc bạn muốn.

Nếu OK/chấp nhận để cho khách hàng có bản sao dữ liệu mà họ có thể làm việc, họ cần làm việc với dữ liệu khi không kết nối với máy chủ trung tâm, sau đó bạn có thể sử dụng Khung đồng bộ.

Bạn sẽ có SQL Server trung tâm như bình thường và sử dụng Khung đồng bộ hóa để đồng bộ hóa với khách hàng.

Bạn sẽ viết một "nhà cung cấp", mà sẽ quyết định cách giải quyết thay đổi đối với dữ liệu tương tự của khách hàng khác nhau, vv

Bạn sẽ phải đặt SQL Express (hoặc có thể LocalDB (tên mới cho SQLCE)) vào các máy khách.

Sau đó, hãy nhập Mô hình/Khuôn mẫu khung thực thể của bạn để truy cập vào cơ sở dữ liệu cục bộ thay vì một cơ sở dữ liệu trung tâm.

http://blogs.msdn.com/b/sync/archive/2008/06/24/sample-sql-express-client-synchronization-using-sync-services-for-ado-net.aspx

Nếu không nó xuống để thiết kế và thực hiện một số "tầng" và làm theo một Distributed Internet/Kiến trúc Cơ sở dữ liệu/SOA.

Một tài nguyên miễn phí đẹp:

http://msdn.microsoft.com/en-us/library/ff650706.aspx

http://mtechsoa2011.blogspot.co.uk/2011/04/soa-vs-distributed-internet_27.html

Một số sách hữu ích:

http://www.amazon.co.uk/Service-Oriented-Architecture-Concepts-Technology-Computing/dp/0131858580/ref=sr_1_1?s=books&ie=UTF8&qid=1343295432&sr=1-1

+0

cảm ơn đề xuất của bạn. Cá nhân này không giống như một cách làm việc tốt. Ứng dụng khách tải tất cả dữ liệu (vì một lưới và để tìm kiếm lưới), do đó, điều này có nghĩa là một localDB có toàn bộ bản sao của một máy chủ sql (express). ở đó tôi đã thấy những hạn chế (ví dụ: trang web cơ sở dữ liệu tối đa từ localDB vs máy chủ sql vs sql express). Bất cứ một đề nghị nào khác? – juFo

1

giải pháp khác là tạo ra một "giao diện" cho cơ sở dữ liệu của bạn và mỗi đặt hoạt động dữ liệu từ một số khách hàng có thể thông báo cho các khách hàng khác. Bạn có thể thực hiện giao diện như vậy bởi WCF với callbacks của nó. Tôi không có mã đơn giản cho giải pháp kiến ​​trúc toàn bộ ... Nếu bạn sẽ hỏi thêm câu hỏi cụ thể về việc xây dựng ứng dụng n-tier với WCF, tôi sẽ cố gắng trợ giúp.

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