私はWCFで新しく、まだ実験中です。WCFスワップサービスインターフェイス
私はこのような2つのServiceContractがあります。これらのインタフェースを実装し、サーバーサイドのClientクラスで
[ServiceContract]
public interface IFirst
{
[OperationContract(IsOneWay = true)]
void First();
}
[ServiceContract]
public interface ISecond
{
[OperationContract(IsOneWay = true)]
void Second();
}
:
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());
}
}
とホスト:クライアント側で
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();
:
を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();
これは問題なく動作します。これはFirstメソッドとSecondメソッドを呼び出しますが、各呼び出しでClientクラスの新しいインスタンスが作成されます。クライアントがチャネルを作成すると、サービスはClientオブジェクトの新しいインスタンスを作成するため、明らかです。私が達成したいのは、Second after Firstを呼び出すことですが、Clientの同じインスタンスに対して呼び出します。それも可能ですか?私はこの2つの方法を1つのサービスに入れることができますが、私が望むものではありません。