방법: 호스팅 응용 프로그램 빌드

이 항목은 이전 버전의 기존 응용 프로그램과의 호환성을 위해 유지되고 있으나 새로운 개발에는 권장되지 않는 레거시 기술에 대해 설명합니다. 분산 응용 프로그램은 이제 WCF(Windows Communication Foundation)를 사용하여 개발됩니다.

기본적으로 방법: 원격으로 사용 가능한 형식 빌드 항목에서 정의된 RemotableType 클래스는 특수 클래스가 아닙니다. 다른 응용 프로그램 도메인의 개체가 이 개체의 인스턴스를 원격으로 만들 수 있으려면 다음을 수행하는 호스트 또는 수신기 응용 프로그램을 빌드해야 합니다.

  • 네트워킹 프로토콜 및 serialization 형식을 대신 처리해 주는 개체인 채널을 선택하고 등록합니다.

  • 형식이 채널을 사용하여 형식에 대한 요청을 수신할 수 있도록 형식을 .NET Remoting 시스템에 등록합니다.

.NET Framework에는 HttpChannel(기본적으로 SOAP 형식 사용), TcpChannel(기본적으로 이진 형식 사용) 및 IpcChannel(기본적으로 이진 형식 사용)의 세 가지 기본 채널이 포함되어 있습니다. HttpChannel은 포트를 열지 않고 방화벽을 통해 사용할 수 있으며 표준 보안 및 인증 프로토콜을 지원합니다. 특정 시나리오에 적합한 채널의 선택에 대한 자세한 내용은 채널을 참조하십시오.

Windows Forms 응용 프로그램, ASP.NET 웹 응용 프로그램, 콘솔 응용 프로그램, Windows 서비스(Windows NT 서비스라고도 함) 또는 기타 모든 관리되는 응용 프로그램 도메인 등 모든 형식의 응용 프로그램 도메인을 사용하여 수신기 응용 프로그램을 빌드할 수 있습니다. 원격 구성이 각 응용 프로그램 도메인에 대해 수행되므로 응용 프로그램 도메인이 실행되어 요청을 수신 대기해야 합니다.

ecc85927.note(ko-kr,VS.100).gif참고:
COM과 달리 Remoting은 호스트 또는 서버 응용 프로그램을 시작하지 않습니다. 이것이 .NET Remoting과 COM에서의 원격 활성화 간의 중요한 차이점입니다.

구성을 프로그래밍 방식으로 수행하거나 응용 프로그램 또는 시스템 구성 파일을 사용하여 수행할 수 있습니다.

원격 시스템은 이 파일의 정보를 사용하여 원격으로 사용할 수 있는 형식의 인스턴스에 대한 원격 요청을 수신하고 라우트합니다. 파일은 서버 활성화 모드, 대신 수신할 형식의 형식 이름 및 어셈블리, 그리고 개체 URI(Uniform Resource Identifier)나 개체의 외부 이름을 지정합니다. 개체 URI와 원격 서비스에 대한 자세한 내용은 활성화 URL을 참조하십시오.

ecc85927.note(ko-kr,VS.100).gif참고:
이전 구성 파일에는 몇 가지 설정만 있지만 .NET 원격을 사용할 때의 문제 대부분은 이 설정 중 일부가 올바르지 않거나 설정이 클라이언트 응용 프로그램의 구성 설정과 일치하지 않아서 발생합니다. 이름을 잘못 입력하거나, 포트를 잊고 입력하지 않거나, 속성을 생략하기 쉽습니다. 원격 응용 프로그램에 관련된 문제가 있는 경우 제일 먼저 구성 설정을 확인하십시오.

구성 파일을 사용하면 실행 파일을 다시 컴파일하지 않고도 원격 구성을 변경할 수 있습니다. .NET Remoting 인프라의 구성에 대한 자세한 내용은 원격 설정 스키마를 참조하십시오.

ecc85927.note(ko-kr,VS.100).gif참고:
이 샘플을 빌드하고 실행하는 방법에 대한 자세한 지침은 방법: 기본 원격 응용 프로그램 컴파일 및 실행을 참조하십시오.

구성 파일을 사용하는 간단한 호스트 응용 프로그램 도메인을 구현하려면

  1. 방법: 원격으로 사용 가능한 형식 빌드에서 시작하여 remoting 아래에 다른 디렉터리를 만들고 이름을 host로 지정합니다. 원격 클래스에 대한 구성 파일을 만듭니다. 호스트 응용 프로그램은 원격 클래스에 대한 구성을 로드할 수 있어야 하며, 따라서 구성 파일은 호스트 응용 프로그램의 어셈블리와 같은 디렉터리에 저장해야 합니다. 그렇지 않으면 파일을 찾을 수 없어서 예외가 throw됩니다. 다음 코드에서는 원격 개체가 Singleton이며, 그 구현은 RemotableType이라는 어셈블리에 있는 RemotableType이라는 클래스임을 지정하는 구성 파일을 보여 줍니다. 다음으로, HttpChannel이 포트 8989에서 수신 대기하도록 등록됩니다. 이 파일을 remoting\listener 디렉터리에 저장합니다. 파일 이름은 app-name.exe.config의 패턴을 따라야 합니다. 이 경우 이름은 listener.exe.config입니다.

    <configuration>
       <system.runtime.remoting>
          <application>
             <service>
                <wellknown 
                   mode="Singleton" 
                   type="RemotableType, RemotableType" 
                   objectUri="RemotableType.rem"
                />
             </service>
             <channels>
                <channel ref="http" port="8989"/>
             </channels>
          </application>
       </system.runtime.remoting>
    </configuration>
    
  2. 선택한 언어에 해당하는 새 소스 파일을 만듭니다. 소스 파일 맨 위에서 System.Runtime.Remoting 네임스페이스를 가져옵니다.

    Imports System
    Imports System.Runtime.Remoting
    
    using System;
    using System.Runtime.Remoting;
    
  3. Main 메서드에서 원격 클래스를 구성하는 파일을 로드하고, 호스트가 실행 중임을 사용자에게 알리는 메시지를 표시한 다음 키 입력을 기다립니다. 이 파일을 remoting\listener 디렉터리에 저장합니다.

    Public Class Listener
        Public Shared Sub Main()
            RemotingConfiguration.Configure("Listener.exe.config", False)
            Console.WriteLine("Listening for requests. Press enter to exit...")
            Console.ReadLine()
        End Sub
    End Class
    
    public class Listener
    {
        public static void Main()
        {
            RemotingConfiguration.Configure("Listener.exe.config", false);
            Console.WriteLine("Listening for requests. Press enter to exit...");
            Console.ReadLine();
        }
    
    }
    
  4. 방법: 원격으로 사용 가능한 형식 빌드에서 생성한 RemotableType.dll을 remoting\listener 디렉터리에 복사합니다. 호스트 응용 프로그램은 이 어셈블리를 참조해야 합니다. 다음 명령을 입력하여 이 클래스를 실행 파일로 컴파일합니다.

    vbc /r:RemotableType.dll Listener.vb
    
    csc /noconfig /r:RemotableType.dll Listener.cs
    
  5. 이제 Listener.exe라는 어셈블리가 생성되었습니다. 이를 실행하여 구성이 성공하는지 확인합니다. 방화벽이 현재 8989 포트를 차단하고 있는 경우에는 보안 대화 상자가 나타날 수 있습니다. 이 경우에는 "차단 해제" 단추를 클릭하여 해당 포트에서 방화벽을 임시로 엽니다.

  6. 원격으로 사용 가능한 형식의 사용 방법에 대한 자세한 내용은 방법: 클라이언트 응용 프로그램 빌드를 참조하십시오.

예제

' Listener.vb
Public Class Listener
    Public Shared Sub Main()
        RemotingConfiguration.Configure("Listener.exe.config", False)
        Console.WriteLine("Listening for requests. Press enter to exit...")
        Console.ReadLine()
    End Sub
End Class
// Listener.cs
using System;
using System.Runtime.Remoting;

public class Listener
{
    public static void Main(string[] args)
    {
        RemotingConfiguration.Configure("Listener.exe.config", false);
        Console.WriteLine("Listening for requests. Press enter to exit...");
        Console.ReadLine();
    }
}

참고 항목

작업

방법: 호스팅 응용 프로그램 빌드

참조

원격 설정 스키마

개념

원격 응용 프로그램 구성
서버 활성화

관련 자료

기본 .NET Framework Remoting 응용 프로그램 빌드

빌드 날짜: 2010-02-13