2014-10-01 6 views
0

Немного краевого вопроса, но здесь идет.WCF Service использует FTP как транспорт

Я ищу способы записи службы WCF, к которой осуществляется доступ с использованием протокола FTP. Система, в которой клиент будет работать, имеет только получил доступ к FTP через порт 21 - весь другой трафик заблокирован, а трафик через FTP через порт 21 также отфильтровывается (попробовал запустить службу RESTful через порт 21 без везения). Я прочитал, что SOAP может использоваться по различным протоколам (HTTP, FTP, SMTP и т. Д.). У меня есть служба, работающая отлично с привязкой HTTP к различным портам, но я застрял в точке привязки ее к FTP. У кого-нибудь есть опыт?

+0

Что случилось с "открытым портом или нет приложение для вас"? –

+0

Хахаха, мне жаль, что все было так просто, я действительно это делаю. Есть множество прокси-серверов и брандмауэров, изолирующих внутреннее от внешнего, так что это слишком жесткая корзина, я боюсь – Katstevens

ответ

0

В качестве примера шлюза из SOAP в другую среду можно представить SOAP-FTP-шлюз, где команды FTP отображаются в сообщение SOAP. Чтобы действительно разговаривать с FTP-сервером, вызовы должны быть выражены на языке, понятном по FTP, а не в SOAP.

<?php 
$myLogin = 'foo'; 
$myPass = 'bar'; 

$env = '<S:Envelope 
    xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> 
    <S:Header> 
     <m:path xmlns:m="http://www.soap.org/path"> 
     <m:action>http://www.im.org/chat</m:action> 
     <m:to>soap://D.com/some/endpoint</m:to> 
     <m:forward> 
      <m:via>soap://B.com</m:via> 
      <m:via>soap://C.com</m:via> 
     </m:forwawd> 
     <m:reverse> 
      <m:via/> 
     </m:reverse> 
     <m:from>mailto:[email protected]</m:from> 
     <m:id>uuid:84b9f5d0-33fb-4a81-b02b-5b760641c1d6</m:id> 
     </m:path> 
    </S:Header> 
    <S:Body> 
     ... 
    </S:Body> 
</S:Envelope>'; 

$socket=fsockopen('http://example.com', 21); 
$t=fgets($socket, 128); 
fwrite($socket, "USER $myLogin\r\n"); 
$t=fgets($socket, 128); 
fwrite($socket, "PASS $myPass\r\n"); 
$t=fgets($socket, 128); 
fwrite($socket, "PUTS $env\r\n"); 
fwrite($socket, "QUIT\r\n"); 
fclose($socket); 
?> 

Список литературы