Réflexions sur l’utilisation de PHP dans le monde Microsoft et sur ses intérêts

Ces derniers temps, il m’arrive souvent d’avoir la chance de pouvoir discuter avec des développeurs de la communauté PHP. En comparant nos 2 univers, on peut voir clairement qu’il y a de bonnes synergies à mettre en place et que les 2 mondes ont beaucoup à apprendre l’un de l’autre en les faisant communiquer.

Il y a plusieurs scénarios intéressants à mon sens. Je vous propose de les revoir ensemble. N’ayant pas encore énormément de recul sur le monde merveilleux du développement PHP, je suis ouvert à toutes les formes de commentaires et de critiques. Dès l’instant qu’elles sont constructives bien sûr!

1 – Vous êtes développeur sur la plateforme LAMP et vous êtes très heureux ainsi. Utilisez nos services grâce aux standards!

3500455163Vous ne souhaitez pas toucher à la moindre lettre de votre éclairage. Genre, la touche W de votre clavier ne vous inspire pas du tout. :) Malgré tout, certains services peuvent être susceptibles de vous intéresser. Prenons par exemple les services Live proposant la possibilité d’authentifier des utilisateurs sur vos sites Web avec leur Live ID. Cela peut clairement avoir un intérêt vu les plus de 600 millions de Live ID présents sur Internet à l’heure actuelle!

Pour cela, le Live Framework pourra vous aider à mettre en place cette intégration. Basé sur les standards du Web, cela ne devrait pas vous poser la moindre difficulté. Vous pourrez alors ensuite accéder aux contacts, accéder à un espace Live Mesh, utiliser Virtual Earth, etc.

Si le sujet vous intéresse, je vous conseille de regarder ces 2 WebCasts (en Anglais):

- PDC09 : “Live Services: Programming Live Services Using Non-Microsoft Technologies” : https://channel9.msdn.com/pdc2008/BB51/ . Vous trouverez également un helper PHP pour le Live Framework ici

- MIX09 : “Running PHP on Microsoft Servers and Services” : https://videos.visitmix.com/MIX09/T21F vers la 43ème minute. Vous verrez comment interagir avec les services Live depuis une application PHP (avec WordPress en l’occurrence).

Les standards sont également intensivement utilisés dans notre plateforme Azure. Vous pourrez ainsi facilement faire appel à des services exposés sous forme de WebServices depuis vos applications PHP. Si ce sujet spécifique vous intéresse, je vous conseille alors cette session d’1h en Français : “Scénarios d'interopérabilité de la plateforme Azure en Java, Ruby et Cobol” . Les principes exposés étant les mêmes pour un accès depuis PHP.

2 – Vous souhaitez développer sur Windows mais déployer sous Linux

Pour quelles raisons? Parce vous trouvez plus agréable une machine sous Windows pour travailler et développer. Pourquoi pas, ce n’est pas moi qui vous dirais le contraire ! :)3501270832

Dans ces cas là, je vous invite alors à regarder la solution WAMP suivante : https://www.wampserver.com/ et à lire le blog suivant très intéressant : https://blog.wampserver.com/ animé par Romain BOURDON.

Voici un bref descriptif issu du site: “WampServer est une plate-forme de développement Web sous Windows. Il vous permet de développer des applications Web dynamiques à l'aide du serveur Apache2, du langage de scripts PHP et d'une base de données MySQL. Il possède également PHPMyAdmin et SQLite Manager pour gérer plus facilement vos bases de données.

3 – Vous souhaitez porter ou écrire votre application PHP de Linux/Apache vers Windows/IIS (avec FastCGI).

J’ai en effet constaté que les développeurs LAMP développent souvent sous Windows (avec WAMP donc) et publient ensuite sous Linux. Il serait donc peut-être plus intéressant d’avoir un ensemble cohérent avec une station de développement sous Windows et le serveur Web également sous Windows. De plus, il arrive également que certaines demandes clientes imposent l’utilisation de serveur Windows pour le déploiement des solutions PHP.

Par ailleurs, cela vous permet alors d’héberger des applications ASP.NET et PHP sur le même serveur grâce à l’utilisation du couple Windows/IIS. Simplification des problématiques d’administration donc.

A noter: qui à passer sous Windows, il me semble qu’il faut mieux passer sous IIS/FastCGI. Les raisons sont assez simples: Apache vient du monde Unix et lève par défaut un processus par demande (même si cela peut-être changé depuis la version 2 avec le module mpm_winnt_module). Pour des choix d’architecture, Windows est nettement moins à l’aise avec la création de nombreux processus par rapport à une base Unix. Mieux vaut donc partir sur le serveur Web IIS (Internet Information Server) prévu pour tirer le maximum de l’architecture de Windows et présent par défaut. D’autre part, sauf erreur de ma part, WAMP n’est pas actuellement supporté en production.

Pour vous aider à développer du PHP sur Windows, il est important de noter que nous avons sorti une série de kit de formation autour de ce sujet téléchargeable ici : “PHP on Windows Training Kit (April 2009) ” : https://go.microsoft.com/?linkid=9656081

A l’intérieur de ce kit PHP, voici les ateliers susceptibles de vous intéresser:

Utilisation des fonctionnalités de contrôle d’accès d’IIS 7.0 pour PHP

3501271108

Cet exercice vous introduit l’utilisation des fonctionnalités de contrôle d’accès d’IIS 7.0. Cela vous permet alors de créer une gestion des accès flexible et facile à administrer. Ainsi, contrairement au passé avec CGI, IIS 7.0 et FastCGI permettent à PHP d’avoir un modèle d’exécution simplifiant l’administration de la sécurité. Dans ce nouveau modèle, les scripts PHP peuvent être exécutés en utilisant l’identité de “l’application pool” à laquelle l’application est rattachée.

Utilisation des fonctionnalités média d’IIS 7.0 au sein d’une application PHP

3500455587

Vous verrez ici l’utilisation des fonctionnalités Media d’IIS 7.0. Cela vous permettra de construire rapidement une application PHP pour proposer une solution Web de diffusion vidéo en utilisant les fonctionnalités proposées par défaut d’IIS 7.0 et de réduire les coûts de diffusion média en contrôlant la bande passante.

Vous verrez également comment embarquer un player de vidéos en Silverlight 2 dans votre page PHP

Comment débugger du PHP sur IIS

3500455659

Cette partie explique brièvement les problèmes classiques que l’on rencontre lorsque l’on installe PHP sur IIS 7.0. Vous y trouverez ainsi une illustration des techniques de “troubleshooting” (débogage) pouvant être mise en œuvre pour diagnostiquer et résoudre des problèmes PHP sous IIS 7.0.

Une fois maitrisées, ces techniques peuvent réduire de manière significative le temps passé à débugger son application pendant le cycle de développement ainsi que lors de la mise en production.

Comment migrer une application PHP vers IIS 7.0

3500455737

Vous verrez ici la stratégie typique de migration d’une application PHP vers IIS 7.0 Vous verrez ainsi que le support de PHP d’IIS 7.0 est très compatible avec l’existant et dans la plupart des cas ne requiert pas de modifications spécifiques pour passer d’Apache vers IIS 7.0/FastCGI.

Par ailleurs, un des points bloquants historique et connu a toujours été le module Apache de réécriture d’URLs mod_rewrite. IIS 7.0 propose désormais le module “URL Rewrite” permettant de formater les URLs pour une meilleure indexation par les moteurs de recherches par exemple.

Pour terminer sur cette partie, un des bénéfices induit par le travail de migration d’une application PHP de Linux/Apache vers Windows/IIS/FastCGI est l’ouverture vers le Cloud. En effet, vous vous ouvrez alors facilement le portage vers notre plateforme d’hébergement et d’exécution dans le Cloud : Windows Azure. Si ce sujet vous intéresse, mon collègue Pierre Lagarde vous indique la marche à suivre pour publier une application PHP dans Windows Azure à travers ces 2 billets:

- “Support de Fast-CGI dans l’hébergement Windows Azure” : https://blogs.msdn.com/pierlag/archive/2009/03/20/support-de-fast-cgi-dans-l-h-bergement-windows-azure.aspx

- “Solution Azure Php (Exemple)” : https://blogs.msdn.com/pierlag/archive/2009/03/30/solution-azure-kphp-exemple.aspx

La session indiquée plus haut du MIX09 : “Running PHP on Microsoft Servers and Services” vous intéressera alors également.

4 – Vous souhaitez bénéficier de services dans vos applications PHP non disponibles dans MySQL

Rien ne vous empêche dès lors de faire appel à SQL Server 2008 depuis PHP.

A noter: notre équivalent gratuit à MySQL se nomme SQL Server 2008 Express. Vous pouvez donc le télécharger gratuitement ici : Sql Express 2008 . Ce dernier bénéfice bien par exemple des nouveaux types spatiaux même dans sa version gratuite.

Dans le kit présenté plus haut, voici la série qui pourra vous intéresser :

Démos

Démo avec les nouveaux types pour la géo-localisation

3500455823

Cette démo a pour but de vous présenter les capacités spatiales de SQL Server 2008 intégrée dans PHP.

Cette application se repose ainsi sur SQL Server pour le stockage et les calculs sur les types de données géo-spatiaux pour ensuite passer la main à Virtual Earth afin de rendre les figures sur une carte.

3501270968

Démo de rapports avec SQL Server Reporting Services

3501271554

Cette démo a pour but de vous montrer les fonctionnalités de “reporting” de SQL Server 2008 au sein d’une application PHP. Cette application s’appuie ainsi sur SQL Server Reporting Services (le service de génération de rapports intégré à SQL Server) pour générer et exposer des rapports personnalisés. 

Ateliers

Introduction à l’utilisation de SQL Server depuis PHP 

3500455999 A travers cet atelier, vous apprendrez à effectuer les opérations classiques d’accès aux données (Création, Lecture, Mise à jour, Suppression) vers SQL Server depuis des scripts PHP tournant sous IIS 7. Vous verrez ainsi les étapes à suivre pour vous connecter à la base de données et comment effectuer ces opérations au sein d’une transaction. 

Utilisation des fonctionnalités de recherche de texte libre et des BLOBs depuis PHP grâce à SQL Server  

3501271702

A travers cet atelier, vous apprendrez à tirer partie des fonctionnalités de recherches de texte libre (Full-Text Search) et gestion de “Filestream” (flux de données) depuis votre application Web PHP.

Vous utiliserez ainsi des scripts PHP pour effectuer des recherches plein texte sur des documents stockés sous la forme de BLOBs (binary large objects data).

Les requêtes de type texte libre effectuent des recherches linguistiques sur des données de type texte en travaillant sur des mots et des phrases à travers des règles spécifiques à chaque langage comme le Français ou le Japonais par exemple. Pour chacun des langages supportés, SQL Server fournit des composants linguistiques spécifiques. Vous pouvez même éventuellement rechercher des synonymes.

Ressources complémentaires 

Comment accéder aux bases de données SQL Server depuis PHP

3500456221

Le driver Microsoft SQL Server pour PHP permet aux développeurs PHP d’accéder aux données d’une base SQL Server 2005 ou SQL Server 2008. Ce driver inclut le support des méthodes d’authentification Windows et SQL, les transactions, l’accès aux métadonnées, la gestion d’erreur, le pooling de connections, etc. Cet article explique comment charger et configurer le driver et présente comment tirer partie de plusieurs des fonctionnalités mentionnées avant. Cet article peut être consulté en ligne directement ici : https://msdn.microsoft.com/en-us/library/cc793139(SQL.90).aspx

5 – Notre outil de développement Visual Studio 2008 grâce à VS.PHP

dd647545.php-atelier-01(fr-fr,MSDN.10)[1] S’il y a bien une chose qui m’ait marqué ces derniers temps en côtoyant les développeurs PHP, c’est la multitude d’outils utilisés rarement bien intégrés les uns aux autres. Par ailleurs, certaines fonctions qui me paraissent aujourd’hui vitales ne sont pas toujours de la partie. C’est le cas de la complétion automatique nommée IntelliSense chez Microsoft ou alors également du debugging facile de son application.

De même, l’intégration continue, la gestion de tests unitaires ou de tests de montée en charge d’application Web sont des fonctionnalités intégrées de facto dans les versions Team de Visual Studio par exemple. Ce n’est pas toujours évident de mettre tout cela en place avec les outils gratuits pour gérer du PHP. Le couplage de Visual Studio avec TFS (Team Foundation Server) permet une gestion avancée du code source. On retrouve aussi des choses comme la génération de build basée sur des critères de qualité (build si uniquement couverture >80% des tests par exemple).

Pour être honnête, s’il y a bien quelque chose sur lequel on me titille jamais à la concurrence, c’est bien notre outil de développement Visual Studio.

Note: A ma grande surprise, j’ai actuellement rencontré peu de personnes développant avec Eclipse pour faire du PHP. Si j’ai rencontré le mauvais échantillon, n’hésitez pas à venir vers moi me vanter les mérites d’Eclipse pour faire du PHP! A mon sens, c’est en effet l’outil de développement qui fait clairement face à Visual Studio dans ma tête.

Alors je sais: chez Microsoft nos outils de développement ne sont pas gratuits (encore que… voir la gamme gratuite Express). Mais cela peut valoir le coup je pense de se poser la question: ne vaut-il mieux parfois investir dans ces outils plutôt que de galérer à mettre en place une 12aine d’outils gratuits finalement plus complexes à maitriser ? C’est un vaste débat que l’on ne pourra pas couvrir en quelques lignes ici…

dd647546.clip_image002(fr-fr,MSDN.10)[1]Malgré tout, vous devriez jeter un coup d’œil au plug-in VS.PHP de la société JCX Software permettant le support de PHP directement au sein de Visual Studio. A vous le support abouti de l’IntelliSense, des points d’arrêt pour le debugging facile et de la gestion du source code par TFS !

Pour en savoir davantage, je vous conseille 2 pointeurs:

1 – la vidéo de notre plénière des TechDays 2009 (Plénière Jour 1) où mon collègue Pierre Lagarde vous faisait une démonstration du produit en action. C’est l’une des 1ères démonstrations.

2 – le coach MSDN VS.PHP : https://msdn.microsoft.com/fr-fr/vstudio/msdn.coach.vsphp.aspx où retrouverez un atelier accompagné d’une vidéo pour apprendre à maitriser l’ensemble.

Une offre commerciale sur VS.PHP en cours

Si cet outil vous intéresse, sachez qu’il existe actuellement une offre commerciale en cours. Voici comment cela se présente. La société STR propose la vente de ce plug-in en France: https://www.str.fr/

Le produit VS.PHP coute environ 100€ mais son achat ouvre le droit à la “competitive upgrade” vous permettant d’acheter la référence suivante:

Visual Studio Professional / Visual Studio Pro 2008 Win32 French UPG DVD / Developer Tools / C5E-00253
Prix constaté : ~630€

Au lieu de cette référence classique:

Visual Studio Professional /  Visual Studio Pro 2008 Win32 French DVD / Developer Tools / C5E-00251
Prix constaté : ~920€

Soit VS+PHP à environ 730€ au lieu de VS nu à environ 920€ (attention, ce sont des prix en boite. Les prix en volume sont clairement inférieurs). Par ailleurs, ce sont des prix constatés sans aucun engagement de ma part. Contactez directement le revendeur pour avoir plus de détails si besoin.

Conclusion

Je pense que vous aurez compris que Microsoft ne prends pas à la légère la communauté PHP et l’immense expertise des développeurs PHP sur le marché. D’après ma brève expérience, ils existent de nombreux profiles différents de développeurs PHP, utilisant des framework différents, des outils différents, des méthodologies différentes avec des niveaux techniques différents. On retrouve en effet des développeurs “formés sur le tas” ou des passionnés faisant intensivement usage du copier/coller de code aux développeurs chevronnés adeptes du pattern MVC, de l’intégration continue, mettant en place de vrais projets industriels. On partage donc à ce niveau là une histoire commune! Dans la communauté du développement Microsoft, on passe également facilement du développeur de macros VBA formé sur le tas aux développeurs Web ASP.NET MVC adeptes du TDD (Test Driven Development), j’en passe et des meilleurs. Bref, il existe une mixité de profiles et de talents dans les 2 communautés. Pourquoi ne pas mixer l’ensemble un peu plus? :-)

Cependant, il serait mal venu de tenter de résumer l’intérêt que pourrait avoir le monde PHP à travailler avec des technologies Microsoft à travers ce simple billet. Il y a par exemple d’autres scénarios non encore traités qui sont également très intéressants comme l’utilisation de Silverlight 3 comme couche de présentation frontale à votre site Web PHP. J’espère que nous aurons l’occasion d’en rediscuter prochainement.

J’espère cependant avoir abordé certains sujets ayant attisé votre curiosité. J’attends maintenant vos retours!

A bientôt.

David