потоковая передача данных с клиента Wcf на сервер Java - PullRequest
1 голос
/ 04 ноября 2011

Наша ситуация: у нас есть Java-сервер, вот определение WebService:

@WebMethod(operationName = "upload")
void upload(
 @WebParam(name = "User", partName = "User", header = true) String user,
 @WebParam(name = "Pwd",partName = "Pwd",header = true) String password,
 @WebParam(name = "Filename",partName = "Filename",header = true) String filename,
 @WebParam(name = "Data", partName = "Data",targetNamespace = "http://") @XmlMimeType("application/octet-stream")
DataHandler data) throws InvalidRequestException, ServiceException;

Наш клиент написан на c #. Автоматически сгенерированный параметр запроса на стороне клиента Wcf для метода «upload»:

public partial class uploadRequest {
 [MessageBodyMemberAttribute(Namespace="http://", Order=0)]
 [XmlArrayAttribute(Form=XmlSchemaForm.Unqualified)]
 [XmlArrayItemAttribute(Form=XmlSchemaForm.Unqualified, IsNullable=false)]
 public Property[] Properties;

 [MessageBodyMemberAttribute(Namespace="http://", Order=1)]
 [XmlElementAttribute(Form=XmlSchemaForm.Unqualified, DataType="base64Binary")]
 public byte[] Data;

 public uploadRequest() {}

 public uploadRequest(Property[] Properties, byte[] Data) {
  this.Properties = Properties;
  this.Data = Data;
 }
}

Этот код работает хорошо, но нам нужен Data as Stream вместо байта [], потому что мы хотим загружать большие файлы. Теперь для потоковой передачи нам нужны «свойства», определенные для заголовка, а не для тела (и, естественно, некоторые изменения в файле конфигурации), но проблема в том, что это автоматически.

Мой вопрос: как мы можем заставить клиентскую часть wcf сгенерировать правильный код для нас? Или мы должны изменить серверную сторону, чтобы добиться этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...