2011-07-12 34 views
7

Tôi muốn tạo một ứng dụng trong C# với phía máy khách và máy chủ. Nó sẽ hoạt động trên mạng cục bộ. Các phía máy khách phải kiểm tra các bản cập nhật trên một máy chủ SQL từ xa. Giả sử chúng tôi đã đặt khoảng thời gian cập nhật thành 2 giây. Nếu tôi có 20 ứng dụng phía máy khách, thì họ sẽ gửi truy vấn đến SQL Server từ xa cứ sau 2 giây và nó sẽ tải máy chủ khá nhiều. Bây giờ tôi muốn biết là có cách nào để giảm tải máy chủ hoặc nó chỉ là cách để kiểm tra các bản cập nhật?Làm cách nào để giảm tải SQL Server từ xa?

+0

là gì các dữ liệu bạn cần phải kiểm tra thường xuyên? – Gareth

+0

hệ thống quản lý hàng đợi của nó –

Trả lời

14

Từ quan điểm của tôi, không cần phải cho phép khách hàng kết nối trực tiếp DB serer. Sẽ có thêm một tầng ở đây sẽ chỉ kết nối với máy chủ và thông tin bộ nhớ cache về các bản cập nhật. Khách hàng của bạn nên kết nối với thông tin bổ sung này và làm việc với thông tin được lưu trong bộ nhớ cache.

CẬP NHẬT Theo như tôi hiểu, vấn đề xuất hiện vì tất cả các khách hàng của bạn ping máy chủ DB của bạn mỗi hai giây. Giải pháp cho vấn đề này là tạo ra một mô-đun đặc biệt chỉ có quyền truy cập vào máy chủ DB và yêu cầu nó để cập nhật. Ví dụ, cứ hai giây một lần. Nếu bản cập nhật đã sẵn sàng, nó sẽ có thể lấy nó từ DB và lưu trữ. Đây là những gì tôi có nghĩa là dưới cấp bổ sung.

Bây giờ, hãy quay lại với khách hàng của bạn. Họ sẽ có thể giao tiếp với mô-đun này và nhận thông tin từ nó về một bản cập nhật sẵn sàng (thông tin này được lưu trữ và do đó nó thực sự nhanh chóng có được nó. Ngoài ra, bạn không cần ping máy chủ theo mọi yêu cầu của khách hàng). Nếu bản cập nhật sẵn sàng, hãy tìm nạp nó về phía máy khách và làm việc ở phía máy khách.

Đối với giao tiếp giữa cấp bổ sung này và khách hàng. Vì bạn đang làm việc với .NET, tôi khuyên bạn nên xem WCF, theo quan điểm của tôi, trở thành một cách tiếp cận tiêu chuẩn để thực hiện truyền thông giữa các tiến trình trong .NET. Có rất nhiều thông tin trong mạng về nó, tôi sẽ đăng các liên kết ngay.

Đây là yêu thích cuốn sách WCF của tôi:

Programming WCF Services

MSDN nhập:

Windows Communication Foundation

+0

vui lòng giải thích chi tiết hơn, nếu bạn có thể, thx trước –

+0

@ user841470: Nói cách khác gọi lớp trung lưu. Bạn có thể sử dụng một cái gì đó giống như một SqlCacheDependency lưu trữ một truy vấn hoặc bảng. Bằng cách này, bộ nhớ cache luôn có dữ liệu mới nhất. Điều này có thể được thực hiện như một dịch vụ Web hoặc dịch vụ WCF đang làm bộ nhớ đệm. Ứng dụng gọi dịch vụ web/WCF, dữ liệu có liên quan được trả về. –

+0

@ user841470, tôi đã cập nhật câu trả lời – platon

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