3.4.2 WSEManager 응용 프로토 타이핑
WSEManager는 관리자가 EH WSE를 구성하고 있는 각 엔진들의 상태를 제어하거나 엔진들에 의해 만들어지는 결과물을 모니터링 할 수 있는 윈도우즈 응용 프로그램입니다.
WSEManager에서는 관리자가 Seed 사이트를 추가할 수 있어야 합니다. 그리고 웹 사이트 수집 주기를 설정하고 웹 사이트 수집을 가동하거나 멈출 수 있어야 합니다. 또한 현재까지 수집한 웹 페이지에서 발견한 형태소 목록을 확인할 수 있고 각 형태소를 선택하면 이를 포함하는 웹 페이지 목록을 확인할 수 있게 합시다. 그리고 정상적으로 검색 서비스를 할 수 있는지 확인할 수 있게 합시다.
먼저 WSEManager는 EH 응용처럼 검색할 수 있어야 합니다. 이 부분은 EH 응용 프로토 타이핑과 같은 방법으로 구성하면 될 것입니다.
이 외에 웹 로봇을 설정하는 부분과 검색 결과를 확인할 수 있어야 하는데 여기에서는 탭 컨트롤을 이용하여 사용할 수 있게 합시다.
따라서 WSEManager 응용 프로토 타이핑은 검색 서비스 탭과 웹 로봇 설정 탭, 모니터링 탭으로 구성하기로 합시다.
그리고 어느 탭을 선택하든지 웹 수집 로봇이 웹 페이지를 시작하거나 멈추게 하는 버튼을 사용할 수 있게 합시다.
먼저 Windows Form 응용 프로젝트를 생성하고 프로젝트 명을 WSE Manager 예광탄으로 정하세요.
그리고 다음처럼 메인 폼에 자식 컨트롤을 배치합니다. 메인 폼에는 웹 페이지 수집을 가동시키는 버튼과 웹 페이지 수집을 멈추는 버튼을 배치합니다. 그리고 목적에 맞게 선택하여 사용할 수 있는 탭 컨트롤을 추가합니다.
탭 컨트롤에는 검색 서비스와 웹 로봇 설정, 모니터링을 선택할 수 있는 탭 페이지를 추가합니다.
[그림 3.29]는 검색 서비스 탭을 선택하였을 때의 화면입니다.
[그림 3.29] WSE Manager 메인 폼 컨트롤 배치 검색 서비스 탭
번호 |
컨트롤 이름 |
컨트롤 유형 |
설명 |
1 |
btn_start |
Button |
웹 로봇 수집 가동 |
2 |
btn_stop |
Button |
웹 로봇 수집 멈춤 |
3 |
tc_main |
TabControl |
탭 컨트롤 |
4 |
tp_search |
TabPage |
검색 페이지 |
5 |
tp_set_robot |
TabPage |
웹 로봇 설정 페이지 |
6 |
tp_monitoring |
TabPage |
모니터링 페이지 |
7 |
lb_query |
Label |
단순 정보 표시 |
8 |
tbox_query |
TextBox |
검색 질의 입력 창 |
9 |
btn_search |
Button |
검색 요청 버튼 |
10 |
ruc_result |
RUListControl |
검색 결과 컬렉션 |
[표 3.6] WSE Manager 예광탄 메인 폼과 검색 탭 페이지의 자식 컨트롤
메인 폼의 타이틀 속성을 WSE Manager 예광탄 폼으로 변경합니다. 그리고 btn_stop의 Enable 속성을 false로 변경하세요. btn_start와 btn_stop 클릭 이벤트 핸들러를 추가하여 Enbale 속성을 변경하게 구현합니다. bnt_search 클릭 이벤트 핸드러도 추가하여 가상의 결과를 추가하는 형태의 코드를 작성합니다.
private void btn_start_Click(object sender, EventArgs e)
{
btn_start.Enabled = false;
btn_stop.Enabled = true;
}
private void btn_stop_Click(object sender, EventArgs e)
{
btn_start.Enabled = true;
btn_stop.Enabled = false;
}
private void btn_search_Click(object sender, EventArgs e)
{
ruc_result.AddRankdedUrl(new RankedUrlControl());
ruc_result.AddRankdedUrl(new RankedUrlControl());
ruc_result.AddRankdedUrl(new RankedUrlControl());
ruc_result.AddRankdedUrl(new RankedUrlControl());
ruc_result.AddRankdedUrl(new RankedUrlControl());
}
이번에는 웹 로봇 설정 탭의 자식 컨트롤을 배치합시다.
설정 탭에는 수집 주기를 선택하여 설정할 수 있게 합니다. 수집 주기는 특정 범위 내의 수를 선택할 수 있는 NumericUpDown 컨트롤을 사용하고 설정 버튼으로 설정 요청하게 합시다.
그리고 Seed 사이트를 설정할 수 있게 합시다. Seed 사이트를 입력할 수 있게 TextBox 컨트롤과 추가할 수 있는 버튼을 배치합니다.
관리자가 사용하기 쉽게 수집 대상 사이트 목록과 수집 완료한 사이트 목록을 빠르게 확인할 수 있게 리스트 뷰도 배치합니다.
[그림 3.30] WSE Manager 설정 탭 페이지 컨트롤 배치
번호 |
컨트롤 이름 |
컨트롤 유형 |
설명 |
1 |
lb_period |
Label |
단순 정보 표시 |
2 |
nud_period |
NumericUpDown |
수집 주기 선택 |
3 |
btn_set_period |
Button |
수집 주기 설정 |
4 |
lb_seed_site |
Label |
단순 정보 표시 |
5 |
tbox_seed_site |
TextBox |
Seed 사이트 입력 창 |
6 |
btn_add_seed |
Button |
Seed 사이트 추가 |
7 |
lb_candidate_list |
Label |
단순 정보 표시 |
8 |
lb_posted_list |
Label |
단순 정보 표시 |
9 |
lv_candidate |
ListView |
수집 대상 리스트 뷰 |
10 |
ch_addr |
ColumnHeader |
컬럼 헤더 |
11 |
ch_depth |
ColumnHeader |
컬럼 헤더 |
12 |
lv_posted |
ListView |
수집 완료 리스트 뷰 |
13 |
ch_posted_addr |
ColumnHeader |
컬럼 헤더 |
14 |
ch_origin_addr |
ColumnHeader |
컬럼 헤더 |
15 |
ch_posted_depth |
ColumnHeader |
컬럼 헤더 |
[표 3.7] WSE Manager 설정 탭 페이지의 자식 컨트롤
이 책에서는 수집 주기를 5~100 초로 설정할 수 있게 할게요. 따라서 nud_period의 최소값과 최대값 속성을 5와 100으로 설정합시다.
그리고 수집 대상 리스트 뷰와 수집 완료 리스트 뷰에 가상의 항목을 추가합시다.
예광탄을 만들 때 리스트와 같은 컨트롤을 비어있는 상태로 만들지 마시고 가상의 항목을 추가하여 어떠한 데이터를 표시할 것인지 알 수 있게 하는 것이 좋습니다. 이해 관계자는 비어있는 컨트롤을 보고 어떤 내용을 표시하기 위한 것인지 판단하기 어려울 수 있으며 개발자와 다른 생각을 할 수도 있습니다.
마지막으로 모니터링 탭 페이지의 자식 컨트롤을 배치합시다.
모니터링 탭 페이지에는 수집 완료한 페이지 목록을 보여주는 ListBox 컨트롤을 배치합시다. 그리고 수집 완료한 페이지 목록에서 특정 항목을 선택하였을 때 페이지의 상세 정보를 보여줄 컨트롤도 배치합니다. 페이지의 상세 정보를 보여주는 컨트롤은 EH 응용 예광탄을 만들면서 같이 제작한 RankedUrlControl을 사용합니다.
그리고 수집한 페이지의 형태소 목록을 보여주는 ListBox 컨트롤을 배치하고 형태소 목록에서 특정 항목을 선택하면 이에 관한 상세 정보를 보여주는 ListView 컨트롤을 배치합니다.
[그림 3.31] WSE Manager 모니터링 탭 페이지 컨트롤 배치
번호 |
컨트롤 이름 |
컨트롤 유형 |
설명 |
1 |
lb_posted_page |
Label |
단순 정보 표시 |
2 |
lbox_posted_page |
ListBox |
수집 완료 목록 |
3 |
lb_morpheme_list |
Label |
단순 정보 표시 |
4 |
lbox_morpheme |
ListBox |
형태소 목록 |
5 |
lb_page_info |
Label |
단순 정보 표시 |
6 |
ruc_selected |
RankedUrlControl |
사이트 상세 정보 |
7 |
lb_morpheme_info |
Label |
단순 정보 표시 |
8 |
lview_morpheme |
ListView |
형태소 상세 정보 |
9 |
ch_posted_url |
ColumnHeader |
컴럼 헤더 |
10 |
ch_refcnt |
ColumnHeader |
컬럼 헤더 |
11 |
ch_totalcnt |
ColumnHeader |
컬럼 헤더 |
[표 3.8] WSE Manager 모니터링 탭 페이지의 자식 컨트롤
모니터링 탭 페이지에서도 수집 완료 목록에 가상의 항목을 추가합시다. 여기에서는 관리자가 확인하기 쉽게 가상의 웹 페이지 제목을 추가하는 것으로 할게요.
그리고 형태소 목록에도 가상의 항목을 추가합니다. 또한 형태소 목록에서 특정 항목을 선택하였을 때 상세 정보를 보여줄 lview_morpheme 컨트롤에도 가상의 항목을 추가하세요.
이처럼 프로토 타이핑을 작성하면 이해 관계자에게 요구 분석한 것이 맞는지 확인하기 쉽습니다. 그리고 설계 및 구현 단계에서 각자가 맡은 부분을 진행하는 좋은 출발점이 됩니다.
일반적으로 예광탄은 특정 기술을 사용하기 전에 비용을 예측하거나 특정 기능을 구현할 때 어떻게 구현하면 좋을 지 결정하는 프로그램을 말하며 프로토 타이핑과는 다른 의미로 사용하는데 이 책에서는 예광탄과 프로토 타이핑을 명확하게 구분하지 않겠습니다.
'프로그래밍 기술 > 웹 검색 엔진 만들기' 카테고리의 다른 글
4. 4 InvertedElem 클래스 구현 (0) | 2017.12.06 |
---|---|
4. 3 Morpheme 클래스 구현 (0) | 2017.12.06 |
4. 2 PostedUrl (수집한 사이트)클래스 구현 (0) | 2017.12.06 |
4. 1 Candidate(수집 후보 사이트) 클래스 구현 (0) | 2017.12.06 |
4. WSE Core 설계 및 구현 (0) | 2017.12.06 |
3. 4 프로토 타이핑 (0) | 2017.12.06 |
3. 3 DB 설계 (0) | 2017.12.06 |
3. 2 시퀀스 다이어그램 (0) | 2017.12.05 |
3. 1 컴포넌트 다이어그램 (0) | 2017.12.05 |
3. 아키텍쳐링 (0) | 2017.12.05 |