Upload
bernard-lepretre
View
107
Download
2
Embed Size (px)
Citation preview
Symétrique de l’ Interopérabilité PHP .NET
Grégory Renard - Alias Rédo Directeur Développement Wygwam sarl - http://www.wygwam.com Auteur de nombreux articles .NET sur www.asp-php.net (Rédo)Microsoft MVP Visual Developer ASP - ASP.NET, Microsoft CodeWise Community Member
La communauté www.asp-php.net
Apprendre en douceur les langages majeurs du Apprendre en douceur les langages majeurs du Web dynamique … ni catégoriquement pour Web dynamique … ni catégoriquement pour
l'un, ni farouchement contre l'autre ! l'un, ni farouchement contre l'autre ! Didier Yver (Fondateur ASP-PHP.NET)Didier Yver (Fondateur ASP-PHP.NET)
La WygTeam
RoadMap
• Interopérabilité ?!?– Contexte– Informations en ligne– Définition & objectifs– Architecture des technologies
• Symétrie de l’interopérabilité PHP .NET– Les couplages– Définition Couplages, Fort & Lâche– De .NET à PHP (.NET esclave, PHP maître)
– De PHP à .NET (PHP esclave, .NET maître)
• Retour d’expérience… l’Interopérabilité au quotidien
• Solutions exotiques émergeantes
• Références & Liens
• Conclusion
Interopérabilité ?!?
Contexte
– Élargissement des systèmes d’informations de l’entreprise et diminution de sa maîtrise (partenariats, acquisitions, …)
– Élargissement des systèmes d’informations au-delà des limites de l’entreprise (Extranets collaboratifs, diffusion de l’information en temps réel, …)
– Multiplication des technologies du marché (Hétérogénéité)
– …
Interopérabilité ?!?
Informations en ligneGoogle : « définition interopérabilité »
– Capacité qu'ont deux systèmes de se comprendre l'un l'autre et de fonctionner en synergie. Contraire : incompatibilité.(www.tout-savoir.net)
– L'interopérabilité est la capacité qu'ont deux systèmes de se comprendre l'un l'autre et de fonctionner en synergie. L'interopérabilité rassemble des moyens logiciels et matériels. (www.laboratoire-microsoft.org)
– Aptitude de deux ou plusieurs systèmes (logiciels ou matériels) à fonctionner ensemble en utilisant des standards communs. (www.journaldunet.com)
Interopérabilité ?!?
• Définition
L’interopérabilité consiste à partager et utiliser conjointement des fonctionnalités d’applications de technologies différentes.
• Objectifs
– Communiquer le plus simplement possible en éliminant la complexité et la diversité des technologies.
– « Exploiter le meilleur des deux technologies »– …
Architecture des technologies
.NET with ASP.NETPHP pagesrunning onmost majorweb servers
PresentationPresentation
Business Business LogicLogic
DataDataMySQL
PHP andApache
CLRC#, VB.NET, …AssemblyADO.NET.Can still use COM+Components.
MySQL common, but support for most databases
PHP PlatformPHP Platform
SQL Server 2000
Stored ProceduresOpenXML.
Web FormsServer ControlsCode-Behind.
ASP.NETIIS
PHP5 Model Object
Architectures des technologies
.NET.NETPHP PlatformPHP Platform
Couplage FortCouplage Fort
Couplage LâcheCouplage Lâche
• Les couplages
Symétrie de l’interopérabilité PHP .NET
• Définition Couplages, Fort & Lâche
– Couplage : « Qualifie la manière dont deux ou plusieurs systèmes interagissent »
– Couplage Fort (tightly coupled) • Indique que les systèmes sont dépendant les uns des autres. • Comme le fonctionnement d'un serveur de données est intimement
lié au processeur central auquel il est associé.
– Couplage Lâche (loosely coupled) • Indique que les systèmes sont reliés par un réseau de
communication mais qu'ils poursuivent leur propre logique de fonctionnement.
• Ex : des PC reliés par un réseau local.
Source : http://www.journaldunet.com/encyclopedie
Symétrie de l’interopérabilité PHP .NET
Maître
EsclavePHP .NET
.NET
• Couplage fort– Extension COM - DCOM– Extension .NET – PHP5 - Mono– PHP#
• Couplage lâche– XML-RPC ou REST–Services Web (ex: NuSOAP)
/
PHP /
•Couplage fort– Mono 1.0– PHP#
•Couplage lâche– XML-HTTP– Services Web
Symétrie de l’interopérabilité PHP .NET
Maître
EsclavePHP .NET
.NET
• Couplage fort– Extension COM - DCOM– Extension .NET – PHP5 - Mono– PHP#
• Couplage lâche– XML-RPC ou REST–Services Web (ex: NuSOAP)
/
PHP /
•Couplage fort– Mono 1.0– PHP#
•Couplage lâche– XML-HTTP– Services Web
De .NET à PHP (.NET esclave, PHP maître)
• Couplage fort– Extension COM - DCOM
• Définition : Component Object Model - c'est une couche orientée objet (et services associés) au dessus de DCE RPC (un standard libre) qui défini une convention de nommage commune qui permet à un code écrit en n'importe quel langage de communiquer avec du code écrit dans un autre langage, sous peu que ces deux langages soient compatibles avec COM (ex : utiliser
Ms Word)
• PHP4 : disponibles pour les versions Windows de PHP
• PHP5 : nouvelles fonctionnalités – Accédez aux tableaux multi-dimensionnels ou aux propriétés COM qui requièrent plusieurs paramètres comme si vous accédiez à un tableau
– Bouclez sur les SafeArrays ("vrais" tableaux) en utilisant la structure de contrôle
• Sources
– http://www.php.net/manual/fr/ref.com.php
De .NET à PHP (.NET esclave, PHP maître)
• Couplage fort– Extension .NET – PHP5 - Mono 1.0
• Définition : La classe DOTNET sous PHP5 vous autorise d'instancier une classe depuis un ensemble .NET et d'appeler ces propriétés ainsi que d'accéder à ces propriétés. Sous OS Windows & Linux – Mono 1.0
• $obj = new DOTNET("assembly", "classname") • PHP5 : module EXPERIMENTAL, le support .NET requiert PHP 5 et
l'exécutable .NET • Sources
– http://www.php.net/manual/fr/ref.com.php– http://www.zend.com/php5/articles/php5-dotnet.php
– http://www.lephpfacile.com/manuel_php/ref.com.php– http://www.lephpfacile.com/manuel_php/class.dotnet.php
De .NET à PHP (.NET esclave, PHP maître)
• Couplage fort– PHP# (Prototype)
• Définition : Compilateur IL (Intermediate Language) PHP
• PHP # compilateur• « mono.PHP.Variable.Object »• … PHP again uses the classic Bison Parser, as the Zend engine is
all in C, so this combination is fast and suitable. In Mono, a Tool called Jay is used, this is a C program that can generate Java or C# code, (obviously in Mono it's C#)…
• Sources– http://www.akbkhome.com/wiki.php/Projects/PHP_Sharp
De .NET à PHP (.NET esclave, PHP maître)
• Couplage lâche– XML-RPC ou REST
• Définition : Protocole permettant d'invoquer un objet distant en fournissant les paramètres nécessaires à l'appel dans un message au format XML et en utilisant le moyen de communication HTTP.La réponse est également renvoyée dans un format XML.
• REST : Representational State Transfer (… art Éric van der Vlist, ZDNet)
• PHP4 : depuis la version 4.1.0, non activée par défaut
• PHP5 : module est EXPERIMENTAL
• Sources
– http://www.php.net/manual/fr/ref.xmlrpc.php
– http://www.xmlrpc.com/
De .NET à PHP (.NET esclave, PHP maître)
• Couplage lâche– Services Web (ex : NuSOAP)
• Définition : Application web pouvant interagir dynamiquement avec d'autres programmes en utilisant des protocoles d'échanges basé
sur XML comme SOAP, XML-RPC ou XMLP.
• Sources
– http://dietrich.ganx4.com/nusoap/index.php
– http://developpeur.journaldunet.com/tutoriel/php/030321php_serviceweb1.shtml
– http://www.phpbuilder.com/columns/kramberger20031226.php3?page=1
Source : http://www.journaldunet.com/encyclopedie
Symétrie de l’interopérabilité PHP .NET
Maître
EsclavePHP .NET
.NET
• Couplage fort– Extension COM - DCOM– Extension .NET – PHP5 - Mono– PHP#
• Couplage lâche– XML-RPC ou REST–Services Web (ex: NuSOAP)
/
PHP /
•Couplage fort– Mono 1.0– PHP#
•Couplage lâche– XML-HTTP– Services Web
De PHP à .NET (PHP esclave, .NET maître)
• Couplage fort– Mono 1.0 - NET pour Unix et Linux
• Définition : Mono est un projet qui a pour but de développer un framework .NET alternatif complet, disponible pour les plate-formes Linux et Windows (Mac et Bsd par extension). Il a été lancé par l'équipe Ximian
• Lancé le 9 juillet 2001 et géré par Miguel de Icaza, vice-président du développement chez Novell, qui a créé Mono (et co-fondé Ximian).
• Mono 2.0 inclura un support natif des WinForms et du Visual Basic.Net ainsi qu’une mise à jour des API .Net
• Une application .Net créée sous Linux ou Windows tournera indifféremment sur l’un ou l’autre OS
• Sources– http://www.go-mono.org – http://www.gotmono.com
De PHP à .NET (PHP esclave, .NET maître)
• Couplage fort– PHP# (Prototype)
• Définition : Compilateur IL (Intermediate Language) PHP
• PHP # compilateur• « mono.PHP.Variable.Object »• … PHP again uses the classic Bison Parser, as the Zend engine is
all in C, so this combination is fast and suitable. In Mono, a Tool called Jay is used, this is a C program that can generate Java or C# code, (obviously in Mono it's C#)…
• Sources– http://www.akbkhome.com/wiki.php/Projects/PHP_Sharp
De PHP à .NET (PHP esclave, .NET maître)
• Couplage lâche– XML-HTTP
• Définition : Protocole permettant d'invoquer un objet distant en fournissant les paramètres nécessaires à l'appel dans un message au format XML et en utilisant le moyen de communication HTTP.La réponse est également renvoyée dans un format XML.
• .NET– System.Net.HttpWebRequest– System.Net.HttpWebResponse
• Sources– http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/cpref/html/
frlrfSystemNet.asp – http://www.dotnet247.com/247reference/msgs/25/125779.aspx – http://www.xmlforasp.net
De PHP à .NET (PHP esclave, .NET maître)
• Couplage lâche– Services Web
• Définition : Application web pouvant interagir dynamiquement avec d'autres programmes en utilisant des protocoles d'échanges basé sur
XML comme SOAP, XML-RPC ou XMLP.
• .NET– System.Web.Services
• Sources– http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/cpref/html/
frlrfsystemwebservicesprotocols.asp – http://www.microsoft.com/france/msdn/technos/webservices.mspx – http://www.xmlforasp.net/CodeBank.aspx?codeType=webservices
Source : http://www.journaldunet.com/encyclopedie
Interopérabilité au quotidien
• L’interopérabilité (lâche) au quotidien entre les communautés www.asp-php.net et www.codes-sources.com – Interopérabilité lâche par flux RSS.
• Simple à mettre en place• Rapide, Efficace &Fiable• Peu de contraintes techniques
• Blogs ;)
– http://blogs.developpeur.org/redo– http://blogs.developpeur.org/redo/Rss.aspx – http://sig.levillage.org/index.php?p=543
Solutions exotiques émergeantes
• Add-In J2EE VS.NET MainSoft– convertir une simple application ASP.NET en un servlet Java debuggable le tout devant
ainsi être déployé sur une plateforme Tomcat – http://blogs.developpeur.org/redo/archive/2004/07/01/1945.aspx
• Add-In VS.PHP (Intégration à VS.NET) & VS.PHP Debugger– Contrary to other PHP IDE products, VS.Php leverages the familiar interface of
Microsoft Visual Studio.Net allowing PHP developers leverage all the features Visual Studio.Net provides. No need to learn a new IDE interface or tools.
– http://www.jcxsoftware.com/jcx.corporate6/modules/wfsection/index.php?category=12
– http://www.jcxsoftware.com/jcx.corporate6/modules/wfsection/article.php?articleid=35&PHPSESSID=4eddab2285a1449aeaf8ab89c6d13e44
• Interop par Tiers : MCDBR
Conclusion
• Interopérabilité :
– Évolution constante de PHP• Sur extensions et connecteurs• Sur le support des Web Services
– .NET Interop en mode Natif– Evolution du projet Mono– Simplification de la communication entre systèmes
hétérogènes, élimine les complexités et les diversités technologiques.
« Exploitez le meilleur des deux technologies »
Références & Liens
• PHP5– http://www.php.net/downloads.php
• Manuel PHP4 – PHP5– http://www.php.net/manual/fr/index.php – http://www.php.net/download-docs.php
• Install de php5 sous IIS– http://www.asp-php.net/ressources/bouts_de_code.php?codid=60
• Projet Mono– http://www.go-mono.org
• Faire un agrégateur en PHP 5 – http://www.asp-php.net/scripts/asp-php/php5-agregateur_rss.php?page=2
• Communautés– http://www.phpfrance.com– http://www.asp-php.net– http://www.codes-sources.com