using System.ServiceModel;
namespace TestServiceStub
{ 
 [ServiceContract]
 public interface ServiceStub
 {
  [OperationContract] 
  string GetData(string name);
 }
}
ServiceImpl.cs
using System;
using System.ServiceModel;
using TestServiceStub;
namespace TestServiceImpl
{ 
 public class ServiceImpl : ServiceStub
 { 
 
  public string GetData(string name)
  {
      return "Hello " + name;
  }  
  
  public static void Main()
  { 
   using ( var h = new ServiceHost(serviceType: typeof(ServiceImpl)) )
   {
       h.AddServiceEndpoint(
           implementedContract: typeof(ServiceStub), 
           binding: new NetTcpBinding(), 
           address: "net.tcp://localhost:777");
    
       h.Open();
    
       Console.WriteLine("Don't press any key");
       Console.ReadLine();
   }
  }
  
 }//class
}//namespace
Consume.cs
using System;
using System.ServiceModel;
using TestServiceStub;
namespace ServiceUser
{
 public class Program
 {
 
  public static void Main()
  {
    var factory = 
        new ChannelFactory<ServiceStub>(
            binding: new NetTcpBinding(), 
            remoteAddress: "net.tcp://localhost:777");
   
    ServiceStub service = factory.CreateChannel();
    Console.WriteLine("Test: {0}", service.GetData("Michael"));
    Console.ReadLine();
  }
  
 }//class 
}//namespace
To compile, run all these commands, put them in a batch file if you want to:
csc /target:library ServiceStub.cs csc /reference:ServiceStub.dll ServiceImpl.cs csc /reference:ServiceStub.dll Consume.cs
To launch the middle-tier:
C:\_CODE\_.NET\Test\wcf>start ServiceImpl.exe
To use the service(s) of middle-tier. Note: run this on separate command shell, leave the ServiceImpl.exe running
C:\_CODE\_.NET\Test\wcf>Consume.exe Test: Hello Michael

 
No comments:
Post a Comment