6.4.3 WebRobot 서비스 테스트 클라이언트 만들기

설치한 웹 로봇 서비스가 잘 동작하는지 확인하기 위해 테스트 클라이언트를 만들어 봅시다.

테스트 클라이언트는 윈도우즈 폼 응용으로 만듭시다. 그리고 메인 폼에서 수집 가동을 시작하거나 멈추게 할 수 있고 수집 주기를 설정하고 Seed 사이트를 추가하는 등의 작업을 할 수 있게 컨트롤을 배치하세요.

 

[그림 6.7] 웹 수집 로봇 테스트 클라이언트 메인 폼 컨트롤 배치
[그림 6.7] 웹 수집 로봇 테스트 클라이언트 메인 폼 컨트롤 배치
번호 컨트롤 이름 컨트롤 유형 설명
1 btn_start_collect Button 수집 가동 버튼
2 btn_stop_collect Button 수집 멈춤 버튼
3 lb_period_info Label 정보 표시
4 tbox_period TextBox 수집 주기 입력 창
5 btn_set_period Button 수집 주기 설정 버튼
6 btn_get_period Button 수집 주기 가져오기 버튼
7 lb_depth_info Label 정보 표시
8 tbox_depth TextBox 상대적 깊이 입력 창
9 btn_set_depth Button 상대적 깊이 설정 버튼
10 btn_get_depth Button 상대적 깊이 가져오기 버튼
11 lb_seed_info Label 정보 표시
12 tbox_seed TextBox Seed 사이트 입력 창
13 btn_seed_add Button Seed 사이트 입력 버튼
14 btn_get_seedtsite Button Seed 사이트 가져오기 버튼
15 lbox_seedsite ListBox Seed 사이트 목록

[표 6.3] 웹 수집 로봇 테스트 클라이언트 메인 폼 자식 컨트롤

 

Form Load 이벤트 핸들러를 추가합니다.

 

Form Load 이벤트 핸들러에서는 .NET 리모팅 서비스에 접근하기 위한 채널 생성과 등록을 합니다.

 

그리고 .NET 리모팅 서비스에서 참조한 GenericWebRobot 개체를 이용하여 수집 가동 여부를 얻어와서 가동 및 멈춤 버튼의 활성화 상태를 변경합니다. .NET 리모팅 서비스에서 참조한 GenericWebRobot 개체는 많은 곳에서 필요하므로 속성으로 정의합시다. 그리고 버튼의 활성화 상태를 변경하는 부분도 별도의 메서드로 작성합시다.

 

WebRobot 속성에서는 .NET 리모팅 서비스에서 제공하는 GenericWebRobot 개체를 참조하여 반환합니다.

수집 가동과 멈춤 버튼의 활성화 여부는 웹 로봇의 가동 여부에 따라 설정합니다.

 

수집 가동 버튼 클릭 이벤트 핸들러를 추가하세요. 그리고 WebRobot 속성으로 참조한 개체를 통해 가동합니다. 수집 멈춤 버튼 클릭 이벤트 핸들러도 추가하여 같은 원리로 구현합니다.

 

 

수집 주기 설정 버튼 클릭 이벤트 핸들러를 추가합니다. 수집 주기 입력 창에 입력한 값을 인자로 수집 주기를 설정합니다.

 

Seed 사이트 추가 버튼 클릭 이벤트 핸들러도 같은 원리로 구현합니다. 수집 주기 가져오기 버튼 클릭 이벤트 핸들러와 상대적 깊이 얻어오기 버튼 클릭 이벤트 핸들러도 같은 원리로 구현합니다.

 

 

Seed 사이트 가져오기 버튼 클릭 이벤트 핸들러를 추가하세요. Seed 사이트를 가져오는 부분은 웹 로봇과 무관한 내용입니다. 이 부분은 DbmForAllLib에서 제공하는 것이 적절할 것입니다. 그런데 이 부분을 제공하는 부분이 없습니다. 이처럼 개발 공정에 따라 개발하다보면 앞 단계의 작업을 잘못한 것을 발견할 수 있습니다. 이 때는 발견한 문제를 해결하고 진행하세요. 여기에서는 DbmForAllLib의 EHDbmForAll 정정 클래스의 정적 메서드로 Seed 사이트 목록을 반환하는 GetSeedSite를 만들고 이를 이용하여 Seed 사이트 목록 상자를 설정할게요.

 

다음은 DbmForAllLib의 EHDbmForAll 정정 클래스에 추가할 내용입니다.

Seed 사이트 목록을 반환하는 GetSeedSite 메서드를 추가합니다.

 

결과 목록을 보관할 컬렉션을 생성합니다.

 

Seed 사이트 목록은 수집 후보 테이블의 항목 중에 상대적 깊이가 0인 사이트와 수집한 페이지 테이블에서 상대적 깊이가 0인 수집 요청 사이트입니다.

먼저 수집 후보 테이블의 항목 중에 상대적 깊이가 0인 사이트를 얻어오기 위한 개체를 생성합니다.

 

SqlCommand 개체의 연결을 열고 쿼리를 실행합니다.

 

 

SqlDataReader 개체를 순차적으로 읽어 사이트 주소를 컬렉션에 추가하고 닫습니다.

 

SqlCommand 개체의 연결을 닫습니다.

 

이번에는 수집한 페이지 테이블에서 상대적 깊이가 0인 요청 주소를 얻어오기 위해 개체를 만듭니다.

 

SqlCommand 개체의 연결을 열고 명령을 실행합니다.

 

SqlDataReader 개체를 순차적으로 읽어 결과 컬렉션에 추가합니다. 요청 주소가 같은 항목이 있을 수 있으니 존재하지 않는 주소만 추가합니다.

 

SqlDataReader 개체와 SqlCommand 개체의 연결을 닫고 결과 목록을 반환합니다.

▷ EHDbmForAll.cs에 추가할 메서드 (DBMForAll 라이브러리)

 

▷ MainForm.cs