gpt4 book ai didi

wcf - 将多个文件发送到 WCF 服务的最佳方式是什么?

转载 作者:行者123 更新时间:2023-12-04 04:56:26 25 4
gpt4 key购买 nike

我们正在创建一个 WCF 服务,该服务需要 2-4 个图像文件(每个大约 2k-5k 小)作为输入参数发送给它,以及大约 6 个文本字段参数。发回的数据仅包含几个文本值。

我知道可以将单个文件作为流发送,但不确定如何发送多个文件。

在这种情况下,客户将是第 3 方,我们希望让他们与 WCF 服务的接口(interface)尽可能简单。

最佳答案

可能有很多方法可以做到这一点,但这是我的想法。请注意,我只是包含了任意数量的字符串,您可以根据需要添加/删除。

首先,您需要某种“输入”对象,该对象将传递给您的 WCF 服务,其中包含您的图像和字符串值。注意 Images 属性是一个字节数组;这样您就可以包含多个图像。

[DataContract]
public class InputObject
{
[DataMember]
public byte[][] Images { get; set; }

[DataMember]
public string FirstValue { get; set; }

[DataMember]
public string SecondValue { get; set; }
}

接下来,您需要一个 WCF 服务将返回的对象...
[DataContract]
public class ReturnObject
{
[DataMember]
public string FirstValue { get; set; }

[DataMember]
public string SecondValue { get; set; }
}

您的 ServiceContract 将如下所示。
[ServiceContract]
public interface IService1
{
[OperationContract]
ReturnObject UploadData ( InputObject input );
}

你的服务类是这样的。
public class Service1 : IService1
{
public ReturnObject UploadData ( InputObject input )
{
// Do your thing with InputObject data

ReturnObject returnObject = new ReturnObject
{
FirstValue = "MyFirstValue" ,
SecondValue = "MySecondValue"
};

return returnObject;
}
}

您需要确保您的服务绑定(bind)适用于发送图像数据,因此增加一些默认限制是合适的。这是我的服务配置中的示例绑定(bind)。
<wsHttpBinding>
<binding name="Service1Binding" maxReceivedMessageSize="1000000">
<readerQuotas maxArrayLength="1000000"
maxBytesPerRead="1000000"
maxDepth="1000000"
maxNameTableCharCount="1000000"
maxStringContentLength="1000000"/>
</binding>
</wsHttpBinding>

确保将其指定为服务的 bindingConfiguration。
<endpoint address="" 
binding="wsHttpBinding"
contract="WcfService5.IService1"
bindingConfiguration="Service1Binding">

现在您需要做的就是从您的客户的服务中引用它并调用它。
var images = new byte[2][];
images[0] = System.IO.File.ReadAllBytes( @"D:\Development\TestImage.bmp" );
images[1] = System.IO.File.ReadAllBytes( @"D:\Development\TestImage.jpg" );

var input = new InputObject
{
Images = images ,
FirstValue = "MyFirstValue" ,
SecondValue = "MySecondValue"
};

var client = new Service1Client();
client.UploadData( input );

希望这可以帮助你...

关于wcf - 将多个文件发送到 WCF 服务的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/859112/

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