WCF(Windows Communication Foundation)はあなたが探しているものです。これはほぼ正確に実行されますが、学習曲線はやや急です。
私はそれを、あなたのインターフェース、つまりサービス契約によって定義されるネットワーク「プロトコル」を自動的に生成するフレームワークと考えるのが好きです。「プロトコル」は、基盤となるネットワークトランスポートからも独立しています。生のTCP、HTTP、HTTPSのバインディングがあり、すべて異なるユースケースを念頭に置いています。
プロトコルまたはバイトレベルでネットワークトラフィックが実際にどのように見えるかを実際に気にする必要はありません。すべての作業がシームレスに行われます。
賢いもの、学ぶ価値があります。
構成ファイルを使用しない、プレーンTCPを介したWCFクライアントとサーバーの完全な例(すべてプログラムによる)
インターフェイスを含む、クライアントとサーバーという他の2つのプログラム間で共有されるクラスライブラリを作成します。
[ServiceContract]
public interface IMyApi
{
[OperationContract]
string SayHello(string s);
}
プログラム1では、サーバー:
上記のクラスライブラリへの参照を追加します。
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class MyApi : IMyApi
{
public string SayHello(string s)
{
return "Hello " + s;
}
}
static void Main()
{
var api = new MyApi();
var svcHost = new ServiceHost(api, new Uri("net.tcp://localhost:12345/MyService"));
svcHost.Open();
Thread.CurrentThread.Join();
}
プログラム2、クライアント:
上記のクラスライブラリへの参照を追加します。
static void Main()
{
var binding = new NetTcpBinding();
var endpoint = new EndpointAddress("net.tcp://localhost:12345/MyService");
var cf = new ChannelFactory<IMyApi>(binding, endpoint);
var client = cf.CreateChannel();
Console.WriteLine(client.SayHello("Tom")); // output on the console should be "Hello Tom"
}