Maison > Article > développement back-end > La connexion entre Java et PHP
Vérifier la combinaison de deux langages (JAVA/PHP) qui sont rois dans leurs domaines respectifs, des langages différents et des mécanismes différents , PHP s'en charge pour la couche WEB, et Java en est responsable. Les couches métier et logique de données sont vraiment une combinaison en or (Intégration Java + PHP = le nouveau chouchou hybride Elles font jouer pleinement leur potentiel). avantages respectifs et conviennent au développement de programmes d’entreprise B/S.
1. Problèmes techniques
Deux environnements différents, la combinaison linguistique de différents mécanismes, la première chose à résoudre est de savoir comment communiquer ? Deuxièmement, comment gérer le contenu de la communication ? Enfin, l'intégration des deux environnements de développement et de déploiement est-elle ?
1.1Comparaison de deux langues
Php : Intuitif, rapide, simple, facile à apprendre, très efficace pour développer des pages Web dynamiques et riche en culture populaire. C'est un héros civil dans le monde des langues et se concentre sur les résultats.
Java : Puissant et complexe, doté de nombreuses fonctions haut de gamme, et populaire auprès d'entreprises telles que IMB et Oracle, il est le noble prince du monde des langues.
1.2Problème de communication
1.2.1File d'attente de messages
Observé au niveau du système d'exploitation : PHP et Java sont des processus différents exécutés dans le système . La communication entre eux appartient à la technologie de communication inter-processus (IPC) :
<.>
Dans l'environnement Unix traditionnel, les technologies IPC incluent : les pipelines, les files d'attente de messages, la mémoire partagée, les sémaphores, etc. Cependant, dans le même système, la communication IPC a des performances et une utilisation des ressources considérables par rapport à la communication socket basée sur TCP. Avantages. Sous Unix/Linux, PHP fournit essentiellement toutes les interfaces d'accès IPC, car PHP peut être considéré comme un shell avec le langage C comme noyau, et IPC fait partie intégrante du noyau du système, fournissant un groupe C externe. interface de fonction, afin que PHP puisse utiliser la technologie IPC de manière très fluide. Afin de poursuivre les fonctionnalités de la plate-forme (la technologie IPC de Windows est différente de celle d'Unix), Java ne fournit pas d'accès IPC au niveau du système. Cela reflète également les caractéristiques culturelles de Java : les performances peuvent être sacrifiées dans la recherche de l'uniformité.1.2.2 Prise
La technologie de file d'attente de messages ne peut être appliquée qu'aux systèmes Unix/Linux, tandis que SOCKET est basé sur le mécanisme de communication TCP/IP, s'adaptant ainsi à diverses plateformes.
Comme le montre la figure ci-dessus, PHP assume les responsabilités de la couche HTTP, tandis que Java assume les responsabilités de la couche métier. Ils communiquent entre eux via System V Message Queue (file d'attente de messages, un type de communication inter-processus). IPC). Java nécessite le support de JNI .
L'utilisation des files d'attente de messages présente les avantages suivants :
1. 使php和java保持独立性 2. 有极高的传输速度,大于socket 3. 相对于socket方式,Java服务端只向本机提供服务(没有对外侦听端口),相对安全,易于管理。 |
1.3 Problème de contenu de communication
Le problème de communication a été résolu, comment résoudre le contenu de la communication ?
Les types de données définis dans les langages respectifs de PHP et Java Lorsque les deux langages se transmettent des données, comment les types de données sont-ils convertis ?
(1)Xml : XML est en effet une technologie d'encapsulation de données qui possède une plate-forme et peut bien décrire le modèle objet, mais XML Le taux de transmission est lent en raison de sa grande taille, et l'analyse aux deux extrémités de la communication est également gênante.
(2) Sérialisation : L'utilisation d'objets de sérialisation et de désérialisation pour transmettre des données pendant le processus de transmission est un moyen reconnu et raisonnable, et les deux langues sont prises en charge.
2, Java et php Sélection combinée
La technologie d'intégration actuellement connue de PHP et Java sur le Web peut être divisée en SOAP ( Simple Object Access Protocol), Quercus et PHP/Java Bridge Ces technologies permettent à PHP et Java d'utiliser les bibliothèques de chacun lors du développement d'applications Web.
SOAP |
SOAP c'est IBM, Protocole développé par Microsoft et d'autres sociétés et recommandé par le W3C pour mettre en œuvre la technologie des objets distribués. SOAP fournit un ensemble de mécanismes qui utilisent XML pour regrouper les appels de programme, les transferts de paramètres et le retour d'informations. Grâce aux caractéristiques de texte brut de XML, il peut traverser les pare-feu d'entreprise via des canaux de communication tels que HTTP, HTTPS et SMTP. Comparé à CORBA, Java RMI et DCOM, qui sont des protocoles de technologie d'objet distribué qui transmettent des données dans des formats binaires propriétaires, SOAP a la particularité d'être indépendant du langage de programmation, de la plate-forme et du matériel. |
Quercus |
Quercus est un moteur PHP 5 open source qui a déjà une implémentation complète en Java pur. Quercus fonctionne sur des serveurs d'applications Resin et profite des fonctionnalités de Resin telles que l'équilibrage de charge et la mise en cache proxy. |
PHP/Java Bridge |
Les produits open source incluent : Php-java-bridge et LAJP |
2.1 Conditions de sélection
ü Gratuit et open source
ü Simple et facile à utiliser
ü Efficace et stable
2.2 LAJP
2.2.1 Fonctionnalités
Ø Avantages complémentaires : PHP est un langage de script de programmation WEB très populaire. Il est facile à apprendre, facile à utiliser et présente une grande efficacité de développement et de déploiement Il. est très approprié pour la programmation Web ; JAVA Il convient à l'écriture de programmes avec des fonctions et des données commerciales complexes. La combinaison des deux peut tirer pleinement parti de leurs avantages respectifs.
Ø Efficace et stable : La combinaison Apache+PHP peut apporter une excellente stabilité du service WEB, et JAVA peut compléter comme le pooling de connexions, la gestion des transactions, la distribution, High -fonctionnalités finales telles que les modèles d'objet.
Ø Mécanisme de communication innovant : La communication entre PHP et Java utilise deux mécanismes : la file d'attente des messages système et Socket, en tenant compte de l'efficacité de la communication et de la compatibilité des plateformes.
Ø Mécanisme de conversion automatique du type de données : Les données PHP et Java peuvent être mises en correspondance avec précision et converties automatiquement sans que les programmeurs aient besoin d'écrire du code d'analyse.
Ø Facile à utiliser : LAJP est facile à installer et à configurer, et la programmation PHP et JAVA est conforme à leurs habitudes de programmation respectives.
Ø Légère : L'architecture LAJP est très légère. En plus des environnements PHP et Java les plus basiques, elle ne nécessite aucune extension ni composant tiers. .conteneur.
2.2.2 Conversion de type de données
PHP et Java ont chacun leurs propres types de données définis dans le langage lorsque les données PHP sont transférées vers. Java, lorsque les données Java sont transmises à PHP, LAJP les convertit automatiquement et avec précision en interne, et les programmeurs n'ont pas besoin d'effectuer de travail de décodage.
2.2.3 LALP Environnement d'exécution
Mode file d'attente des messages
L'environnement doit répondre au fonctionnement de la file d'attente de messages System V :
Système Systèmes Unix/Linux actuellement courants Sont acceptables Répondre au fonctionnement de php (Apache) et Java, dont la plupart prennent en charge le système par défaut File d'attente de messages V.
php PHP doit communiquer avec le processus Java via la file d'attente des messages. Selon les instructions PHP, PHP. est en 4.3. La file d'attente de messages System V est prise en charge après la version 0.
apache Aucune exigence particulière, il suffit de répondre aux exigences PHP.
java La version java est postérieure à 1.5.
Dans l'environnement Unix/Linux, il est recommandé d'utiliser le mode file d'attente des messages.
mode prise
Système Il n'y a aucune restriction, il est difficile de trouver un système qui ne prend pas en charge TCP/IP.
php Selon les instructions de php, la version php >=4.1.0 prend en charge socket
apache Il n'y a pas d'exigences particulières, il suffit de répondre aux exigences PHP.
java La version java est postérieure à 1.5.
Le système Windows ne peut utiliser que le mode socket
Ces deux modes peuvent être utilisés en même temps pendant le processus de développement. Par exemple, les développeurs utilisent généralement l'environnement Windows et le programme est déployé dans le système Linux. La configuration du mode LAJP n'a rien à voir avec le codage.
2.2.4 Déploiement
2.2.4.1 Architecture distribuée
Dans des scénarios métier importants et critiques, la couche d'interaction utilisateur et la couche métier sont déployées séparément LAJP Ce type d'architecture peut. être utilisé comme ceci :
Java dans le serveur WEB est une couche très "fine", utilisée uniquement pour se connecter aux services EJB suivants.
2.2.4.2 Cluster
Avec l'augmentation des visites des utilisateurs, les services WEB deviennent souvent des goulots d'étranglement dans le système. Voici la référence de l'architecture de LAJP dans le cluster :
2.2.4.3 cluster Web
LAJP utilisant le mode de communication socket , vous pouvez créer une architecture de cluster WEB distribuée simple :
2.2.4.4 Application d'architecture complexe
La flexibilité d'utilisation de LAJP, la conception et la sélection de l'architecture résident davantage dans notre propre réflexion. La référence d'architecture suivante utilise des clusters à la fois dans la couche WEB et dans la couche EJB :
memcache est une technologie de mise en cache d'objets à mémoire distribuée. Il est très pratique de stocker les données de session en PHP pour synchroniser chaque nœud du cluster WEB. reflètent le « professionnalisme » de PHP par rapport à Java dans le domaine WEB.
Cet article présente la relation entre Java et PHP Pour plus de contenu connexe, veuillez faire attention au site Web chinois de php.
Recommandations connexes :
Résumé de l'expérience pratique avec PHP
Contenu associé à la classe de base thinkphp
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!