.NET에서 통신 옵션 선택

.NET Framework 3.0 및 WCF(Windows Communication Foundation)의 도입으로 다양한 기술이 통합 프로그래밍 모델에 포함되었습니다. WCF는 다음 버전의 엔터프라이즈 서비스, ASMX 웹 서비스, WSE, MSMQ 및 .NET Remoting 역할을 합니다. 다음 항목은 .NET Framework 2.0에 적용됩니다. WCF 및 .NET Framework 3.0에 대한 자세한 내용은 Windows Communication Foundation을 참조하십시오.

.NET Framework는 여러 응용 프로그램 도메인의 개체와 통신하는 여러 가지 방법을 제공하며, 각 방법은 특정 수준의 전문적 기술과 유연성을 고려하여 디자인되었습니다. 예를 들어 인터넷 성장과 더불어 XML Web services가 효율적인 통신 방법이 되었습니다. XML Web services는 XML을 사용하는 HTTP 프로토콜 및 SOAP 형식의 공용 인프라를 기반으로 구축되었기 때문입니다. 이는 공용 표준이며 추가 프록시 또는 방화벽 문제를 염려하지 않고 현재 웹 인프라에 즉시 사용할 수 있습니다.

ASP.NET을 사용하여 만든 웹 서비스가 지원하지 않는 기능이 필요한 응용 프로그램이 많으므로 일부 응용 프로그램은 ASP.NET 웹 서비스를 사용할 수 없습니다. 다음 섹션을 사용하여 응용 프로그램에 필요한 분산 응용 프로그램 지원 유형을 결정할 수 있습니다.

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

ASP.NET, 엔터프라이즈 서비스 및 .NET Remoting은 IPC(프로세스 간 통신) 구현입니다. ASP.NET은 IIS(인터넷 정보 서비스)에서 호스팅하는 인프라를 제공합니다. 이 인프라는 기본 형식도 처리하고, WSE(Web Service Extensions)와 함께 사용할 경우 일부 고급 웹 서비스 프로토콜을 지원하며, 웹 응용 프로그램 개발자에게 친숙한 인프라입니다. 엔터프라이즈 서비스는 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은 명명된 파이프의 ACL(액세스 제어 목록) 직접 설정과 Windows 인증을 지원합니다. 인터넷에서 원격 개체를 사용하지 않는 것이 좋으므로 이제 HttpChannel이 필요한 시나리오는 거의 없습니다. 인터넷에서 통신해야 하는 경우 ASP.NET을 사용하여 XML Web services를 사용하는 것이 좋습니다.

    8119f66k.note(ko-kr,VS.100).gif참고:
    보안상의 이유로 원격 끝점은 보안 채널을 통해 사용하도록 하는 것이 좋습니다. 보안되지 않는 원격 끝점을 인터넷에 표시하지 마십시오.

  2. 상호 운용성

    여러 운영 체제 간의 상호 운용성이 필요한 경우 ASP.NET에서 만든 XML Web services를 사용해야 합니다. ASP.NET 파일을 사용하면 .NET Remoting보다 유연성 있게 SOAP 통신의 모양과 스타일을 정의할 수 있습니다. 이 유연성을 통해 여러 플랫폼 및 클라이언트와 보다 쉽게 상호 운용할 수 있습니다. .NET Remoting은 .NET이 아닌 플랫폼과 상호 운용되지 않습니다.

    .NET Framework Remoting은 웹 서비스와 상호 운용하도록 디자인되지 않았습니다. 웹 서비스와 Remoting 중에서 선택하는 방법에 대한 자세한 내용은 성능에 대한 유용한 정보(영문 페이지일 수 있음)의 "웹 서비스, Remoting 및 엔터프라이즈 서비스 중에서 선택하는 방법" 및 웹 서비스, 엔터프라이즈 서비스 및 .NET Remoting 선택에 대한 지침(영문 페이지일 수 있음)을 참조하십시오.

  3. 속도

    속도가 중요한 요소인 경우 엔터프라이즈 서비스는 분산 응용 프로그램에 최고의 성능을 제공합니다. 응용 프로그램에 실제 처리가 필요한 후에는 .NET Remoting과 ASP.NET 파일 간에 성능상 거의 차이가 없습니다. .NET Remoting을 사용하는 경우 BinaryFormatter가 있는 TcpChannel이 컴퓨터 중 최고 성능을 보유합니다. 동일한 시스템에서는 BinaryFormatter가 있는 IpcChannel을 사용해야 합니다.

  4. 확장성

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

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

    엔터프라이즈 서비스와 .NET Remoting은 .NET 클라이언트를 더 효율적으로 이용하므로 다음을 비롯하여 ASP.NET으로 만든 XML Web services에 사용할 수 없는 .NET 기능을 응용 프로그램에 사용할 수 있습니다.

    • 인터페이스

    • CallContext.

    • 속성

    • 인덱서

    • C++

    • 클라이언트와 서버 응용 프로그램 간의 형식 유지

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

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

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

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

    • 여러 가지 개체 활성화 옵션

    • 개체 지향 상태 관리

    • 분산 개체 수명 관리

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

  7. 사용자 지정 전송 또는 연결 형식

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

  8. 응용 프로그램 도메인 간 통신

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

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

XML Web services

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

System.Net 네임스페이스

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

엔터프라이즈 서비스

엔터프라이즈 서비스는 .NET Remoting 인프라를 기반으로 구축되어 광범위한 분산 트랜잭션 지원을 비롯하여 COM+ 분산 개체 모델의 다양한 기능과 유연성을 모두 제공합니다.

.NET Remoting

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

  • 도메인이 콘솔 응용 프로그램, Windows Form, IIS, XML Web services 또는 Windows 서비스인지에 관계없이 모든 유형의 응용 프로그램 도메인에서 서비스를 게시하거나 액세스합니다.

  • 제네릭 형식 지원을 비롯하여 이진 형식 통신에서 완전히 관리되는 코드 형식 시스템을 유지합니다.

    8119f66k.note(ko-kr,VS.100).gif참고:
    XML Web services는 모든 형식 세부 사항을 유지하지 않는 SOAP 형식을 사용합니다.

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

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

  • 타사 채널이나 프로토콜을 구현 및 사용하여 특정 요구 사항에 맞게 통신을 확장합니다.

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

참고 항목

관련 자료

.NET Remoting
.NET Framework Remoting 개요
원격 서비스 예제
고급 원격 서비스
Windows Communication Foundation