PHP веб-сервер подключиться к программе C # на том же сервере - что я ищу? - PullRequest
0 голосов
/ 07 апреля 2009

Итак, у меня есть веб-сервер, на котором пользователь может удаленно управлять внешней электронной платой, которая в силу определенных условий вынуждает меня установить настольную программу с использованием C # в качестве посредника.

Какое волшебное ключевое слово я ищу? Сначала я думал о сокете, но каждый поиск сокетов включает сервер-клиент по TCP ... это одна и та же машина, поэтому теоретически я могу просто указать адрес обратной связи и продолжить работу в обычном режиме. Но является ли это излишним или единственным способом?

Заранее спасибо.

edit: Моя C # -программа - это, по сути, демон, который будет ждать заказов от скрипта PHP. Так что я могу получить удаленный доступ к этому веб-сайту и проинструктировать это приложение C #.

Ответы [ 3 ]

2 голосов
/ 07 апреля 2009

Я бы предложил архитектуру клиент / сервер, использующую TCP / IP (или даже UDP) (или другой протокол обмена сообщениями MS), чтобы общаться с вашей программой на C #. То, что вы эффективно делаете, - это написание драйвера устройства для специализированного аппаратного обеспечения. Делая это клиент / сервер, вы можете:

  • Перенесите код в службу Windows, которая может работать на любой машине, к которой может подключаться ваш веб-сервер, а не только на локальной машине.
  • Сервер легко обрабатывает несколько соединений, так что клиенты, кроме вашего веб-сервера, могут получить доступ к оборудованию, а конфликт доступа обрабатывается рациональным образом. Подумайте, тестовая консоль для отладки / тестирования оборудования.
  • Добавьте в свое резюме классную строку о написании клиент-серверных систем и служб Windows!
  • Вероятно, некоторые другие преимущества, о которых я не могу думать сейчас: -)

Редактировать

  • Если написано с осторожностью, вы также можете абстрагировать сервис для одновременной работы с несколькими устройствами
1 голос
/ 10 апреля 2009

XML-RPC и SOAP предназначены для обмена данными между приложениями.

1 голос
/ 07 апреля 2009

Я не на 100% уверен, что вы имеете в виду. Я предполагаю, что вы хотите вызвать приложение на C # из скрипта php. Если это так, возможно, это поможет:

function execute($command, $stdin) {
    $pipes = array();
    $process = proc_open($command, array(array('pipe', 'r'), array('pipe', 'w'), array('pipe', 'w')), $pipes);
    if ($stdin) fwrite($pipes[0], $stdin);
    fclose($pipes[0]);
    $stdout = '';
    while(!feof($pipes[1])) $stdout .= fgets($pipes[1], 1024);
    fclose($pipes[1]);
    $stderr = '';
    while(!feof($pipes[2])) $stderr .= fgets($pipes[2], 1024);
    fclose($pipes[2]);
    $return_value = proc_close($process);
    return array($stdout, $stderr, $return_value);
}

Где $ command - это путь и имя файла вашего приложения на c # (плюс любые параметры командной строки), а при необходимости $ stdin - это стандартный ввод для вашего приложения c #.

Если ваше приложение C # прослушивает определенный порт (скажем, 8888) для запросов, возможно, вы ищете:

$handle = fopen("http://localhost:8888/someurl?someparam=somevalue", "r");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...