2013-07-21 3 views
1

감지 다음과 같은 시나리오는 다음과 같습니다는 데이터베이스 쿼리 업데이트

  1. 클라이언트 A와 클라이언트 B가 모두 응용 프로그램에 로그인.
  2. 클라이언트 A와 클라이언트 B의 gridview가 채워집니다 (업로드 된 파일 표시).
  3. 클라이언트 A는 데이터베이스에 파일을 업로드합니다.
  4. 클라이언트 B는 추가 된 데이터 (클라이언트 A가 업로드 한 파일)가 있음을 감지하고 다시 그리드 뷰를 다시 채워야합니다.

4 단계에서 작동하는 흐름을 알아야합니다. SqlDependency에 대해 읽었으며이 기사를 보았습니다 http://rusanu.com/2007/11/01/remove-pooling-for-data-changes-from-a-wcf-front-end/
그러나이 기사에서는 SQL Server 2008에서 사용되지 않는 Notification Services를 사용합니다. 클라이언트에 코드를 등록하는 방법을 알고 싶습니다. 데이터베이스에 쿼리 결과가 변경되었음을 감지했습니다. 감사합니다

편집은
현재 옵션은 SqlDependency, 트리거, WCF, 옵저버 패턴입니다. 누구든지이 솔루션 중 누구라도 내 시나리오에서 구현할 수 있는지 여부를 알고 있다면 자유롭게 의견을 말하고 알려주십시오.

답변

2

응용 프로그램 계층에서이 작업을 수행 할 수 있습니다. 데이터베이스의 파일을 업데이트하기 위해 메소드/클래스를 중앙 집중화 할 수 있습니다. 그러면 옵저버 (옵저버 패턴)를 등록하여 업데이트 알림을받을 수 있습니다. 이렇게하면 데이터베이스에서 데이터가 변경 될 때 여러 클라이언트를 새로 고칠 수 있습니다.

위의 제안은 다른 프로세스 또는 직접 DB 업데이트로 인한 데이터 변경이없는 경우에만 작동합니다.

+0

설명하는 방법을 보여주는 샘플이 있습니까? 감사합니다 – user2541163

+0

사실 인터넷에서 옵저버 패턴에 대해 읽을 수 있습니다.하지만 일들을 단순하게 유지하기 위해 잠시 무시하고 DB 테이블을 업데이트 할 DAO 또는 서비스에 알림을 받아야하는 객체를 하드 코드화합니다. – Mangoose

+0

여전히 약간 혼란 스럽습니다. 클라이언트 A가 데이터베이스의 파일을 업데이트하고 옵저버를 등록하면 클라이언트 B가 옵서버가 등록되었음을 알 수 있습니까? – user2541163

1

틀렸을 때 기사가 Notification Services를 사용하지 않습니다. 기사에서 사용되는 다음은 위에

  • 웹 서비스 (WCF 이중 채널) 클라이언트가 호출하는있다; 클라이언트에 데이터에서 변경 될 때 호출되는 콜백이 있습니다. 이것은 데이터베이스 폴링과 함께 사용할 수 있습니다. 다른 한편으로는 자료 은 데이터 변경에 대한보다 진보 된 기술을 사용합니다.
  • 기본 데이터 액세스 계층에서 앱 서버는 일반 ADO.Net 연결을 사용합니다. 은 SqlDependency를 사용합니다. 이 기술을 사용하여 구독자는 데이터가 변경 될 때 이 해고 될 이벤트를 첨부합니다. 서버가 즉시 업데이트 된 데이터를 클라이언트에
  • 데이터베이스 쪽 자체에 보내면 SQL Server Service Broker는 내부적으로 SqlDependency 에 의해 폴링을 방지하기 위해 사용됩니다. Service Broker 개체를 조작하는 방법을 알고있는 경우 직접 수동으로이 작업을 수행 할 수 있습니다.

따라서이 기술에서는 더 이상 사용되지 않는 Notification Services를 사용하지 않습니다. 이 기사에서는 SQL Server 2012를 사용해도 시작해야하는 모든 내용을 설명합니다.

+0

감사 또는 설명 – user2541163