10. 1 공통 라이브러리 만들기

검색 서비스와 클라이언트에서 사용할 공통 라이브러리를 만듭시다. 공통 라이브러리 이름은 GenericSearchLib라고 할게요.

공통 라이브러리로 랭커 라이브러리를 직접 사용하는 것은 클라이언트 측에 주요 라이브러리를 배포하는 결과를 초래하므로 여기에서는 리플렉션을 이용하여 래핑한 클래스를 제공하기로 합시다.

여러분께서 아시는 것처럼 .NET 리모팅 서버스로 제공할 공통 라이브러리의 클래스는 MashalByRefObject에서 파생한 형식이여야 합니다. GenericSearch 클래스 이름으로 정의할게요.

검색 서비스에서는 랭커 라이브러리를 참조합니다. 그리고 입력 인자로 검색 질의를 받고 결과로 RankedUrl 목록을 반환합니다. 그런데 .NET 리모팅에서는 제네릭 컬렉션을 인자로 사용할 수가 없으므로 ArrayList를 반환하는 것으로 할게요.

메서드에서는 제일 먼저 랭커 라이브러리를 로딩하고 랭커 라이브러의 Ranker 형식을 얻어옵니다.

질의에 사용할 Request 메서드의 리플렉션 정보인 MethodInfo를 얻어옵니다.

질의에 사용할 인자를 object 배열로 만듭니다.

Request 메서드의 리플렉션 정보 개체를 이용하여 실행합니다.

얻어온 질의 결과로 ArrayList 개체를 생성하여 이를 반환합니다.

 

▷ GenericSearch.cs