Có thể có rất nhiều cách để thực hiện việc này, nhưng đây là suy nghĩ của tôi. Xin lưu ý rằng tôi chỉ đưa vào một số chuỗi tùy ý, bạn có thể thêm/xóa khi cần.
Trước tiên, bạn sẽ muốn một số loại đối tượng "đầu vào" sẽ được chuyển tới dịch vụ WCF chứa hình ảnh và giá trị chuỗi của bạn. Lưu ý thuộc tính Images là một mảng các mảng byte; điều này là để bạn có thể bao gồm nhiều hình ảnh.
[DataContract]
public class InputObject
{
[DataMember]
public byte[][] Images { get; set; }
[DataMember]
public string FirstValue { get; set; }
[DataMember]
public string SecondValue { get; set; }
}
Tiếp theo, bạn sẽ muốn một đối tượng mà dịch vụ WCF của bạn sẽ trở lại ...
[DataContract]
public class ReturnObject
{
[DataMember]
public string FirstValue { get; set; }
[DataMember]
public string SecondValue { get; set; }
}
ServiceContract của bạn sẽ trông như thế này.
[ServiceContract]
public interface IService1
{
[OperationContract]
ReturnObject UploadData (InputObject input);
}
Và lớp dịch vụ của bạn như thế này.
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;
}
}
Bạn cần đảm bảo ràng buộc dịch vụ phù hợp để gửi dữ liệu hình ảnh để tăng một số giới hạn mặc định là phù hợp. Đây là một ví dụ ràng buộc từ cấu hình dịch vụ của tôi.
<wsHttpBinding>
<binding name="Service1Binding" maxReceivedMessageSize="1000000">
<readerQuotas maxArrayLength="1000000"
maxBytesPerRead="1000000"
maxDepth="1000000"
maxNameTableCharCount="1000000"
maxStringContentLength="1000000"/>
</binding>
</wsHttpBinding>
Đảm bảo bạn chỉ định điều này làm ràng buộcĐịnh cấu hình cho dịch vụ của bạn.
<endpoint address=""
binding="wsHttpBinding"
contract="WcfService5.IService1"
bindingConfiguration="Service1Binding">
Bây giờ tất cả những gì bạn cần làm là tham khảo điều này từ dịch vụ của khách hàng và gọi nó.
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);
Hy vọng điều này sẽ giúp bạn ra ...
Một rất chi tiết và dễ dàng để làm theo ví dụ. Điều này đã làm điều đó cho bạn NagaMensch? Nếu vậy tôi nghĩ nó xứng đáng được chấp nhận, phải không? –
NagaMensch, điều này có trả lời câu hỏi của bạn không? –
Vâng, điều này rất hữu ích! Tôi đã kết thúc bằng cách sử dụng một biến thể của điều này, đó là một bộ sưu tập của Byte []. – alchemical