Share via


설치하는 동안 다른 XML Web Service를 대상으로 하도록 응용 프로그램 리디렉션

Steve Hoag

Visual Studio 팀

Microsoft Corporation

요약: 이 기사에서는 Visual Basic .NET에서 URL Behavior 속성과 설치 관리자 클래스 및 웹 설치 프로젝트를 사용하여 다른 XML Web Service를 대상으로 하도록 리디렉션될 수 있는 웹 응용 프로그램을 만드는 방법에 대해 설명합니다(8페이지/인쇄 페이지 기준).

목차

소개 소개
URL Behavior를 동적으로 만들기 URL Behavior를 동적으로 만들기
설치 관리자 클래스 추가 설치 관리자 클래스 추가
설치 프로젝트 추가 설치 프로젝트 추가
사용자 지정 작업으로 설치 관리자 클래스 추가 사용자 지정 작업으로 설치 관리자 클래스 추가
사용자 인터페이스 대화 상자 추가 사용자 인터페이스 대화 상자 추가
빌드 및 설치 빌드 및 설치
결론 결론

소개

XML Web Service를 대상으로 하는 응용 프로그램을 배포할 경우 대부분 웹 서버에 이미 설치되어 있는 XML Web Service를 대상으로 합니다. 이렇게 하는 것이 일반적이지만 프로덕션 버전의 응용 프로그램을 배포할 때 다른 XML Web Service를 대상으로 할 경우도 있습니다. 예를 들어, 배포 서버에 있는 테스트 버전의 XML Web Service를 대상으로 했지만 완성된 응용 프로그램에서는 다른 서버에 설치된 버전의 XML Web Service를 대상으로 해야 할 경우도 있습니다. 또한 응용 프로그램을 설치하는 사용자가 설치하는 동안에 XML Web Service의 버전(예: 인트라넷에 있는 버전 또는 방화벽 외부에서 액세스할 수 있는 버전 등)을 선택하도록 할 수도 있습니다.

이 기사에서는 다른 XML Web Service를 대상으로 하도록 리디렉션할 수 있는 웹 응용 프로그램을 만드는 방법에 대해 설명합니다. 이 프로세스에는 다음이 포함됩니다.

  1. 런타임에 XML Web Service를 찾도록 URL Behavior 속성을 지정

  2. 설치 끝 부분에서 사용자 지정 작업을 실행하는 설치 구성 요소 추가

  3. 설치 프로젝트를 사용하여 응용 프로그램의 사용자 지정 인터페이스를 포함하는 설치 관리자 만들기

첫 번째 단계에서는 XML Web Service에 대한 웹 참조를 포함하는 웹 응용 프로그램을 만듭니다. 웹 응용 프로그램 작성에 대한 자세한 내용은 Visual Studio .NET 설명서의 Walkthrough: Creating an XML Web Service Using Visual Basic or Visual C#  tous.gif을 참조하십시오.

URL Behavior를 동적으로 만들기

런타임에 XML Web Service를 찾기 위해 응용 프로그램에서는 XML Web Service의 URL을 보관합니다. XML Web Service에 대한 웹 참조의 URL Behavior 속성은 URL이 저장되어 있는 장소를 결정합니다. URL Behavior 속성을 Static(기본값)으로 설정하면 URL이 웹 참조의 일부로 하드 코딩됩니다. URL Behavior 속성을 Dynamic으로 설정하면 URL을 지정하는 항목이 응용 프로그램 Web.config 파일의 appSettings 섹션에 추가됩니다.

URL Behavior 속성을 Dynamic 으로   설정하려면  

  1. 솔루션 탐색기에서  참조 노드를 확장하고 XML Web Service에 대한 참조를 선택합니다.

  2. 속성 창에서 URL Behavior 속성을 선택하여 Dynamic으로 변경합니다.

  3. 솔루션 탐색기에서 Web.config 파일을 선택하고 두 번 클릭하여 엽니다.

    파일의 끝 부분에 XML Web Service의 이름을 지정하는 키와 URL을 지정하는 값을 포함하는 <appSettings> 섹션이 있습니다. 예를 들어, 로컬 컴퓨터의 MyWebService를 액세스하는 MyWebApp라는 응용 프로그램인 경우에는 다음과 같습니다.

    <appSettings><add key="MyWebApp.localhost.Service1"
    value=https://localhost/MyWebService/Service1.asmx/></appSettings>

다음 단계에서는 설치하는 동안 .config 파일을 수정하기 위해 사용할 설치 관리자 클래스를 추가합니다.

설치 관리자 클래스 추가

설치 구성 요소라고도 하는 설치 관리자 클래스는 설치하는 동안 사용자 지정 작업으로 호출되는 .NET Framework 클래스입니다. 이 경우에는 설치 관리자를 추가하고 .config 파일을 수정할 코드를 추가하여 설치 관리자의 Install 메서드를 재정의합니다. 설치 관리자 클래스에 대한 자세한 내용은 Visual Studio .NET 설명서의 설치 구성 요소 소개를 참조하십시오.

설치   관리자   클래스를   추가하려면  

  1. 프로젝트 메뉴에서 새 항목 추가를 선택합니다.

  2. 새 항목 추가 대화 상자에서 설치 관리자 클래스를 선택하고 이름을 WebServiceInstaller로 변경합니다.

    열기를 클릭하면 클래스가 프로젝트에 추가되고 설치 관리자 클래스에 대한 디자이너가 열립니다.

  3. 디자이너를 두 번 클릭하여 코드 편집기를 엽니다.

  4. Install 메서드에 대한 다음 코드를 End Class 선언 바로 위쪽에 있는 설치 관리자 클래스 모듈 맨 아래에 추가합니다.

    Public Overrides Sub Install(ByVal stateSaver As 
    

System.Collections.IDictionary)    ' CustomActionData에서 전달된 매개 변수를 가져옵니다.    Dim installlog As New System.IO.StreamWriter("Installation.log")    installlog.AutoFlush = True    Try       Dim ProvidedName As String =Me.Context.Parameters.Item("ServerName")       Dim SvcName As String = Me.Context.Parameters.Item("ServiceName")

      installlog.WriteLine("config 파일의 편집 시작")

      If ProvidedName = "" Or SvcName = "" Then          Throw New InstallException("지정된 인수 없음")       End If

      ' 리플렉션을 사용하여 config 파일의 위치를 찾습니다.       Dim Asm As System.Reflection.Assembly =           System.Reflection.Assembly.GetExecutingAssembly       Dim strConfigLoc As String       strConfigLoc = Asm.Location

      Dim strTemp As String       strTemp = strConfigLoc       strTemp = strTemp.Remove(strTemp.LastIndexOf(""),           Len(strTemp)   strTemp.LastIndexOf(""))       strTemp = strTemp.Remove(strTemp.LastIndexOf(""),           Len(strTemp)   strTemp.LastIndexOf(""))

      Dim FileInfo As System.IO.FileInfo =          New System.IO.FileInfo(strTemp & "\web.config")

      installlog.WriteLine("파일 정보: " & strTemp)

      If Not FileInfo.Exists Then          Throw New InstallException("config 파일 없음")       End If

      ' config 파일을 XML DOM으로 로드합니다.       Dim XmlDocument As New System.Xml.XmlDocument()       XmlDocument.Load(FileInfo.FullName)

      ' 올바른 노드를 찾아 새 값으로 변경합니다.       Dim Node As System.Xml.XmlNode       Dim FoundIt As Boolean = False       For Each Node In          XmlDocument.Item("configuration").Item("appSettings")          ' 주석을 생략합니다.          If Node.Name = "add" Then             If Node.Attributes.GetNamedItem("key").Value = "appname.servername.service" Then                ' "Service1.asmx"를 웹 서비스 파일의                ' 실제 이름으로 대체해야 합니다.                Node.Attributes.GetNamedItem("value").Value =                   "http:\" & ProvidedName & "" &                   SvcName & "\Service1.asmx"                FoundIt = True             End If          End If       Next Node

      If Not FoundIt Then          Throw New InstallException("Config 파일에              ServerName 섹션이 없습니다")          End If

         ' 새 config 파일을 작성합니다.          XmlDocument.Save(FileInfo.FullName)

   Finally       installlog.WriteLine("config 파일의 편집 종료")       installlog.Close()    End Try

End Sub

위 코드에서는 우선 사용자 지정 작업의 진행률을 기록할 설치 로그 파일을 만듭니다. **System.Reflection** 네임스페이스를 사용하여 설치될 어셈블리를 찾고 관련된 .config 파일을 찾습니다. .config 파일 내에서 appSettings 섹션을 찾을 때까지 반복해서 XML 문서 모델을 사용합니다. appname.servername.service 키를 찾으면 이 키에 연결된 값이 전달된 매개 변수를 포함하도록 변경되고, 새 XML Web Service를 사용하도록 응용 프로그램을 리디렉션합니다.
  1. 솔루션 탐색기에서 Web.config 파일을 선택하고 두 번 클릭하여 엽니다.

  2. appSettings 섹션에서 XML Web Service의 키 값을 복사합니다. 키는 appname.servername.service라는 형식을 취합니다. 여기서 appname은 응용 프로그램 이름이고, servername은 XML Web Service가 있는 서버이며, service는 XML Web Service의 이름입니다.

  3. 코드 편집기에서 설치 관리자 클래스 모듈을 열고 appname.servername.service를 이전 단계에서 복사한 값으로 바꿉니다.

다음 단계에서는 응용 프로그램의 설치 프로젝트를 추가합니다.

설치 프로젝트 추가

설치 프로젝트는 응용 프로그램의 설치 관리자를 만드는 데 사용됩니다. Windows Installer 기술을 기반으로 하는 설치 프로젝트에는 설치하는 동안 사용자 지정 작업을 실행하고 설치 사용자 인터페이스를 사용자에 맞게 설정하는 기능 등이 포함되어 있습니다. 설치 프로젝트에 대한 자세한 내용은 Visual Studio .NET 설명서의 Deploying Applications and Components  tous.gif를 참조하십시오.

설치   프로젝트를   추가하려면  

  1. 파일 메뉴에서 프로젝트 추가를 가리킨 다음  프로젝트를 클릭합니다.

  2. 새 프로젝트 추가 대화 상자의 프로젝트 형식 창에서 설치 및 배포 프로젝트 노드를 선택합니다.

  3. 템플릿 창에서 웹 설치 프로젝트를 선택하고 확인을 클릭합니다.

    프로젝트가 솔루션에 추가되고 파일 시스템 편집기가 열립니다.

  4. 속성 창에서 ProductName 속성을 선택하고 그 값을 응용 프로그램 이름으로 설정합니다.

  5. 파일 시스템 편집기에서 웹 응용 프로그램 폴더를 선택합니다.

  6. 작업 메뉴에서 추가를 가리킨 다음 프로젝트 출력을 클릭합니다.

  7. 프로젝트 출력 그룹 추가 대화 상자에서 응용 프로그램 프로젝트를 선택한 다음 기본 출력과 컨텐트 파일을 선택하고 확인을 클릭합니다.

다음 단계에서는 설치 마지막에 실행할 사용자 지정 작업을 추가합니다.

사용자 지정 작업으로 설치 관리자 클래스 추가

설치하는 동안 처리할 수 없는 작업을 실행하기 위해 설치 끝 부분에서 코드를 실행하는 데 사용자 지정 작업을 사용합니다. 사용자 지정 작업 코드에는 .dll, .exe, 스크립트 또는 어셈블리 파일을 포함시킬 수 있습니다. 사용자 지정 작업에 대한 자세한 내용은 Visual Studio .NET 설명서의 Custom Actions Management in Deployment  tous.gif를 참조하십시오.

사용자   지정   작업으로   설치   관리자   클래스를   추가하려면  

  1. 솔루션 탐색기에서 설치 프로젝트를 선택합니다.

  2. 보기 메뉴에서 편집기를 가리킨 다음 사용자 지정 작업을 클릭합니다.

    사용자 지정 작업 편집기가 열립니다.

  3. 사용자 지정 작업 편집기에서 설치 노드를 선택합니다.

  4. 작업 메뉴에서 사용자 지정 작업 추가를 선택합니다.

  5.   응용   프로그램   폴더를 두 번 클릭한 다음 기본 출력을 선택하고 확인을 클릭합니다.

  6. 속성 창에서 InstallerClass 속성을 선택하고 그 값이 true로 설정되어 있는지 확인합니다.

  7. CustomActionData 속성을 선택하고 **/ServerName=[EDITA1] /ServiceName=[EDITA2]**를 입력합니다.

    CustomActionData 속성에는 사용자 지정 작업에 전달되는 두 개의 매개 변수가 공백으로 구분되어 있습니다.

다음 단계에서는 설치하는 동안 정보를 입력하기 위한 사용자 인터페이스를 추가합니다.

사용자 인터페이스 대화 상자 추가

설치하는 동안 사용자 인터페이스 대화 상자가 표시되어 사용자로부터 정보를 수집합니다. 사용자 인터페이스 대화 상자에 대한 자세한 내용은 Visual Studio .NET 설명서의 User Interface Management in Deployment  tous.gif를 참조하십시오.

사용자   지정   사용자   인터페이스   대화   상자를   추가하려면  

  1. 솔루션 탐색기에서 설치 프로젝트를 선택합니다.

  2. 보기 메뉴에서 편집기를 가리킨 다음 사용자 인터페이스를 클릭합니다.

  3. 사용자 인터페이스 편집기에서 시작 노드를 선택합니다.

  4. 작업 메뉴에서 대화 상자 추가를 선택합니다.

  5. 대화   상자   추가 대화 상자에서 Textboxes (A) 대화 상자를 선택한 다음 확인을 클릭합니다.

  6. 작업 메뉴에서 Textboxes (A) 대화 상자가 설치 주소 대화 상자 위에 표시될 때까지 위로 이동을 계속 선택합니다.

  7. 속성 창에서 다음 속성을 설정합니다.

    속성

    BannerText

    서버 이름과 서비스 이름 입력

    Edit1Label

    서버 이름:

    Edit1Value

    Localhost

    참고   이 속성은 기본 서버를 지정합니다. 여기에 고유한 기본 서버 이름을 입력할 수 있습니다.

    Edit2Label

    서비스 이름:

    Edit2Value

    <서비스 이름>

    Edit3Visible

    false

    Edit4Visible

    false

    Edit1Property 속성을 "EDITA1"로 설정하고 Edit2Property 속성을 "EDITA2"로 설정합니다. 이 값들은 사용자 지정 작업 편집기에서 CustomActionData 속성에 입력한 값과 일치합니다. 설치하는 동안 이 편집 컨트롤에 텍스트를 입력할 경우 CustomActionData 속성에서 그 값을 자동으로 전달합니다.

빌드 및 설치

마지막 단계에서는 설치 관리자를 만들기 위해 설치 프로젝트를 빌드한 다음 대상 서버에 응용 프로그램을 설치합니다.

설치   프로젝트를   빌드하려면

  • 빌드 메뉴에서 빌드 Projectname을 선택합니다. 여기서 Projectname은 설치 프로젝트 이름입니다.

개발   컴퓨터의     서버에   응용   프로그램을   배포하려면  

  • 솔루션 탐색기에서 설치 프로젝트를 선택한 다음 프로젝트 메뉴에서 설치를 선택합니다.

다른   컴퓨터의     서버에   응용   프로그램을   배포하려면  

  1. Windows 탐색기에서 프로젝트 디렉터리를 탐색하여 빌드한 설치 관리자를 찾습니다. 기본 경로는 \Documents and settings\Yourloginname\Setupprojectname\Project configuration\Productname.msi입니다. 기본 Project configuration은 디버그입니다.

  2. .msi 파일과 디렉터리의 하위 디렉터리 및 다른 모든 파일을 웹 서버로 복사합니다.

  3. 웹 서버에서 Setup.exe 파일을 두 번 클릭하여 설치 관리자를 실행합니다.

결론

다른 XML Web Service를 사용하도록 응용 프로그램을 리디렉션하는 것이 비교적 쉽다는 것을 알 수 있습니다. 이 예제에서는 XML Web Service를 대상으로 하는 웹 응용 프로그램을 사용했지만 Windows 응용 프로그램에도 쉽게 적용할 수 있습니다. Web.config 파일 대신 app.config 파일을 사용하고 웹 설치 프로젝트 대신 설치 프로젝트를 사용하면 됩니다. 이것을 제외하고 다른 프로세스는 모두 같습니다.

이 연습에서는 URL Behavior 속성을 사용하여 구성 파일에 정보를 저장하는 기술과 설치 관리자 클래스를 사용하여 설치하는 동안 작업을 실행하는 기술 및 CustomActionData 속성을 사용하여 설치하는 동안 사용자 정보를 저장하는 기술 등 몇 가지 새 기술들을 보여 주었습니다.

최종 수정일: 2002년 5월 7일