11.2.2 구현

WSE Manager 응용은 검색 서비스와 웹 로봇 서비스를 이용합니다. 두 가지 서비스 모두 .NET 리모팅 서비스를 사용하므로 System.Runtime.Remoting 어셈블리를 참조 추가합니다.

그리고 검색 서비스에서 제공하는 MashalByReference 개체를 참조하기 위해 서버와 클라이언트 모두 참조해야 하는 GenericSearchLib 어셈블리를 추가합니다.

웹 로봇 서비스에서 제공하는 개체를 참조하기 위해 GenericWebRobotLib 어셈블리를 참조 추가합니다.

그리고 RankedUrlControlLib 어셈블리와 DBMForAllLib, DBMForSearchLib, WSECore 어셈블리도 참조 추가합니다.

MainForm의 Load 이벤트 핸들러를 추가하세요.

이벤트 핸들러에서는 .NET 리모팅 서비스를 사용하기 위해 HttpChannel 개체를 생성하여 등록합니다.

웹 로봇의 활성화 상태에 따라 웹 로봇 수집 시작과 멈춤 버튼의 활성화 속성을 설정합니다. 웹 로봇의 MashalByReference 개체를 참조하기 위한 속성은 별도로 만들어서 사용합시다.

웹 로봇 서비스의 GenericWebRobot 개체와 검색 서비스의 GenericSearch 개체를 참조하기 위한 속성을 제공합니다.

 

웹 로봇 수집 멈춤과 시작 버튼 활성화를 설정하는 메서드를 작성하세요.

검색 버튼 클릭 이벤트 핸들러를 추가하세요.

검색 결과를 보여주는 ruc_result의 Clear 메서드를 호출하여 결과를 초기화합니다.

쿼리 입력 창의 Text 속성을 입력 인자로 Searcher의 Request 메서드를 호출하여 결과 목록을 얻어와서 ruc_result에 추가합니다.

검색 결과를 보여주는 ruc_reuslt 컨트롤의 RUClick 이벤트 핸들러를 추가합시다.

이벤트 핸들러에서는 이벤트 처리 인자의 RankedUrl 개체를 입력 인자로 EHBrowser 폼을 생성하여 활성화합니다. EHBrowser 부분은 EH 응용 만들기에서 작성한 것과 일치합니다.

웹 로봇 수집 시작 버튼과 멈춤 버튼 클릭 이벤트 핸들러를 추가하여 웹 로봇의 수집 여부를 설정합니다.

 

수집 주기 설정 버튼 클릭 이벤트 핸들러와 Seed 사이트 추가 버튼 클릭 이벤트 핸들러를 추가하여 웹 로봇의 설정 주기 및 Seed 사이트 추가 메서드를 호출합니다.

수집 대상 목록 새로고침 버튼 클릭 이벤트 핸들러를 추가하세요.

수집 대상 목록 ListView의 항목을 지워줍니다.

EHDbmForAll 정적 클래스를 이용하여 수집 대상 목록을 얻어옵니다.

얻어온 목록으로 ListViewItem 개체를 생성하여 수집 대상 목록 ListView에 추가합니다.

수집 완료 사이트 목록 새로고침 버튼 클릭 이벤트 핸들러를 추가하세요.

수집 완료 사이트 목록을 보여주는 ListView의 항목을 지워줍니다.

EHDbmForAll 정적 클래스를 이용하여 수집 완료 사이트 목록을 얻어옵니다.

수집 완료 사이트 목록의 각 PostedUrl 개체로 ListViewItem 개체를 생성하여 수집 완료 사이트 목록에 추가합니다.

모니터링 탭 페이지의 수집 목록 새로고침 버튼의 클릭 이벤트 핸들러를 추가합니다.

수집 목록을 보여주는 ListBox 컨트롤의 항목을 지워줍니다.

수집 목록을 얻어오는 부분은 DbmForAllLib를 이용해야 할 것 같은데 아직 제공하지 않는 기능입니다. EHDbmForAll 정적 클래스에 GetPostedUrls 메서드 이름으로 수집한 페이지 목록을 제공하는 메서드를 추가하여 이를 이용합시다.

얻어온 수집 목록을 리스트 박스 목록에 추가합니다.

잠시 DbmForAllLib로 가서 EHDbmForAll 클래스에 GetPostedUrls 메서드를 작성합시다.

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

PostedUrlTable의 모든 항목을 얻어올 SqlCommand 개체를 만듭니다.

SqlCommand 개체의 연결을 개방한 후 명령을 실행합니다.

명령으로 얻어온 SqlDataReader 개체의 결과로 PostedUrl 개체를 만들어서 결과를 보관할  컬렉션에 추가하고 SqlDataReader 개체를 닫습니다.

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

 

▷ EHDbmForAll.cs에 추가한 내용(DbmForAllLib)

수집 목록 선택 변경 이벤트 핸들러를 추가하세요.

선택 항목이 없으면 핸들러를 종료합니다.

선택 항목을 PostedUrl 개체 형식으로 참조하여 결과를 보여주는 컬렉션에 추가합니다.

형태소 목록 새로고침 버튼의 클릭 이벤트 핸들러를 추가하세요.

EHDbmForAll 정적 클래스를 이용하여 형태소 목록을 얻어와서 ListBox의 DataSource 속성을 설정합니다.

 

형태소 목록 선택 변경 이벤트 핸들러를 추가하세요.

형태소 목록을 보여주는 ListView 컨트롤의 항목을 지워줍니다.

만약 선택 항목이 없으면 이벤트 핸들러를 종료합니다.

선택 항목의 이름을 참조합니다.

EHDbmForSearch 정정 클래스를 이용하여 역 파일 목록을 얻어옵니다.

얻어온 정보의 페이지 주소로 형태소 전체 개수를 얻어와서 ListViewItem 개체를 생성하여 ListView 컨트롤의 목록에 추가합니다.

 

▷ MainForm.cs

EHBrowser 컨트롤의 생성자는 순위화 한 페이지 개체를 입력 인자로 받는 것으로 변경하세요.

생성자 메서드에서는 마법사에 의해 작성한 InitializeComponent 메서드 호출로 초기 자식 컨트롤 배치 등을 마친 후에 입력 인자로 받은 순위화 한 페이지 개체의 속성으로 자식 컨트롤의 Text속성을 설정합니다. 그리고 페이지 주소를 입력 인자로 WebBrowser 컨트롤인 wb의 Navigate 메서드를 호출합니다.

▷ EHBrowser.cs

이제 WSA Manager 응용을 빌드하여 테스트 해 보세요.