今日は、WCF コミュニケーションのスタイルについて質問があります。
私は時々少し拒否するので、プログラムで物事を使用し(自分で制御したい)、巨大なものは好きではありません。2 つのプログラム部分間の通信が必要な場合があり、同じマシン上やネットワーク上で通信する場合があります。
そこで、構成ファイルや svcutil などを使用する代わりに、プログラムで WCF を使用しようとしました。
以下を使用する場合:
a) 契約を定義する
[ServiceContract]
public interface IMyContract
{
[OperationContract]
bool DoSomething(string something_in);
}
b) いくつかのコードをプログラムする
public class MySomething: IMyContract
{
public bool DoSomething(string something_in)
{
if(String.IsNullOrEmpty(something_in)
return false;
return true;
}
}
次に、プログラムでホストします
Uri baseAddress = new Uri("net.tcp://localhost:48080/MySimpleService");
using (ServiceHost host = new ServiceHost(typeof(MyContract), baseAddress))
{
host.AddServiceEndpoint(typeof(IMyContract), new NetTcpBinding(), "");
host.Open();
Console.WriteLine("<Enter> to stop the service.");
Console.ReadLine();
host.Close();
後で別のプログラムからそれを消費するだけです:
var binding = new NetTcpBinding();
var endpoint = new EndpointAddress("net.tcp://localhost:48080/MySimpleService");
var channelFactory = new ChannelFactory<IMyContract>(binding, endpoint);
IMyContract client = null;
try
{
client = channelFactory.CreateChannel();
bool test = client.DoSomething();
((ICommunicationObject)client).Close();
}
catch (Exception ex)
{
if (client != null)
{
((ICommunicationObject)client).Abort();
}
}
欠点は何でしょう?
分かりやすくなりませんか?
そのようなことは他の問題を引き起こす可能性がありますか?
(私は主にこれに興味があります.svcutilを使用するのは非常に面倒だと思うので、wcfサービスが独自のプログラムのcumminicationのみに使用される場合、手動で簡単に処理できるクラスの変更のためです)私は行方不明ですか?
大きな未読の XML ファイルを手動で処理するのは単にスタイルが悪いのでしょうか?