2010-12-13 2 views
1

데이터베이스에서 작업을 수행해야하는 다중 계층 응용 프로그램이 C#에 있습니다 (처음 사용하는 경우 데이터베이스를 만들어 일부 데이터로 채울 수 있음). 처음에 응용 프로그램을 디자인 할 때 진행률 표시 줄 컨트롤을 고려하지 않았으며 어떤 종류의 진행 상황도보고하지 않았습니다. 데이터베이스 작업 진행률을 UI 계층에보고 할 수 있도록 응용 프로그램 디자인을 수정하려면 어떻게해야합니까? 거기에 재사용 할 수있는 솔루션이 있으며보고 기능에 대한 추가 입력을 위해 모든 기능을 수정하도록 강요하지는 않습니까?다중 계층 응용 프로그램에서 진행률 표시 줄 사용

+0

행운을 비네. (보고) 진도가 어렵다. – SLaks

답변

0

아니요. 응용 프로그램의 크기에 따라 앞서 많은 일을해야합니다.

진행률보고가 작동하려면 작업 단위 (UOW)가 완료 될 때 이벤트를 발생시키는 코드가 필요합니다. 이 이벤트는 UI 레이어에서 처리해야하고 진행률 표시기가 업데이트되어야합니다.

시작하기 좋은 곳은 BackgroundWorker를 사용하는 것입니다 (여기에 MSDN의 예제 - http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx). BackgroundWorker에 익숙해지면 응용 프로그램에 필요한 변경 사항을 결정할 수있는 더 나은 위치에 있어야합니다.

0

기능 코드를 변경하지 않고 서버 끝의 진행 정보를 업데이트하도록 서버 코드를 수정 한 다음이 정보를 별도로 쿼리 할 수있는 별도의 방법을 사용할 수 있습니다.

기존의 서버 호출에 아무런 영향을 미치지 않고 진행 상황에 대한 지원을 갱신 할 수 있습니다. 오랜 실행 작업이 진행되는 동안 업데이트 된 진행 정보를 확인하는 UI에 새 백그라운드 스레드를 추가하기 만하면됩니다.

편집 : 클라이언트에서 발생하는 작업에 대해 동일한 접근 방식이 적용될 것입니다. 하지만 정적 진행률 표시기 클래스도 여기에서 사용할 수 있습니다.

1

그렉 (Greg)이 말했듯이 앞으로 많은 연구가 이루어질 것입니다. 그러나 문제에 접근하는 데는 여러 가지 방법이 있으며 최선의 방법은 컨텍스트 정보가 클라이언트에서 응용 프로그램/데이터베이스 계층으로 전달되는 방법에 따라 다릅니다. 예를 들어, 세션 토큰 또는 트랜잭션 식별자가 쿼리/트랜잭션 또는 애플리케이션에서 클라이언트로 비동기 적으로 다시 전달 된 쿼리/트랜잭션 또는 쿼리를 실행하는 정상적인 과정에서 클라이언트에서 애플리케이션으로 전달되는 경우, 진행률보고가 필요하면 클라이언트가 쿼리 할 수있는 상태 테이블을 응용 프로그램이 업데이트하도록 할 수 있습니다. 이렇게하면 필요한 재 작업을 줄일 수 있습니다. 기본적으로 "미들웨어"를 이미 고려하여 계층간에 트랜잭션을 상관시키는 데 활용 될 수 있는지 확인해야합니다.