Training
Module
Apply Interfaces in Code - Training
Discover how default implementations in interfaces enable you to add new methods directly into an interface and provide a default implementation.
This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
In this example, an ICalculator
contract is defined for a calculator service, the service is implemented in the CalculatorService
class, and then its endpoint is defined in code, where it is specified that the service must use the BasicHttpBinding class.
It is usually the best practice to specify the binding and address information declaratively in configuration rather than imperatively in code. Defining endpoints in code is usually not practical because the bindings and addresses for a deployed service are typically different from those used while the service is being developed. More generally, keeping the binding and addressing information out of the code allows them to change without having to recompile or redeploy the application.
Create the interface that defines the service contract.
[ServiceContract]
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);
}
<ServiceContract()> _
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
Implement the service contract defined in step 1.
public class CalculatorService : ICalculator
{
public double Add(double n1, double n2)
{
return n1 + n2;
}
public double Subtract(double n1, double n2)
{
return n1 - n2;
}
public double Multiply(double n1, double n2)
{
return n1 * n2;
}
public double Divide(double n1, double n2)
{
return n1 / n2;
}
}
Public Class CalculatorService
Implements ICalculator
Public Function Add(ByVal n1 As Double, _
ByVal n2 As Double) As Double Implements ICalculator.Add
Return n1 + n2
End Function
Public Function Subtract(ByVal n1 As Double, _
ByVal n2 As Double) As Double Implements ICalculator.Subtract
Return n1 - n2
End Function
Public Function Multiply(ByVal n1 As Double, _
ByVal n2 As Double) As Double Implements ICalculator.Multiply
Return n1 * n2
End Function
Public Function Divide(ByVal n1 As Double, _
ByVal n2 As Double) As Double Implements ICalculator.Divide
Return n1 / n2
End Function
End Class
In the hosting application, create the base address for the service and the binding to be used with the service.
// Specify a base address for the service
String baseAddress = "http://localhost/CalculatorService";
// Create the binding to be used by the service.
BasicHttpBinding binding1 = new BasicHttpBinding();
' Specify a base address for the service
Dim baseAddress = "http://localhost/CalculatorService"
' Create the binding to be used by the service.
Dim binding1 As New BasicHttpBinding()
Create the host and call ServiceHost.AddServiceEndpoint(Type, Binding, String) or one of the other overloads to add the service endpoint for the host.
using(ServiceHost host = new ServiceHost(typeof(CalculatorService)))
{
host.AddServiceEndpoint(typeof(ICalculator),binding1, baseAddress);
Using host As New ServiceHost(GetType(CalculatorService))
With host
.AddServiceEndpoint(GetType(ICalculator), _
binding1, _
baseAddress)
To specify the binding in code but to use the default endpoints provided by the runtime, pass the base address into the constructor when creating the ServiceHost, and do not call ServiceHost.AddServiceEndpoint.
ServiceHost host = new ServiceHost(typeof(CalculatorService), new Uri(baseAddress));
Dim host As New ServiceHost(GetType(CalculatorService), New Uri(baseAddress))
For more information about default endpoints, see Simplified Configuration and Simplified Configuration for WCF Services.
Training
Module
Apply Interfaces in Code - Training
Discover how default implementations in interfaces enable you to add new methods directly into an interface and provide a default implementation.