2009-04-07 11 views
0

J'ai donc un serveur Web dans lequel l'utilisateur peut contrôler à distance une carte électronique externe qui, à cause de certaines conditions, me force à mettre un programme de bureau utilisant C# comme intermédiaire.Serveur Web PHP se connecter au programme C# sur le même serveur - Qu'est-ce que je recherche?

Quel est le mot clé magique que je cherche? Au début je pensais au socket mais chaque recherche de socket implique un client-serveur sur TCP ... c'est la même machine donc en théorie je peux juste mettre une adresse de loopback et procéder normalement. Mais est-ce un moyen exagéré ou le seul moyen?

Merci d'avance.

edit: Mon programme C# est fondamentalement un démon qui attend des commandes du script PHP. Donc, je peux accéder à distance à ce site Web et instruire cette application C#.

+0

Le démon C# écoute-t-il sur un port pour les demandes? –

Répondre

2

Je suggère l'architecture client/serveur utilisant le protocole TCP/IP (ou même UDP) (ou un autre protocole de messagerie MS) afin de parler à votre programme C#. Ce que vous faites est d'écrire un pilote de périphérique pour un matériel spécialisé. En rendant client/serveur, vous pouvez:

  • Maj le code dans un service Windows qui peut fonctionner sur toute machine de votre serveur Web peut se connecter à, non seulement la machine locale.
  • Facilement le serveur gère plusieurs connexions, de sorte que les clients autres que votre serveur Web puissent accéder au matériel et la contention d'accès est gérée de manière rationnelle. Pensez à la console de test pour le débogage/test du matériel.
  • Ajoutez une ligne sympa à votre CV sur l'écriture de systèmes client/serveur et de services Windows!
  • probablement d'autres avantages que je ne peux pas penser maintenant :-)

Modifier

  • Si écrit avec soin, vous pouvez également le service abstrait pour gérer plusieurs appareils en même temps
1

Je ne suis pas sûr à 100% de ce que vous voulez dire. Je suppose que vous voulez appeler une application C# à partir d'un script PHP. Si oui, peut-être cela vous aidera:

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); 
} 

Où commande $ est le chemin et le nom de votre C# app (plus une ligne de commande params) fichier et si nécessaire stdin $ est, bien, l'entrée standard à votre c application # .

Si votre application C# est à l'écoute sur un port particulier (permet de dire 8888) pour les demandes, peut-être vous cherchez:

$handle = fopen("http://localhost:8888/someurl?someparam=somevalue", "r"); 
+0

Notez que cela fait référence à l'aide d'une application console, ce qui pourrait bien être une meilleure méthode. –

+0

Non, je veux passer un message à l'application C# qui devrait toujours être en cours d'exécution. Lisez ma modification. – syaz

1

XML-RPC et SOAP sont conçus pour la communication d'application à application.

Questions connexes