반응형

C# 267

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

6.4.3 WebRobot 서비스 테스트 클라이언트 만들기 설치한 웹 로봇 서비스가 잘 동작하는지 확인하기 위해 테스트 클라이언트를 만들어 봅시다. 테스트 클라이언트는 윈도우즈 폼 응용으로 만듭시다. 그리고 메인 폼에서 수집 가동을 시작하거나 멈추게 할 수 있고 수집 주기를 설정하고 Seed 사이트를 추가하는 등의 작업을 할 수 있게 컨트롤을 배치하세요. [그림 6.7] 웹 수집 로봇 테스트 클라이언트 메인 폼 컨트롤 배치 /// /// Seed 사이트 목록 가져오기 메서드 /// /// Seed 사이트 목록 public static List GetSeedSite() { List list = new List(); SqlCommand scom = MakeSPCommand( "Select Url From C..

6.4.2 WebRobot 서비스 만들기

6.4.2 WebRobot 서비스 만들기 WebRobot 서비스는 윈도우즈 서비스로 만들게요. Windows 서비스 프로젝트를 추가하세요. 여기서는 WebRobotSVC라 정할게요. 디자인 창에서 마우스 우측 버튼 클릭 시 나오는 컨텍스트 메뉴에서 설치 관리자를 추가하세요. [그림 6.3] 설치 관리자 추가화면 그리고 서비스 프로세스 인스톨러의 속성 중에 Accout를 LocalService로 설정합니다. 이는 윈도우즈 서비스를 등록할 계정을 설정하는 것입니다. 그리고 서비스 인스털러 속성 창에서 서비스 이름과 설명 및 화면 표시 이름을 설정하세요. StartType은 관리 도구의 서비스를 이용하여 변경할 수 있으므로 여기에서는 디폴트 값인 Manual로 할게요. [그림 6.4] 서비스 인스톨러 속성 창..

6. 4 웹 로봇 서비스 만들기

6. 4 웹 로봇 서비스 만들기 웹 로봇은 독립적으로 수행이 가능한 서비스입니다. 또한 웹 로봇은 관리자가 설정에 사용하는 WSE Manager로 수집 주기 설정 및 Seed 사이트 등록과 웹 수집 가동 시작과 멈춤을 제어할 수 있어야 합니다. 여기에서는 웹 로봇을 .NET 리모팅 서비스를 윈도우 서비스 형태로 만들기로 할게요. 6.4.1 Generic 라이브러리 만들기 .NET 리모팅 서비스를 제공할 때는 서비스 측과 클라이언트 측에서 공통으로 사용하는 라이브러리가 필요합니다. GenericWebRobotLib 이름의 클래스 라이브러리 프로젝트를 추가합시다. .NET 리모팅 서비스에서 제공하는 클래스는 MashalByRefObject를 파생한 형식이어야 합니다. public class GenericWe..

6. 3 웹 로봇 예광탄 구현

6. 3 웹 로봇 예광탄 구현 Main 폼에 웹 수집기 개체를 참조하는 멤버 필드를 선언합니다. WebCollect wc = null; Main 폼에 Load 이벤트 핸들러를 추가합니다. private void MainForm_Load(object sender, EventArgs e) Main 폼이 로드할 때 웹 수집기 개체를 생성하고 수집 대상 사이트 목록을 갱신하는 작업을 수행합니다. wc = new WebCollect(); UpdateCandidate(); 그리고 웹 페이지 수집 이벤트 핸들러를 추가합니다. wc.WebPosted += new WebPostedEventHandler(wc_WebPosted); 수집 대상 사이트 목록을 갱신하는 메서드를 작성합시다. private void UpdateC..

6.2.5 WebPostedEventArgs 구현

6.2.5 WebPostedEventArgs 구현 웹 페이지 수집 요청의 결과를 통보하는 방법은 이벤트 방식을 사용합시다. 이를 위해 웹 페이지 수집 결과를 인자로 하는 대리자를 정의합니다. 이벤트 방식을 사용하는 대리자는 일반적인 이벤트 핸들러의 구조를 사용합시다. 일반적으로 이벤트 핸들러는 이벤트를 발생한 개체와 이벤트를 처리하기 위해 필요한 인자를 받습니다. 따라서 여기에서도 이벤트를 발생한 개체와 이벤트를 처리하기 위한 인자를 입력 인자로 받는 대리자를 정의합시다. public delegate void WebPostedEventHandler(object sendor,WebPostedEventArgs e); 웹 페이지 수집 결과 이벤트 인자 형식을 정의합시다. public class WebPoste..

6.2.4 RawPostedPage 구현

6.2.4 RawPostedPage 구현 이번에는 수집한 원본 페이지 개체 클래스인 RawPostedPage 클래스를 구현합시다. 수집한 페이지 개체 가져오기 속성을 제공합시다. 설정하기 속성은 클래스 내부에서만 접근할 수 있게 제공합시다. public PostedUrl PostedPage { get; private set; } 편의를 위해 웹 페이지 주소 가져오기 속성을 제공합시다. public string Url { get { return PostedPage.Url; } } 수집한 페이지 내부의 링크 목록 가져오기 속성을 제공합시다. 설정하기 속성은 클래스 내부에서만 접근할 수 있게 제공합니다. public List Links { get; private set; } 생성자 메서드에서는 입력 인자로 받..

6.2.3 RawUrl 구현

6.2.3 RawUrl 구현 이번에는 수집 결과 형식인 RawUrl 클래스를 구현합시다. 수집 대상 개체를 가져오기 속성을 제공합니다. 설정하기는 내부에서만 사용할 수 있게 제공합니다. public Candidate CD { get; private set; } 수집 대상 개체를 수집한 결과 페이지 목록을 가져오기 속성을 제공합니다. 요청한 웹 페이지가 프레임 형태일 때는 수집 결과 페이지가 여러 개가 발생할 수 있어서 목록을 멤버로 설정하는 것입니다. 여기에서도 설정하기 속성은 클래스 내부에서만 접근하게 제공합니다. public List PostedPages { get; private set; } 생성자는 수집 대상 개체를 입력 인자로 받는 것을 앞에서 추가하였습니다. public RawUrl(Candi..

6.2.2 WebPageGetter 구현

6.2.2 WebPageGetter 구현 이번에는 웹 페이지를 수집하는 WebPageGetter 클래스를 구현합시다. class WebPageGetter { } 멤버 이벤트로 웹 페이지 수집 완료 이벤트가 필요합니다. 이 부분은 이미 WebCollect에서 설명하였습니다. internal event WebPostedEventHandler WebPosted = null; 웹 페이지를 수집하는 방법은 여러가지 방법이 있는데 여기에서는 WebBrowser 컨트롤을 사용할게요. 이를 위해 Windows.Windows.Forms.dll을 참조 추가가 필요합니다. 멤버 필드로 웹 페이지 수집에 필요한 WebBrowser 개체를 생성합시다. WebBrowser wb = new WebBrowser(); 수집 결과를 표..

6.2.1 WebCollect 구현

6.2.1 WebCollect 구현 이제 웹 로봇 라이브러리에 필요한 형식을 구현합시다. 먼저 관리자 응용인 WSE Manager로 웹 수집을 가동하거나 멈추게 하거나 수집 주기 등을 설정할 때 사용하는 WebCollect 형식부터 구현합시다. public class WebCollect WebCollect에서는 수집 주기와 상대적 깊이, 주기적인 수집을 위한 타이머가 필요합니다. 수집 주기의 최소값과 상대적 깊이의 최대값을 상수로 정의합니다. 그리고 타이머 개체를 참조할 멤버 필드를 선언하고 상대적 깊이를 설정할 멤버 필드를 선언합니다. 상대적 깊이의 초기값은 상수로 정의한 최대값으로 설정할게요. public const int min_interval = 5000; public const int max_d..

6. 2 웹 로봇 설계 및 구현

6. 2 웹 로봇 설계 및 구현 웹 로봇 예광탄 작성에 앞서 웹 로봇 라이브러리에 필요한 형식을 역할에 맞게 설계를 먼저 합시다. 참고로 설계 및 구현의 결과로 보여주는 소스 파일은 웹 로봇 라이브러리 소스 파일입니다. 웹 로봇에는 웹 페이지를 수집하는 역할이 있어야 합니다. 웹 로봇에는 수집한 원본이 있어야 합니다. 웹 로봇에는 수집한 사이트와 사이트 내의 링크의 컬렉션을 알아야 다음 수집 대상 사이트를 확장할 수 있습니다. 웹 페이지를 수집 요청을 하였을 때 요청한 작업을 완료하면 수집한 정보를 제공해야 하는데 이 부분은 이벤트 핸들러 형태의 대리자 형식을 정의하고 이벤트 인자를 정의해야 합니다. 관리자의 요청에 따라 이와 같은 작업을 수행할 수 있는 클래스도 정의합시다. [그림 6.2] 웹 로봇 라..

반응형