gpt4 book ai didi

c# - WCF,为什么要让它更复杂?

转载 作者:太空狗 更新时间:2023-10-29 17:56:24 26 4
gpt4 key购买 nike

<分区>

今天我有一个关于 WCF 通信风格的问题。

我有时会有点拒绝所以以编程方式使用东西(想要控制自己)而且我不喜欢巨大的。有时需要两个程序部分之间的通信,有时在同一台机器上,有时在网络上。

所以我尝试以编程方式使用 WCF,而不是使用配置文件、svcutil 等。

如果我使用以下内容:

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 文件手动执行操作是一种糟糕的风格吗?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com