в основном нужно передать большой файл между службой wcf и клиентом java, может кто-нибудь дать направление, пожалуйста?
В основном мне нужно создать службу wcf, которая должна читать содержимое blob (фактически содержимое файла, хранящееся в столбце db) и передать его в веб-приложение java < / strong> (являясь клиентом wcf).
Размер файла может варьироваться от 1 КБ до 20 МБ. К настоящему времени я уже изучил / проверил нижеперечисленные варианты, но все еще не могу окончательно определить, какой из них мне следует выбрать, что возможно, а что нет. Может кто-нибудь посоветует мне, пожалуйста.
передать содержимое файла как byte []: я понимаю, что это увеличит размер данных, передаваемых клиенту, поскольку он будет кодировать данные в формате base 64 и встраивать кодировку base 64 в само сообщение мыла, что замедляет обмен данными и есть проблемы с производительностью. Но это точно работает, но я не уверен, целесообразно ли использовать этот подход.
Совместное использование NetworkDrive / FTPFolder, доступного как для клиента, так и для приложения службы wcf: для этого файл, необходимый клиенту, сначала сохраняется там с помощью wcf, а затем клиенту необходимо использовать параметры ввода-вывода java ИЛИ FTP для его чтения . Это выглядит хорошо с точки зрения размера данных / пропускной способности, но имеет дополнительную обработку как на стороне службы, так и на стороне клиента (при необходимости хранить / читать через папку NetworkShared / FTP)
- Потоковая передача: я не уверен, что она будет осуществима с клиентом Java, но я понимаю, что потоковая передача поддерживается для клиентов не .net, но как это сделать, я не уверен ??? Я понимаю, что для потоковой передачи мне нужно использовать привязку basichttp, но мне нужно использовать DataContract или MessageContract, или что-то еще будет работать, а затем что должно быть сделано на стороне клиента java, в чем я не уверен.
- Использование подхода MTOM для передачи больших данных в запросах мыла. Похоже, что на самом деле у него есть поддержка, специально разработанная для решения передачи больших объемов данных в вызовах веб-служб, но мне нужно продолжить изучение этого вопроса, на данный момент я не есть много идей по этому поводу. Есть ли у кого-нибудь из вас предложения по этому поводу?
Я понимаю, что вопрос немного длиннее, но мне пришлось указать все 4 варианта, которые я пробовал, и мои проблемы / выводы по каждому из них, чтобы вы все могли предложить среди них или новый вариант, также вы будете знать то, что я уже пробовал, может направить меня более эффективно.