2009-02-13 33 views
7

Tôi đang tìm cách phát hiện mất kết nối cục bộ. Có một phương tiện để làm điều đó, như với các sự kiện trên các thành phần Corelabs?Datasnap: Có cách nào để phát hiện mất kết nối trên toàn cầu không?

Cảm ơn

EDIT: Xin lỗi, tôi sẽ cố gắng cụ thể hơn: Tôi hiện đang thiết kế một nguyên mẫu sử dụng datasnap năm 2009. Vì vậy, tôi đã có một thin client, một ứng dụng máy chủ không quốc tịch và một máy chủ cơ sở dữ liệu.

Điều tôi có thể làm là phát hiện và xử lý mất kết nối (kết nối internet) giữa ứng dụng khách và ứng dụng máy chủ để xử lý một cách thích hợp, tức là: Hiển thị thông báo lỗi cho người dùng hoặc phát hiện tắt máy chủ để chuyển hướng âm thầm trên một máy chủ ứng dụng khác.

Trong 2 tầng tôi từng quản lý với các thành phần ODAC, TOraSession có một số sự kiện để xử lý vấn đề này.

Trả lời

4

Thông thường không có sự kiện nào được kích hoạt khi kết nối bị hỏng, trừ khi một phát biểu được kích hoạt đối với cơ sở dữ liệu. Điều này là do không có cách nào để biết một mất kết nối trừ khi có một số loại ping đang hoạt động đang diễn ra.

Nhiều khung kiểm tra xem kết nối vẫn hợp lệ bằng cách thực hiện truy vấn rất nhỏ đối với máy chủ. Có thể nhận được thời gian từ một máy chủ. Đặc biệt là trong một môi trường kết nối tổng hợp.

Bạn có thể triển khai chức năng kiểm tra kết nối trong ứng dụng của mình trong một số sự kiện cơ sở dữ liệu (beforeexecute?). Hoặc tạo bộ hẹn giờ kiểm tra sau mỗi 10 giây.

+0

Tôi không chắc chắn rằng không có cách nào để phát hiện kết nối mất mát, vì mất kết nối của ổ cắm bên dưới có thể phát hiện được. Tuy nhiên, hầu hết các thư viện đều không có sự kiện nào cho nó. – mghie

1

Tạo một luồng trên máy khách định kỳ gửi một số lệnh RPC 'Ping' hoặc 'Nhịp tim' tới máy chủ.

  • nếu điều này không thành công, khách hàng biết rằng cái gì đã xảy ra với kết nối

  • nếu máy chủ không nghe khách hàng nữa đối với một số khoảng thời gian (ví dụ, hai lần so với khoảng thời gian nhịp tim), ông có thể kết luận rằng máy khách bị ngắt kết nối, tuy nhiên điều này đòi hỏi một máy chủ trạng thái (và thiết kế của bạn là không trạng thái nên nó sẽ yêu cầu xử lý sự kiện trong một hệ thống thứ cấp, có thể được nạp thông qua một hàng đợi thư)

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