Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Sampel Dasar menunjukkan cara menerapkan kontrak data. Kontrak data memungkinkan Anda meneruskan data terstruktur ke dan dari layanan. Sampel ini didasarkan pada Memulai tetapi menggunakan angka kompleks alih-alih jenis numerik dasar.
Dalam sampel ini, layanan dihosting oleh Internet Information Services (IIS) dan klien adalah aplikasi konsol (.exe).
Nota
Prosedur penyiapan dan instruksi build untuk sampel ini terletak di akhir topik ini.
Kontrak layanan untuk layanan ini menggunakan angka kompleks, seperti yang ditunjukkan dalam kode sampel berikut.
// Define a service contract.
[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")]
public interface ICalculator
{
[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);
}
Atribut DataContractAttribute dan DataMemberAttribute telah diterapkan pada definisi ComplexNumber kelas untuk menunjukkan bidang kelas mana yang dapat diteruskan melalui kawat antara klien dan layanan, seperti yang ditunjukkan dalam kode sampel berikut.
[DataContract(Namespace="http://Microsoft.ServiceModel.Samples")]
public class ComplexNumber
{
[DataMember]
public double Real = 0.0D;
[DataMember]
public double Imaginary = 0.0D;
public ComplexNumber(double real, double imaginary)
{
this.Real = real;
this.Imaginary = imaginary;
}
}
Implementasi layanan menghitung dan mengembalikan hasil yang sesuai, dengan menerima dan mengembalikan angka dari jenis ComplexNumber.
// This is the service class that implements the service contract.
public class CalculatorService : ICalculator
{
public ComplexNumber Add(ComplexNumber n1, ComplexNumber n2)
{
return new ComplexNumber(n1.Real + n2.Real, n1.Imaginary +
n2.Imaginary);
}
public ComplexNumber Subtract(ComplexNumber n1, ComplexNumber n2)
{
return new ComplexNumber(n1.Real - n2.Real, n1.Imaginary -
n2.Imaginary);
}
public ComplexNumber Multiply(ComplexNumber n1, ComplexNumber n2)
{
double real1 = n1.Real * n2.Real;
double imaginary1 = n1.Real * n2.Imaginary;
double imaginary2 = n2.Real * n1.Imaginary;
double real2 = n1.Imaginary * n2.Imaginary * -1;
return new ComplexNumber(real1 + real2, imaginary1 +
imaginary2);
}
public ComplexNumber Divide(ComplexNumber n1, ComplexNumber n2)
{
ComplexNumber conjugate =
new ComplexNumber(n2.Real, -1*n2.Imaginary);
ComplexNumber numerator = Multiply(n1, conjugate);
ComplexNumber denominator = Multiply(n2, conjugate);
return new ComplexNumber(numerator.Real / denominator.Real,
numerator.Imaginary);
}
}
Implementasi klien juga menggunakan angka kompleks. Kontrak layanan dan kontrak data ditentukan dalam file sumber generatedClient.cs, yang dihasilkan oleh ServiceModel Metadata Utility Tool (Svcutil.exe) dari metadata layanan.
// Create a client.
DataContractCalculatorClient client = new DataContractCalculatorClient();
// Call the Add service operation.
ComplexNumber value1 = new ComplexNumber()
{
Real = 1,
Imaginary = 2
};
ComplexNumber value2 = new ComplexNumber()
{
Real = 3,
Imaginary = 4
};
ComplexNumber result = proxy.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);
…
}
Saat Anda menjalankan sampel, permintaan dan respons operasi ditampilkan di jendela konsol klien. Tekan ENTER di jendela klien untuk mematikan klien.
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 + 41i
Press <ENTER> to terminate client.
Untuk menyiapkan, mengompilasi, dan menjalankan sampel
Pastikan Anda telah melakukan Prosedur Penyiapan One-Time untuk Sampel Windows Communication Foundation.
Untuk membangun solusi edisi C# atau Visual Basic .NET, ikuti instruksi di Membangun Sampel Windows Communication Foundation.
Untuk menjalankan sampel dalam konfigurasi satu atau lintas komputer, ikuti instruksi di Menjalankan Sampel Windows Communication Foundation.