ورود

View Full Version : آموزش: wcf



NovemberRain
سه شنبه 23 اسفند 1390, 12:41 عصر
این مقاله از سایت تحلیل داده گرفته شده است.امیدوارم براتون مفید واقع بشه.

چگونگی پیاده سازی یک Windows Communication Foundation Service Contract (http://articles.tahlildadeh.com/post/Learn-How-to-Implement-WCF.aspx)

ارسال شده توسط administrator (http://articles.tahlildadeh.com/author/administrator.aspx)
22. جوان 2010 13:42 چگونگی پیاده سازی یک Windows Communication Foundation Service Contract

این مقاله، دومین کار از شش کاری است که باید برای ایجاد یک سرویس Windows Communication Foundation یا (WCF) و یک client که سرویس را فراخوانی می کند، انجام داد.
برای ایجاد یک سرویس WCF، ابتدا باید یک contract ایجاد کرد، که با استفاده از یک اینترفیس تعریف می شود. برای کسب اطلاعات بیشتر در مورد چگونگی یک interface، اینجا (http://articles.tahlildadeh.com/post/How-to-Define-W-C-F.aspx) کلیک کنید. مرحله بعدی، که در این مثال نشان داده شده است، پیاده سازی اینترفیس است. این کار مستلزم ایجاد یک کلاس بنام CalculatorService است که اینترفیس ICalculator را که توسط کاربر تعریف شده، پیاده می کند. کدی که برای این کار استفاده می شود در زیر آورده شده است.
پیاده سازی یک WCF service contract

یک کلاس جدید بنام CalculatorService در همان فایلی که اینترفیس ICalculator را تعریف کردید، ایجاد کنید. این کلاس، اینترفیس ICalculator را پیاده سازی می کند.

در VB

Public Class CalculatorService
Implements ICalculator

در #C
public class CalculatorService : ICalculator

هر متدی را که در اینترفیس ICalculator و داخل کلاس CalculatorService تعریف شده، پیاده سازی کنید.

در VB
Public Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Add
Dim result As Double = n1 + n2
' Code added to write output to the console window.
Console.WriteLine("Received Add({0},{1})", n1, n2)
Console.WriteLine("Return: {0}", result)
Return result
End Function

Public Function Subtract(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Subtract
Dim result As Double = n1 - n2
Console.WriteLine("Received Subtract({0},{1})", n1, n2)
Console.WriteLine("Return: {0}", result)
Return result

End Function

Public Function Multiply(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Multiply
Dim result As Double = n1 * n2
Console.WriteLine("Received Multiply({0},{1})", n1, n2)
Console.WriteLine("Return: {0}", result)
Return result

End Function


Public Function Divide(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Divide
Dim result As Double = n1 / n2
Console.WriteLine("Received Divide({0},{1})", n1, n2)
Console.WriteLine("Return: {0}", result)
Return result

End Function


در #C
public double Add(double n1, double n2)
{
double result = n1 + n2;
Console.WriteLine("Received Add({0},{1})", n1, n2);
// Code added to write output to the console window.
Console.WriteLine("Return: {0}", result);
return result;
}

public double Subtract(double n1, double n2)
{
double result = n1 - n2;
Console.WriteLine("Received Subtract({0},{1})", n1, n2);
Console.WriteLine("Return: {0}", result);
return result;
}

public double Multiply(double n1, double n2)
{
double result = n1 * n2;
Console.WriteLine("Received Multiply({0},{1})", n1, n2);
Console.WriteLine("Return: {0}", result);
return result;
}

public double Divide(double n1, double n2)
{
double result = n1 / n2;
Console.WriteLine("Received Divide({0},{1})", n1, n2);
Console.WriteLine("Return: {0}", result);
return result;
}


مثال

کد زیر هم اینترفیسی را که contract را تعریف می کند، و هم پیاده سازی اینترفیس را نشان می دهد.
در VB
Imports System
Imports System.ServiceModel


Namespace Microsoft.ServiceModel.Samples
' Define a service contract.
<ServiceContract([Namespace] := "http://Microsoft.ServiceModel.Samples")> _
Public Interface ICalculator
<OperationContract()> _
Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double
<OperationContract()> _
Function Subtract(ByVal n1 As Double, ByVal n2 As Double) As Double
<OperationContract()> _
Function Multiply(ByVal n1 As Double, ByVal n2 As Double) As Double
<OperationContract()> _
Function Divide(ByVal n1 As Double, ByVal n2 As Double) As Double
End Interface

' Step 1: Create service class that implements the service contract.
Public Class CalculatorService
Implements ICalculator

' Step 2: Implement functionality for the service operations.
Public Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Add
Dim result As Double = n1 + n2
' Code added to write output to the console window.
Console.WriteLine("Received Add({0},{1})", n1, n2)
Console.WriteLine("Return: {0}", result)
Return result
End Function

Public Function Subtract(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Subtract
Dim result As Double = n1 - n2
Console.WriteLine("Received Subtract({0},{1})", n1, n2)
Console.WriteLine("Return: {0}", result)
Return result

End Function

Public Function Multiply(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Multiply
Dim result As Double = n1 * n2
Console.WriteLine("Received Multiply({0},{1})", n1, n2)
Console.WriteLine("Return: {0}", result)
Return result

End Function


Public Function Divide(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Divide
Dim result As Double = n1 / n2
Console.WriteLine("Received Divide({0},{1})", n1, n2)
Console.WriteLine("Return: {0}", result)
Return result

End Function
End Class
End Namespace


در #C
using System;
using System.ServiceModel;

namespace Microsoft.ServiceModel.Samples
{
// Define a service contract.
[ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")]
public interface ICalculator
{
[OperationContract]
double Add(double n1, double n2);
[OperationContract]
double Subtract(double n1, double n2);
[OperationContract]
double Multiply(double n1, double n2);
[OperationContract]
double Divide(double n1, double n2);
}

// Step 1: Create service class that implements the service contract.
public class CalculatorService : ICalculator
{
// Step 2: Implement functionality for the service operations.
public double Add(double n1, double n2)
{
double result = n1 + n2;
Console.WriteLine("Received Add({0},{1})", n1, n2);
// Code added to write output to the console window.
Console.WriteLine("Return: {0}", result);
return result;
}

public double Subtract(double n1, double n2)
{
double result = n1 - n2;
Console.WriteLine("Received Subtract({0},{1})", n1, n2);
Console.WriteLine("Return: {0}", result);
return result;
}

public double Multiply(double n1, double n2)
{
double result = n1 * n2;
Console.WriteLine("Received Multiply({0},{1})", n1, n2);
Console.WriteLine("Return: {0}", result);
return result;
}

public double Divide(double n1, double n2)
{
double result = n1 / n2;
Console.WriteLine("Received Divide({0},{1})", n1, n2);
Console.WriteLine("Return: {0}", result);
return result;
}
}
}

الان، service contract ایجاد و پیاده سازی شده است. یک solution بسازید تا مطمئن شوید که هیچ error در compilation وجود ندارد