저는 WCF에 익숙하며 아직 실험 중입니다.WCF 스왑 서비스 인터페이스
나는이 같은 두 가지의 ServiceContract :
그 인터페이스를 구현하는 서버 측 클라이언트 클래스에[ServiceContract]
public interface IFirst
{
[OperationContract(IsOneWay = true)]
void First();
}
[ServiceContract]
public interface ISecond
{
[OperationContract(IsOneWay = true)]
void Second();
}
: 클라이언트 측에
ServiceHost host = new ServiceHost(typeof(Client), new Uri("net.tcp://localhost:8000"));
NetTcpBinding binding = new NetTcpBinding();
host.AddServiceEndpoint(typeof(IFirst), binding, "");
host.AddServiceEndpoint(typeof(ISecond), binding, "");
host.Open();
:
public class Client : IFirst, ISecond
{
static int count = 0;
int id;
public Client()
{
count++;
id = count;
Console.WriteLine("{0} client created.", id);
}
public void First()
{
Console.WriteLine("First from: " + id.ToString());
}
public void Second()
{
Console.WriteLine("Second: " + id.ToString());
}
}
및 호스트를
ChannelFactory<IFirst> firstFactory = new ChannelFactory<IFirst>(new NetTcpBinding(), new EndpointAddress("net.tcp://localhost:8000"));
IFirst iFirst = firstFactory.CreateChannel();
iFirst.First();
ChannelFactory<ISecond> secondFactory = new ChannelFactory<ISecond>(new NetTcpBinding(), new EndpointAddress("net.tcp://localhost:8000"));
ISecond iSecond = secondFactory.CreateChannel();
iSecond.First();
잘 작동합니다. 첫 번째 및 두 번째 메서드를 호출하지만 각 호출에 대해 Client 클래스의 새 인스턴스를 만듭니다. 클라이언트가 채널을 생성 할 때 서비스는 Client 객체의 새로운 인스턴스를 생성하기 때문에 분명합니다. 내가 성취하고자하는 것은 First after Second를 호출하지만 Client의 동일한 인스턴스에 대해 호출하는 것입니다. 심지어 가능할까요? 나는이 두 가지 방법을 하나의 서비스에 넣을 수는 있지만 그것이 내가 원하는 바가 아님을 안다.