Aracılığıyla paylaş


XMLSerializer Örneği

XmlSerializer örneği, XmlSerializer ile uyumlu olan türleri serileştirme ve seriden çıkarma işlemlerini gösterir. Varsayılan Windows Communication Foundation (WCF) biçimlendirici sınıfıdır DataContractSerializer . XmlSerializer sınıfı, DataContractSerializer sınıfı kullanılamadığında türleri seri hale getirmek ve seri durumdan çıkarmak için kullanılabilir. Bu durum genellikle XML üzerinde kesin denetim gerektiğinde (örneğin, bir veri parçasının XML öğesi değil XML özniteliği olması gerekiyorsa) söz konusudur. Ayrıca, XmlSerializer WCF olmayan hizmetler için istemciler oluşturulurken genellikle otomatik olarak seçilir.

Bu örnekte, istemci bir konsol uygulamasıdır (.exe) ve hizmet Internet Information Services (IIS) tarafından barındırılır.

Uyarı

Bu örnek için kurulum yordamı ve derleme yönergeleri bu konunun sonunda yer alır.

ServiceContractAttribute ve XmlSerializerFormatAttribute aşağıdaki örnek kodda gösterildiği gibi arabirimine uygulanmalıdır.

[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples"), XmlSerializerFormat]
public interface IXmlSerializerCalculator
{
    [OperationContract]
    ComplexNumber Add(ComplexNumber n1, ComplexNumber n2);
    [OperationContract]
    ComplexNumber Subtract(ComplexNumber n1, ComplexNumber n2);
    [OperationContract]
    ComplexNumber Multiply(ComplexNumber n1, ComplexNumber n2);
    [OperationContract]
    ComplexNumber Divide(ComplexNumber n1, ComplexNumber n2);
}

Sınıfın ComplexNumber genel üyeleri, XmlSerializer tarafından XML öznitelikleri olarak serileştirilir. DataContractSerializer bu tür XML örneği oluşturmak için kullanılamaz.

public class ComplexNumber
{
    private double real;
    private double imaginary;

    [XmlAttribute]
    public double Real
    {
        get { return real; }
        set { real = value; }
    }

    [XmlAttribute]
    public double Imaginary
    {
        get { return imaginary; }
        set { imaginary = value; }
    }

    public ComplexNumber(double real, double imaginary)
    {
        this.Real = real;
        this.Imaginary = imaginary;
    }
    public ComplexNumber()
    {
        this.Real = 0;
        this.Imaginary = 0;
    }

}

Hizmet uygulaması uygun sonucu hesaplar ve döndürür; türün ComplexNumber değerlerini kabul eder ve döndürür.

public class XmlSerializerCalculatorService : IXmlSerializerCalculator
{
    public ComplexNumber Add(ComplexNumber n1, ComplexNumber n2)
    {
        return new ComplexNumber(n1.Real + n2.Real, n1.Imaginary +
                                                      n2.Imaginary);
    }
    …
}

İstemci uygulaması karmaşık sayılar da kullanır. Hizmet sözleşmesi ve veri türleri, hizmet meta verilerinden ServiceModel Meta Veri Yardımcı Programı Aracı (Svcutil.exe) tarafından oluşturulan generatedClient.cs kaynak dosyasında tanımlanır. Svcutil.exe, bir sözleşme DataContractSerializer ile serileştirilebilir olmadığında algılar ve bu durumda XmlSerializable türlerini üretmeye geri döner. XmlSerializer kullanımını zorlamak istiyorsanız, /serializer:XmlSerializer (XmlSerializer'ı kullan) komutunu Svcutil.exe aracına iletebilirsiniz.

// Create a client.
XmlSerializerCalculatorClient client = new
                         XmlSerializerCalculatorClient();

// Call the Add service operation.
ComplexNumber value1 = new ComplexNumber();
value1.Real = 1;
value1.Imaginary = 2;
ComplexNumber value2 = new ComplexNumber();
value2.Real = 3;
value2.Imaginary = 4;
ComplexNumber result = client.Add(value1, value2);
Console.WriteLine("Add({0} + {1}i, {2} + {3}i) = {4} + {5}i",
    value1.Real, value1.Imaginary, value2.Real, value2.Imaginary,
    result.Real, result.Imaginary);
    …
}

Örneği çalıştırdığınızda, işlem istekleri ve yanıtları istemci konsolu penceresinde görüntülenir. İstemciyi kapatmak için istemci penceresinde ENTER tuşuna basın.

Add(1 + 2i, 3 + 4i) = 4 + 6i
Subtract(1 + 2i, 3 + 4i) = -2 + -2i
Multiply(2 + 3i, 4 + 7i) = -13 + 26i
Divide(3 + 7i, 5 + -2i) = 0.0344827586206897 + 1.41379310344828i

Press <ENTER> to terminate client.

Örneği ayarlamak, derlemek ve çalıştırmak için

  1. Windows Communication Foundation Örnekleri içinOne-Time Kurulum Yordamını yaptığınızdan emin olun.

  2. Çözümün C# veya Visual Basic .NET sürümünü oluşturmak için Windows Communication Foundation Örneklerioluşturma başlığındaki yönergeleri izleyin.

  3. Örneği tek bir makine veya makineler arası bir yapılandırmada çalıştırmak için, Windows Communication Foundation örneklerini çalıştırmayönergelerini izleyin.