Я пытаюсь создать веб-службу, где параметры, выбранные с веб-страницы, отправляются в файл standalone.exe, написанный на C#, который управляет пакетом САПР, установленным на сервере. Затем пакет САПР генерирует изображение, основанное на выбранных параметрах, выбранных пользователем на интерфейсной веб-странице. В скорлупе ореха мне нужно:Подключение PEAR SOAP с WSDL к C# standalone .exe
- Пользователь выбирает две части
- Отдельные детали посланные C# .exe
- C# работает пакет CAD соединяет детали, возвращает изображение двух частей
- Пользователь видит image
Из чего я понимаю, мне нужна реализация SOAP с видимым WSDL. У меня не было проблем с запуском учебных пособий и создания собственных SOAP и WSDL и общения на локальных и удаленных серверах между моими собственными функциями PHP.
Теперь я пытаюсь получить написанный PHP SOAP, который будет использоваться автономным C#, и именно там я теряюсь. Я относительно новичок в SOAP и WSDL, но я понимаю основы и функции каждого. Кроме того, я начал использовать NUSOAP для моего поколения wsdl.
Есть ли подобный пакет кода, который позволяет создавать WSDL-файлы из методов C#, которые позволяют использовать SOAP-соединение?
Кроме того, мой клиент и веб-страница всегда будут знать WSDL и необходимые параметры для отправки. По сути, это всего лишь шлюз между веб-сайтом и пакетом САПР.
Вот Wheezly McDizzle
<?xml version="1.0" encoding="UTF-8"?>
<definitions
xmlns:typens="urn:getBlockedIP"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns="http://schemas.xmlsoap.org/wsdl/"
name="getBlockedIP"
targetNamespace="urn:getBlockedIP">
<types></types>
<message name="getBlockedIP">
<part name="idNumber" type="xsd:string"/>
</message>
<message name="getBlockedIPResponse">
<part name="ipAddress" type="xsd:string"/>
</message>
<portType name="blockedIPPort">
<operation name="getBlockedIP">
<input message="typens:getBlockedIP" />
<output message="typens:getBlockedIPResponse"/>
</operation>
</portType>
<binding name="blockedIPBinding" type="typens:blockedIPPort">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name = "getBlockedIP" >
<soap:operation soapAction = "urn:blockedIPAction" />
<input>
<soap:body namespace="urn:getBlockedIP" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:getBlockedIP" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
<service name="getBlockedIPService">
<port name="blockedIPPort" binding="blockedIPBinding">
<soap:address location="http://mysite.com/xdata/blockedip_api.php"/>
</port>
</service>
</definitions>
Метод, это тестирование является простой массив выборки с одним параметром. Это всего лишь массив с 25 элементами, который содержит заблокированные IP-адреса, и пользователь выбирает число между 1-25, и метод выплевывает IP-адрес, связанный с этим местоположением в массиве.
Я подражал методу в C# в качестве командной строки с Console.WriteLine
и Console.ReadLine()
. (Это неверно, очевидно, поскольку программа C# должна захватывать параметры из файла XML, а не любой пользовательский ввод)
Итак, теперь я застреваю - моя голова все перепутана с WhizCheese Dulls и SOAP и XML. Я смущен тем, куда идти отсюда. Я занимаюсь разработкой веб-сайтов с передней и задней частью, но все еще мокрым за ушами, когда дело доходит до платформы .NET.
По существу, мне хотелось бы, чтобы кто-то указал мне в правильном направлении, чтобы, наконец, выполнить мою первую заявленную цель в этом проекте. Возможно ли это так, как я делаю? Возможно, SOAP - это не правильный путь? Я также запутался в том, как отправить параметры в автономный C# .exe и использовать его (например, гамбургер ... ммммммм).
Вот мое мыло инстанциацию в PHP на удаленном сервере:
Клиент:
// WSDL location to be used with a WSDL instantiation of SOAP
$namespace = 'http://mysite.com/xdata/blockedip.wsdl';
// Parameters are easier sent as an array with associative keys
$params = array('arrayNum' => $number);
// include soap client (php.ini include_path set to installed PEAR location)
require_once 'SOAP/Client.php';
// create SOAP Client with an exposed WSDL location
$wsdl = new SOAP_WSDL($namespace);
//communicate with server, WSDL
$SoapClient = $wsdl->getProxy();
//call method with parameters
$ip = $SoapClient->call("getBlockedIP", $params);
Сервер:
// include soap server and create server object
require_once 'SOAP/Server.php';
$soapServer = new SOAP_Server();
$server->_auto_translation = true;
// create class with desired method
$blockedip = new SoapTestClass();
// add class and namespace schema
$soapServer->addObjectMap($blockedip, 'http://schemas.xmlsoap.org/soap/envelope/');
// respond with raw post
$soapServer->service($GLOBALS['HTTP_RAW_POST_DATA']);
Если вам нужно что-нибудь еще, больной с удовольствием доля. Спасибо, что нашли время, чтобы прочитать это и за любую помощь, которую вы можете предложить! Я очень ценю это.
UPDATE:
Из того, что я читал, может быть, я бы включить метаданные пока я понятия не имею, где это можно сделать?
UPDATE:
Я использую NuSOAP для создания моих WSDL-файлы из методов PHP и подключения их к Visual Studio 2010 C# и они работают. Я теперь застрял в обратном процессе. Мне нужно, чтобы php отправлял параметры методу C# и возвращал что .exe.
это Debian Apache на удаленном общем сервере – Dan
Так просто быть понятным - PHP (frontend), Apache (Hosted), C# exe (примерно DAL backend)? Я предполагаю, что вы используете Mono для C# и что он установлен на общем сервере. –
Я все еще пытаюсь запустить его локально на своем ПК с Windows перед тем, как перейти на сервер. WAMP, с C# через visual studio 2010 – Dan