영업: 1-800-867-1380

Azure 웹 응용 프로그램 및 직렬화

업데이트 날짜: 2014년 6월

용 응용 프로그램을 작성하는 경우 온-프레미스 응용 프로그램을 작성할 때와 비교했을 때 데이터 직렬화가 점점 더 중요해집니다. Azure 응용 프로그램은 데이터베이스 사용, 일반 저장소, 데이터 전송 및 캐싱에 대해 요금이 부과됩니다. 가격 책정에 대한 자세한 내용은 Azure 가격 책정 개요를 참조하십시오. 또한 Azure 응용 프로그램은 휴대폰, 태블릿 등과 같은 모바일 장치에서 사용할 수 있으며 부분적으로 연결된 특성으로 인해 대기 시간이 발생할 수 있습니다. 이러한 모든 요소는 응용 프로그램이 데이터를 보내고 받는 방법에 대해 생각하는 것이 매우 중요하다는 의미입니다. 페이로드가 작을수록 대역폭 및 저장소 비용이 줄어들고 대기 시간이 최소화될 수 있습니다.

WCF는 4가지 다른 직렬 변환기인 DataContractSerializer, XmlSerializer, NetDataContractSerializerDataContractJsonSerializer와 함께 제공됩니다. 직렬 변환기는 .NET 개체가 XML로 변환되는 방법을 결정합니다. 직렬화된 XML 데이터는 일련의 바이트로 네트워크에 기록됩니다. XML을 가져와서 바이트 스트림으로 변환하는 과정을 인코딩이라고 합니다. WCF는 텍스트, 이진 및 MTOM 인코딩을 지원합니다. 직렬화는 서비스 계약의 특성에 의해 제어됩니다. 기본적으로 DataContractSerializer가 사용되며 이는 ServiceContractAttribute에 의해 지정됩니다. XmlSerializer를 사용하려면 서비스 계약에 XmlSerializerFormatAttribute을 적용합니다. 서비스 작업에 WebGetAttribute 또는 WebInvokeAttribute을 적용하면 DataContractJsonSerializer가 사용됩니다. 이러한 두 특성을 사용하여 RequestFormatResponseFormat을 지정할 수 있습니다. 요청 및 응답에 JSON을 사용하려면 이 두 특성을 WebMessageFormat.Json으로 설정합니다. JSON을 사용하려면 자동으로 WebHttpBehavior를 구성하는 WebHttpBinding을 사용해야 합니다. WCF 직렬화에 대한 자세한 내용은 직렬화 및 역직렬화, Windows Communication Foundation 직렬화를 참조하십시오. JSON 및 WCF에 대한 자세한 내용은 WCF를 사용한 RESTfull 서비스 소개, .NET 3.5에서 JSON 사용 WCF Services 만들기WCF의 REST 개요를 참조하십시오.

Important중요
JSON을 사용하려면 SOAP 통신을 지원하지 않는 WebHttpBindingWebHttpBehavior를 사용해야 합니다. WebHttpBinding과 통신하는 서비스는 서비스 메타데이터를 노출하도록 지원하지 않으므로 Visual Studio의 서비스 참조 추가 기능 또는 svcutil 명령줄 도구를 사용하여 클라이언트 쪽 프록시를 생성할 수 없습니다. WebHttpBinding을 사용하는 서비스를 프로그래밍 방식으로 호출할 수 있는 방법에 대한 자세한 내용은 WCF와 함께 REST Services를 사용하는 방법을 참조하십시오.

개방형 데이터 프로토콜은 현재 다음 두 가지 직렬화 형식을 지원합니다.

  • Atom 배포 형식(Atom): 웹 피드에 사용되는 XML 기반 교환 형식입니다.

  • JSON(JavaScript Object Notation): 사람이 읽을 수 있는 간단한 데이터 교환 형식입니다.

OData에서 클라이언트는 Accept 메시지 헤더를 설정하여 응답의 원하는 직렬화 형식을 요청할 수 있습니다. OData는 요청 헤더를 설정할 수 없는 클라이언트가 사용할 수 있는 $format 시스템 쿼리 옵션도 제공합니다. WCF Data Service는 Atom 및 JSON 직렬화를 지원하지만 $format 쿼리 옵션은 지원하지 않습니다. 가능한 모든 클라이언트의 JSON 직렬화를 지원하려면 WCF Data Services 구현에서 $format 쿼리 옵션에 대한 지원을 활성화해야 합니다. 자세한 내용은 Azure의 OData에 대한 지침을 참조하십시오.

다르게 직렬화된 같은 유형의 직렬화를 보여 줌으로써 직렬화 크기의 중요한 차이점을 보여 주는 것이 일반적으로 도움이 됩니다. 다음은 예제 Person 유형의 정의입니다.

[DataContract(Namespace="http://example.org/person")]
    public class Person
    {
        public Person() { }
        public Person(string last, string first, string email)
        {
            lastName = last;
            firstName = first;
            emailAddress = email;
        }

        [DataMember]
        public string firstName { get; set; }

        [DataMember]
        public string lastName { get; set; }

        [DataMember]
        public string emailAddress { get; set; }
    }
}           

DataContractSerializer는 다음과 같이 Person의 인스턴스를 직렬화했습니다.

<?xml version="1.0"?>
    <Person xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://example.org/person">
    <emailAddress>kim.abercrombie@contoso</emailAddress>
    <firstName>Kim</firstName>
    <lastName>Abercrombie</lastName>
</Person>

XmlSerializer는 다음과 같이 Person의 인스턴스를 직렬화했습니다.

<?xml version="1.0"?>
<Person xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <firstName>Kim</firstName>
    <lastName>Abercrombie</lastName>
    <emailAddress>kim.abercrombie@contoso</emailAddress>
</Person>

DataContractJsonSerializer는 다음과 같이 Person의 인스턴스를 직렬화했습니다.

{"emailAddress":"kim.abercrombie@contoso","firstName":"Kim","lastName":"Abercrombie"}

고려해야 할 또 다른 영역은 메시지 인코더입니다. 인코더는 XML을 가져와서 네트워크를 통해 보낼 수 있는 일련의 바이트로 변환합니다. 이를 통해 페이로드 크기를 상당히 줄일 수 있습니다. 인코더는 바인딩에서 구성됩니다. 인코더에 대한 자세한 내용은 메시지 인코더 선택을 참조하십시오. Microsoft 이진 인코더는 데이터에 대한 최소 표현을 제공하지만 클라이언트와 서비스 모두 .NET Framework에서 실행되고 있는 경우에만 이 인코더를 사용할 수 있습니다. 응용 프로그램에 다른 플랫폼과의 상호 운용성이 필요한 경우 텍스트 인코더를 사용하십시오. 사용자 지정 인코더를 구현하고 몇 가지 종류의 압축을 수행할 수도 있습니다. 자세한 내용은 사용자 지정 메시지 인코더를 참조하십시오.

사용하기에 가장 좋은 직렬 변환기와 인코더는 응용 프로그램과 해당 상호 운용성 요구 사항에 따라 다릅니다. 서비스와 클라이언트 모두 .NET Framework에서 실행되고 있는 시나리오에는 이진 인코더와 DataContractSerializer를 사용하는 것이 좋습니다. 상호 운용성이 필요한 시나리오에는 텍스트 인코더를 사용하십시오. 이러한 유형의 시나리오에서 DataContractJsonSerializer는 최소 표현을 제공하지만 SOAP 이외의 서비스를 사용해야 합니다. SOAP를 사용해야 하는 경우 DataContractSerializer를 사용하는 것이 좋습니다.

이 정보가 도움이 되었습니까?
(1500자 남음)
의견을 주셔서 감사합니다.
Microsoft는 MSDN 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 진행하고 있습니다. 참여하도록 선택하시면 MSDN 웹 사이트에서 나가실 때 온라인 설문 조사가 표시됩니다.

참여하시겠습니까?
표시:
© 2014 Microsoft