다음을 통해 공유


.NET에서 통신 옵션 선택

.NET Framework에서는 서로 다른 응용 프로그램 도메인에 있는 개체와 통신하는 몇 가지 방법을 제공하며, 각 방법은 특정 수준의 경험 및 융통성을 염두에 두고 디자인되었습니다. 예를 들어, 인터넷의 발전으로 인해 XML Web services는 효과적인 통신 수단이 되었습니다. 이는 XML Web services가 XML을 사용하는 HTTP 프로토콜 및 SOAP 형식의 일반적인 인프라를 기반으로 하기 때문입니다. XML Web services는 공용 표준으로서 추가 프록시 또는 방화벽 문제에 신경 쓰지 않고도 즉시 현재의 웹 인프라와 함께 사용할 수 있습니다.

많은 응용 프로그램에서 ASP.NET으로 만든 웹 서비스에서 지원하지 않는 기능을 필요로 하기 때문에 일부 응용 프로그램에서는 ASP.NET 웹 서비스를 사용할 수 없습니다. 다음 단원에서는 응응 프로그램에 사용할 분산 응용 프로그램 지원 형식을 결정하는 데 유용한 내용을 설명합니다.

ASP.NET, 엔터프라이즈 서비스 또는 .NET Remoting?

ASP.NET, 엔터프라이즈 서비스 및 .NET Remoting은 IPC(프로세스 간 통신)를 구현합니다. ASP.NET은 IIS(인터넷 정보 서비스)에서 호스팅되고 기본 형식을 잘 처리하며 WSE(웹 서비스 확장)와 함께 사용할 경우 일부 고급 웹 서비스 프로토콜을 지원하는 웹 응용 프로그램 개발자가 잘 알고 있는 인프라를 제공합니다. 엔터프라이즈 서비스는 관리되는 COM+ 구현으로 COM+ 아키텍처의 다양한 기능과 융통성을 제공합니다. .NET Remoting은 자체 호스팅하거나 IIS에서 호스팅될 수 있는 범용적이고 확장 가능한 IPC 시스템으로 분산 개체 지향 응용 프로그램을 개발하고 배포하는 데 사용할 수 있습니다. .NET Remoting의 플러그형 아키텍처를 사용하면 사용자 지정 프로토콜과 연결 형식을 사용할 수 있습니다.

사용할 프로그래밍 모델을 결정할 때에는 비즈니스 요구 사항, 통합 필요성, 잘 알고 있는 프로그래밍 모델이라는 세 가지 조건을 주요 기준으로 삼아야 합니다. 또한 다음과 같은 조건이 필요한 분산 응용 프로그램 기술 형식을 선택하는 데 도움이 될 수 있습니다(우선 순위에 따라 나열).

  1. 보안 요구 사항

    세 프로그래밍 모델 중에서 엔터프라이즈 서비스에 가장 많은 보안 기능이 있으며 대부분의 경우에 이 모델이 적합합니다. ASP.NET은 IIS를 통한 인증과 SSL을 통한 암호화를 제공하며 인터넷 범위의 응용 프로그램 보안에 유용합니다. 최신 .NET Framework 릴리스로 .NET Remoting의 보안이 개선되었습니다. 이전 버전의 .NET Remoting에서는 호출을 암호화해야 하거나 클라이언트를 인증해야 하는 경우 ASP.NET 응용 프로그램 또는 원격 응용 프로그램인지 여부에 관계없이 IIS에서 호스팅되는 HTTP 기반 응용 프로그램을 사용해야 합니다. 현재 버전에서는 TcpChannelHttpChannel에서 SSPI 암호화와 Windows 통합 인증을 지원합니다. IpcChannel도 Windows 인증 및 명명된 파이프에서 ACL(액세스 제어 목록) 직접 설정을 지원합니다. 인터넷을 통해 원격 개체를 사용하지 않는 것이 좋기 때문에 HttpChannel이 필요한 시나리오는 매우 적습니다. 인터넷을 통해 통신해야 하는 경우 ASP.NET을 사용하여 XML Web services를 만드는 것이 좋습니다.

참고

보안을 위해 보안 채널을 통해 원격 끝점을 노출하는 것이 좋습니다. 보안이 되지 않은 원격 끝점을 인터넷에 노출해서는 안 됩니다.

  1. 상호 운용성

    서로 다른 운영 체제에서 상호 운용해야 할 경우 ASP.NET으로 만들어진 XML Web services를 사용해야 합니다. ASP.NET 파일을 사용하면 .NET Remoting을 사용할 때보다 유연하게 SOAP 통신의 형태와 스타일을 정의할 수 있습니다. 따라서 서로 다른 플랫폼 및 클라이언트와의 상호 운용이 더 쉬워질 수 있습니다. .NET Remoting은 .NET 이외의 플랫폼과 상호 운용하기 위해 만들어진 것이 아닙니다.

    .NET Framework Remoting은 웹 서비스와 상호 운용하기 위해 만들어진 것이 아닙니다. 웹 서비스와 Remoting 중에서 어떤 것을 선택할 것인지에 대한 자세한 내용은 Performance Best Practices at a Glance의 "How to choose between Web services, remoting, and Enterprise Services"와 Improving .NET Application Performance and Scalability의 "Prescriptive Guidance for Choosing Web Services, Enterprise Services, and .NET Remoting"을 참조하십시오.

  2. 속도

    속도가 중요한 요소라면 엔터프라이즈 서비스가 최상의 분산 응용 프로그램 성능을 제공합니다. 실제 처리가 필요한 응용 프로그램에서는 .NET Remoting과 ASP.NET 파일 간에 성능 차이가 거의 없습니다. .NET Remoting을 사용할 경우 BinaryFormatter가 있는 TcpChannel이 가장 좋은 성능을 냅니다. 같은 컴퓨터에서 BinaryFormatter가 있는 IpcChannel을 사용해야 합니다.

  3. 확장성

    IIS 내부에서 응용 프로그램을 호스팅하면 필요한 확장성을 얻을 수 있습니다. 자체 호스팅되는 .NET Remoting에서는 고유한 확장 인프라를 직접 구성해야 합니다. 확장성을 얻기 위해 IIS와 .NET Remoting을 함께 사용하는 대신 ASP.NET을 사용하여 만든 웹 서비스를 사용하는 것을 고려해야 합니다.

  4. 공용 언어 런타임 기능의 사용

    엔터프라이즈 서비스와 .NET Remoting 모두 .NET 클라이언트의 이점을 보다 잘 활용할 수 있으므로 ASP.NET을 사용하여 만든 XML Web service에서 사용할 수 없는 다음 .NET 기능을 응용 프로그램에서 사용할 수 있습니다.

    • 인터페이스

    • CallContext

    • 속성

    • 인덱서

    • C++

    • 클라이언트 응용 프로그램과 서버 응용 프로그램 간의 형식 준수성

    • 이러한 기능이 중요한 경우 가능하면 엔터프라이즈 서비스를 선택한 다음 .NET Remoting을 선택합니다.

  5. 개체 지향적 응용 프로그램 디자인

    엔터프라이즈 서비스 및 .NET Remoting 개체는 모두 개체이며 개체로 처리될 수 있습니다. 따라서 ASP.NET에서 사용할 수 없는 다음과 같은 개체 지향적 기능을 응용 프로그램에서 사용할 수 있습니다.

    • 원격 개체에 대한 개체 참조

    • 몇 가지 개체 활성화 옵션

    • 개체 지향 상태 관리

    • 분산 개체 수명 관리

    • 이러한 기능이 중요한 경우 가능하면 엔터프라이즈 서비스를 선택한 다음 .NET Remoting을 선택합니다.

  6. UDP(User Datagram Protocol)와 같은 사용자 지정 전송이나 CSV와 같은 사용자 지정 연결 형식을 지원해야 하는 사용자 지정 전송 또는 연결 형식의 경우 이러한 요구 사항을 충족하는 유일한 플러그형 아키텍처는 .NET Remoting입니다.

  7. 같은 프로세스 내에서 서로 다른 응용 프로그램 도메인의 개체 간에서 통신을 지원해야 하는 응용 프로그램 도메인 간 통신의 경우 .NET Remoting을 사용해야 합니다.

다음 단원에서는 ASP.NET을 사용하여 만든 XML Web services, System.Net 네임스페이스, 엔터프라이즈 서비스 및 .NET Remoting 간의 몇 가지 차이점에 대해 간략히 설명합니다.

XML Web Services

Microsoft Visual Studio .NET의 강력한 지원 기능을 포함하는 웹 응용 프로그램 모델과 ASP.NET HTTP 런타임을 사용하여 ASP(Active Server Pages) 응용 프로그램을 빌드하는 경우에는 ASP.NET을 사용하여 만든 XML Web services가 잘 작동합니다. XML Web service 인프라를 사용하면 웹 기반 응용 프로그램에 가장 적합한 프로토콜, 형식 및 데이터 형식을 사용하여 다른 사용자가 만든 구성 요소를 쉽게 사용할 수 있으며 다른 응용 프로그램에서 사용할 수 있는 구성 요소를 쉽게 만들 수 있습니다. 컴퓨터 간의 정확한 형식 준수성은 지원되지 않으며 일부 인수 형식만 전달할 수 있습니다. 자세한 내용은 ASP.NET을 사용하여 만드는 XML Web Services 및 XML Web Services 클라이언트를 참조하십시오.

System.Net 네임스페이스

System.Net 네임스페이스의 클래스를 사용하여 전체 통신 구조를 소켓 수준에서 빌드할 수 있습니다. 또한 System.Net 클래스를 사용하면 원격 아키텍처에 연결할 수 있는 통신 프로토콜과 serialization 형식을 구현할 수 있습니다. 자세한 내용은 네트워크 프로그래밍을 참조하십시오.

엔터프라이즈 서비스

.NET Remoting 인프라에 기반한 엔터프라이즈 서비스는 광범위하게 분산되는 트랜잭션 지원을 포함한 COM+ 분산 개체 모델의 풍부한 기능과 유연성을 모두 제공합니다.

.NET Remoting

.NET Remoting에서는 XML Web services를 포함하는 여러 가지의 포괄적인 통신 시나리오를 위한 도구를 제공합니다. .NET Remoting을 사용하면 다음을 수행할 수 있습니다.

  • 콘솔 응용 프로그램, Windows Form, IIS, XML Web service, Windows 서비스 등의 모든 응용 프로그램 도메인에서 서비스를 게시하거나 소비합니다.

  • 제네릭 형식 지원을 포함한 이진 형식의 통신에서 완전한 관리 코드의 형식 시스템 준수성을 유지합니다.

    참고

    XML Web services에서는 모든 형식 세부 사항을 유지하지 않는 SOAP 형식을 사용합니다.

  • 개체를 참조로 전달하고 특정 응용 프로그램 도메인의 특정 개체에 반환합니다.

  • 활성화 특징 및 개체 수명을 직접 제어합니다.

  • 타사 채널 또는 프로토콜을 구현 및 사용하여 사용자의 특정 필요에 맞도록 통신을 확장합니다.

  • 통신 프로세스에 직접 관여하여 필요한 기능을 만듭니다.

참고 항목

기타 리소스

원격 개체
.NET Framework Remoting 개요
원격 서비스 예
고급 원격 서비스