Introduction:
In this article,i am going to explain about how to create a wcf service without using visual studio sdk.
Main:
Step 1:
1.Open Notepad and add namespace System and System.ServiceModel. We need ServiceModel to specify a WCF service
2.For WCF service we need to create an interface which will act as a proxy to the client. From the client, we need to replicate the proxy object and build the same interface again. After we declare the Interface we mark the Interface with ServiceContract, and the method to be exposed to outside using OperationContract.
3.Next we create a concrete class for the same to define the class implementing the interface.
So our server is Ready.
[ServiceContract]
public interface INetPrgHelp
{
[OperationContract]
string WcfMethod(string inputText);
}
public class NetPrgHelp : INetPrgHelp
{
public string WcfMethod(string inputText)
{
Console.WriteLine("Message Received : {0}", inputText);
Console.WriteLine(OperationContext.Current.RequestContext.RequestMessage.ToString());
return string.Format("Message from Server {0}", inputText);
}
}
[ServiceContract] public interface INetPrgHelp { [OperationContract] string WcfMethod(string inputText); } public class NetPrgHelp : INetPrgHelp { public string WcfMethod(string inputText) { Console.WriteLine("Message Received : {0}", inputText); Console.WriteLine(OperationContext.Current.RequestContext.RequestMessage.ToString()); return string.Format("Message from Server {0}", inputText); } } |
Steps to host the service (Address , Binding):
To host the service in the server you need to know three inputs:
1.Binding : This indicates how the service will be hosted. For basic soap operation with no security we need HttpBinding. We can also use other bindings as well.
2.Address : Represents the location to host the service. When the service is hosted you can specify the qualified service path where the service will be hosted.
3.Host the service using ServiceHost and Open the connection.
static void Main(string[] args)
{
BasicHttpBinding binding = new BasicHttpBinding();
Uri serviceUri = new Uri("http://localhost:8000");
ServiceHost host = new ServiceHost(typeof(NetPrgHelp), serviceUri);
host.AddServiceEndpoint(typeof(INetPrgHelp), binding, "OperationService");
host.Open();
Console.WriteLine("Service is hosted to the Server");
Console.ReadLine();
host.Close();
}
static void Main(string[] args) { BasicHttpBinding binding = new BasicHttpBinding(); Uri serviceUri = new Uri("http://localhost:8000"); ServiceHost host = new ServiceHost(typeof(NetPrgHelp), serviceUri); host.AddServiceEndpoint(typeof(INetPrgHelp), binding, "OperationService"); host.Open(); Console.WriteLine("Service is hosted to the Server"); Console.ReadLine(); host.Close(); } |
So the uri where the service is hosted is http://localhost:8000/OperationService. You should notice the call AddServiceEndpoint is used to give the qualified address for the service. If you don’t specify AddServiceEndpoint the service will be posted to root path of Uri specified.
To Compile the Server application :
1.Open Command prompt and navigate to the location where you save the File with code.
2.To compile the program use csc with /r: to reference the System.ServiceModel.dll using (Say the file we save for code is ServerProgram.cs)
csc /r:” C:\windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\System.ServiceModel.dll” ServerProgram.cs
3.You will get the program compiled, and produce the Executable. Run the program.
Conclusion:
Hope this helps,
Happy Coding.