이 연습에서는 GeoRSS 피드를 반환하기 위해 ASP.NET 웹 애플리케이션에 HTTP 처리기를 구현합니다. GeoRSS는 RSS 피드에 지리공간 데이터를 포함하기 위한 표준으로, 피드에 GML 형식의 데이터를 포함하기 위한 GeoRSS GML이라는 특정 형식을 정의합니다. 클라이언트 애플리케이션은 일반 RSS 피드와 동일한 방식으로 GeoRSS 피드를 구독할 수 있습니다. GeoRSS 형식의 데이터는 Microsoft Virtual Earth VEMap 컨트롤로 쉽게 가져올 수 있습니다.
참고: C:SQLHOLSSpatial 및 VESolutionStoreFinderSite의 완성된 웹 사이트 페이지에서 이 연습에 사용된 코드를 복사할 수 있습니다.
HTTP 핸들러 구현
1. 마이크로소프트 비주얼 스튜디오 2008을 시작하세요.
2. 파일 메뉴에서 웹 사이트 열기를 클릭한 다음 C:SQLHOLsSpatial 및 VEStarterStoreFinderSite 웹 사이트를 엽니다.
3. 솔루션 탐색기에서 App_Code를 확장한 다음 GeoRSSHandler.vb를 두 번 클릭하여 코드 편집기에서 엽니다.
참고: HTTP 핸들러는 웹 애플리케이션에 대한 HTTP 요청을 처리하는 코드 모듈입니다. ASP.NET 웹 응용 프로그램에 대한 요청은 일반적으로 기본 ASP.NET 요청 처리기에 의해 처리되지만 특정 파일 확장명에 대한 사용자 지정 처리기를 만들 수 있습니다. 이 예에서는 확장자가 .georss인 파일에 대한 요청을 처리하는 핸들러를 구현합니다.
4. 기존 코드를 확인하세요. 들어오는 요청을 처리하는 프로세스를 ProcessRequest라고 합니다. 이 절차는 불완전하며 코드에 추가해야 하는 광범위한 주석이 포함되어 있습니다.
5. GeoRSS 피드 구축 주석 아래에 다음 코드를 추가하여 HTTP 핸들러에서 반환할 GeoRSS 피드 구축을 시작합니다.
rssOutput.AppendLine(" rssOutput.AppendLine("xmlns:georss='http://www.georss.org/georss'") rssOutput.AppendLine("xmlns:gml='http://www.opengis.net/gml '>") rssOutput.AppendLine("") rssOutput.AppendLine("저장소 위치") rssOutput.AppendLine("") rssOutput.AppendLine("" + System.DateTime.Now + "") rssOutput.AppendLine("") rssOutput.AppendLine("SQL 서버") rssOutput.AppendLine("")
6. 데이터베이스에 대한 연결 열기 주석 아래에 다음 코드를 추가합니다.
sqlConn.Open()
7. GetStoresGML 저장 프로시저를 사용하여 기본적으로 모든 매장 가져오기 주석 아래에 다음 코드를 추가합니다.
spName = "GetStoresGML"
참고: 기본적으로 이 HTTP 처리기에 대한 요청은 GetStoresGML 저장 프로시저를 호출하고 모든 상점이 포함된 GeoRSS 피드를 반환합니다.
8. searchFrom 매개변수가 제공되면 GetNearbyStores를 사용하고 제공된 위도 및 경도 좌표를 매개변수로 추가라는 주석 아래에 다음 코드를 추가합니다.
Dim searchFrom As String = context.Request.QueryString("SearchFrom") If Not searchFrom Is Nothing Then spName = "GetNearbyStoresGML" Dim latLong() As String = Split(searchFrom, ",", 2) cmd.Parameters.Add(New SqlParameter("Lat", latLong(0))) cmd.Parameters.Add(New SqlParameter("Long", latLong(1))) End If
참고: 요청에 SearchFrom이라는 매개변수가 포함된 경우(쉼표로 구분된 위도 및 경도 좌표 쌍이 포함되어 있다고 가정) 핸들러는 이 매개변수에서 위도 및 경도 값을 추출하고 GetNearbyStoresGML 저장 프로시저를 사용하여 GeoRSS를 반환합니다. 요청한 검색 지점에서 반경 100km 이내에 있는 상점이 포함된 피드입니다.
9. 명령 텍스트로 저장 프로시저 이름 지정 주석 아래에 다음 코드를 추가합니다.
cmd.CommandText = spName
10. 이 행에 대한 요소 생성 주석 아래에 다음 코드를 추가하여 저장 프로시저 결과의 각 행에 대한 태그를 생성합니다.
rssOutput.AppendLine("")
11. 제목과 설명에 열 0과 1을 사용 주석 아래에 다음 코드를 추가하여 저장 프로시저에서 반환된 데이터를 기반으로 ", geomRdr.GetValue(0)))를 생성합니다.
rssOutput.AppendLine(String.Format("{0}", _ geomRdr.GetValue(1)))
12. 요소 추가 주석 아래에 다음 코드를 추가하여 이 항목에 대한 요소를 생성합니다.
rssOutput.AppendLine("")
13. 열 2에서 지리 인스턴스 GML 가져오기 주석 아래에 다음 코드를 추가하여 저장 프로시저 결과에서 GML 데이터를 검색합니다.
gml = geomRdr.GetValue(2).ToString()
14. 출력 XML에 요소 추가 주석 아래에 다음 코드를 추가하여 GeoRSS 피드에 GML 데이터를 추가합니다.
rssOutput.AppendLine(gml)
15. 닫기 및 요소 주석 아래에 다음 코드를 추가합니다.
rssOutput.AppendLine("") rssOutput.AppendLine("")
16. 문서를 닫고 응답으로 보내기 주석 아래에 다음 코드를 추가하여 GeoRSS 피드를 완성하고 요청자에게 보냅니다.
rssOutput.Append("") context.Response.Write(rssOutput.ToString())
17. GeoRSSHHandler.vb를 저장합니다.
HTTP 핸들러 등록
1. 솔루션 탐색기에서 web.config를 두 번 클릭하여 편집기에서 엽니다.
2. 섹션의 .georss 요청에 GeoRSSHHandler 등록 주석 아래에 다음 XML을 추가합니다.
<add verb="*" path="*.georss" type="GeoRSSHHandler" verify="false"/>
참고: 인터넷 정보 서비스가 이러한 파일에 대한 요청을 올바른 처리기로 전달할 수 있도록 특정 파일 확장자에 대한 HTTP 처리기를 등록해야 합니다.
3. web.config를 저장합니다.
HTTP 핸들러 테스트
1. 솔루션 탐색기에서 트리 루트에 있는 웹 사이트 프로젝트 파일을 클릭한 다음 F4 키를 눌러 해당 속성을 확인합니다.
2. 포트 번호 속성에 주의하세요.
3. 사이트 메뉴에서 시작 옵션을 클릭합니다.
4. URL 시작을 선택하고 다음 URL을 입력한 후(port를 웹 사이트의 포트 번호 속성 값으로 대체) 확인을 클릭합니다.
http://localhost:/storefindersite/test.georss
5. 디버그 메뉴에서 디버깅하지 않고 실행 시작을 클릭합니다.
6. Microsoft Internet Explorer ®가 열리면 매장 이름에 대한 RSS 피드가 포함된 페이지를 봅니다.
7. Internet Explorer에서 웹 페이지의 아무 곳이나 마우스 오른쪽 버튼으로 클릭한 다음 소스 보기를 클릭하여 해당 페이지의 소스 파일을 메모장에서 엽니다. 이 페이지의 소스는 이전에 생성한 HTTP 처리기에 의해 생성된 GeoRSS 피드입니다.
8. 메모장을 닫습니다.
9. Internet Explorer의 주소 표시줄에서 URL에 다음 쿼리 문자열을 추가하고 Enter 키를 누릅니다.
?SearchFrom=34.000000,-118.000000
10. 생성된 GeoRSS 피드에 검색 영역과 그 안의 모든 매장이 포함되어 있는지 확인합니다.
11. 인터넷 익스플로러를 닫습니다.