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