2010-08-03 5 views
0

J'ai une application C# qui définit un fournisseur d'appartenance utilisé dans une application Asp.Net MVC. Et j'ai un serveur apache httpd qui fait l'authentification avec mod_wsgi.Utilisation de C# dans un script Apache python

L'objectif est de partager le fournisseur d'appartenance entre les deux, de sorte que les informations d'authentification soient les mêmes.

Comment puis-je obtenir ce comportement?

Répondre

1

Trivial.

  1. Apache sert le contenu statique.

  2. Certains URI seront acheminés vers mod_wsgi vers Python. Python exécutera alors (via subprocess) un programme C#, fournissant des arguments de ligne de commande, et lisant la réponse de sortie standard du programme C#.

  3. Python fait tout ce qui est nécessaire pour servir les pages Web.

Cela suppose que votre application C# s'exécute sur la ligne de commande, lit les paramètres de ligne de commande et écrit son résultat dans la sortie standard. C'est une chose facile à construire. Ce n'est peut-être pas ainsi que cela fonctionne aujourd'hui, mais tout programme exécuté à partir de la ligne de commande est trivial à intégrer.

Votre application C#, BTW, peut également être réécrite en Python. Ce n'est pas magique. C'est juste du code. Lisez le code, comprenez le code et traduisez le code. Vous serez beaucoup plus heureux de remplacer le C# par quelque chose de plus simple.

+0

le fournisseur d'appartenance a été implémenté par moi. J'ai besoin de l'utiliser dans une application asp.net. ce que je veux réaliser, c'est que les informations d'authentification soient les mêmes dans les applications apache et asp.net. – fampinheiro

+0

@fampinheiro: "le fournisseur d'appartenances a été implémenté par moi" Ensuite, il sera très facile de le réécrire en Python. Tant que les ** données sous-jacentes ** sont identiques entre les fournisseurs C# et Python, les applications ASP.Net et Python vont correspondre. Le code ne doit pas nécessairement être le même, seulement les données doivent être d'accord. –

0

Plusieurs façons:

  1. interface COM (si Windows OS), bien que ce soit un peu lent (faire une bibliothèque COM compatible, inscrivez-vous avec regasm, utiliser).
  2. L'utilisation Gearman (pas sûr plus rapide que COM et si elle a Python et C# soutien, l'enquête est à vous) http://gearman.org/
  3. En utilisant la méthode décrite par S. Lott
  4. utilisant SOAP (lent, grand)
+0

oui, je suis dans les fenêtres, mais la connaissance COM == 0. Gearmen doivent se pencher sur elle. SOAP est trop de travail pour quelque chose d'aussi simple. – fampinheiro

+0

Vous n'avez pas besoin d'avoir des connaissances COM. Vous faites simplement une interface pour votre classe, essayez de ne pas utiliser les types de données complexes, tenez-vous en int, string et float, assignez des GUID pour vos classes et méthodes, enregistrez-le avec regasm et ensuite, utilisez la syntaxe Python avec un objet initialisé avec COM . N'a pas travaillé avec Python, mais si PHP autorise l'instanciation des classes COM, pourquoi Python ne pourrait-il pas le faire? Internet est plein de tutoriels simples comment enregistrer les classes COM en .NET. Google, vos peurs vont disparaître. – AlexanderMP

Questions connexes