방법: 호스팅 응용 프로그램 빌드
구성 파일을 사용하면 특히 실행 파일을 다시 컴파일하지 않고도 원격 구성을 변경할 수 있다는 장점이 있습니다. .NET Remoting 인프라의 구성에 대한 자세한 내용은 원격 설정 스키마를 참조하십시오.
구성 파일을 사용하는 간단한 호스트 응용 프로그램 도메인을 구현하려면
원격 클래스의 구성 파일을 만듭니다. 호스트 응용 프로그램은 구성 파일을 찾아서 원격 클래스의 구성을 로드할 수 있어야 합니다. 따라서 구성 파일은 호스트 응용 프로그램과 동일한 디렉터리에 저장되어야 합니다. 그렇지 않으면 구성 파일을 찾을 수 없어서 예외가 throw됩니다. 다음 코드에서는 호스트 응용 프로그램 도메인의
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>
System.Runtime.Remoting 네임스페이스 가져오기
Imports System.Runtime.Remoting
using System; using System.Runtime.Remoting;
원격 클래스를 구성하는 구성 파일을 로드합니다.
Public Class Listener Public Shared Sub Main() RemotingConfiguration.Configure("Listener.exe.config") Console.WriteLine("Listening for requests. Press Enter to exit...") Console.ReadLine() End Sub 'Main End Class 'Listener
public class Listener{ public static void Main(){ RemotingConfiguration.Configure("Listener.exe.config"); } }
.NET Framework SDK와 함께 제공되는 명령줄 도구를 사용하여 이 클래스를 수신기 또는 호스트 실행 파일로 컴파일하고 클래스를
Listener
.language-extension으로 저장하거나 원하는 다른 파일 이름을 사용하여 저장하십시오. 여기에서 language extension은 컴파일하려는 언어입니다. 그런 다음 방법: 원격화할 수 있는 형식 빌드 항목에서 빌드한RemotableType.dll
을 저장한 디렉터리에 이 파일을 저장합니다. 해당 디렉터리의 명령 프롬프트에서 다음과 같이 입력합니다.vbc /r:RemotableType.dll Listener.vb
csc /noconfig /r:RemotableType.dll Listener.cs
예제
' Listener.vb
Imports System
Imports System.Runtime.Remoting
Public Class Listener
Public Shared Sub Main()
RemotingConfiguration.Configure("Listener.exe.config")
Console.WriteLine("Listening for requests. Press Enter to exit...")
Console.ReadLine()
End Sub 'Main
End Class 'Listener
// Listener.cs
using System;
using System.Runtime.Remoting;
public class Listener{
public static void Main(){
RemotingConfiguration.Configure("Listener.exe.config");
Console.WriteLine("Listening for requests. Press Enter to exit...");
Console.ReadLine();
}
}