Pierre Lagarde Christophe Lauer
Pourquoi PHP ? PHP sur Windows PHP et IIS 7 : FastCGI PHP et Microsoft Ajax PHP sur.NET ? Phalanger
Parce quon connait plutôt bien ;) Le récent accord de collaboration technique avec Zend Microsoft Ajax Library 1.0 Utilisable depuis une application web en PHP Fournie sous licence Ms-Pl (Permissive Licence) (Possibilité de Modifier, Redistribuer, utilisation Commerciale, etc…)
Traditionnellement, IIS supporte CGI et ISAPI FastCGI est un protocole standard Contrairement à CGI, réutilisation des processus La Tech Preview supporte IIS5.1, IIS6 et séparément IIS7 FastCGI améliore : Performances : Evite de re-créer un process à chaque nouvelle rêquête Stabilité : Garantit lisolation pour les modules non « thread safe » comme certaines extensions PHP
Accord de collaboration technique Nos deux sociétés cherchent à améliorer les performances et à renforcer la fiabilité et la stabilité de PHP sur Windows Server 2003 et Windows Server « Longhorn » Microsoft travaille à un nouveau module FastCGI Zend mettra en place un laboratoire de tests Un laboratoire de test Windows pour effectuer des contrôles de qualité afin de maintenir, au niveau le plus haut, les performances de PHP sur Windows Server
Installation de base … Avec FastCGI (Technical Preview) … En activant le Cache … ~60 Rps ~120 Rps ~6000 Rps
« Depuis notre travail préliminaire avec Microsoft, nous avons déjà observé un gain de performances supérieur à 100 %, sur certaines applications PHP sexécutant sur Windows Server » -- Andy Gutmans, co-fondateur et CTO Zend -- Andy Gutmans, co-fondateur et CTO Zend Le communiqué de presse :Le communiqué de presse : _and_zend_technologies_announce_technical_collaboration_to_improve_int eroperability_of_php_on_the_windows_server_platform _and_zend_technologies_announce_technical_collaboration_to_improve_int eroperability_of_php_on_the_windows_server_platform
Framework JavaScript proche de la programmation.NET 100% JavaScript compatible IE / Safari / FireFox / Mozila / Opera Inclut des libraires de programmation riche : Traitement de chaînes, Enumérés, Debug Une couche de contrôle, de Drag and Drop, danimations et autres … Tout sous la forme de fichiers.js
ASP.NET Atlas Server Extensions Atlas Server Controls Atlas Server Controls App Services Bridge Web Services Bridge Atlas Framework Serveur Atlas Framework Client et Service Atlas Client Script Library Controls, Components Script Core Base Class Library Component Model and UI Framework Browser Compatibility Atlas Client Application Services Local Store, … Browser Integration Browser Integration ASP.NET 2.0 Application Services Page Framework, Server Controls Page Framework, Server Controls Atlas-enabled ASP.NET Pages Atlas-enabled Web Services (PHP + JSON) Web Services (PHP + JSON) HTML, Script, AtlasMarkup AtlasMarkup AtlasServiceProxiesAtlasServiceProxies Microsoft Ajax Framework Architecture
Framework + Noyau MicrosoftAjax.js Rendu partiel (UpdatePanel) MicrosoftAjaxWebForms.js Base Class Library (BCL) Contrôles, XML-Script, etc… PreviewScript.js Drag-and-Drop PreviewDragDrop.js Animation, Opacité, etc… PreviewGlitz.js 68ko 28ko 35ko 160ko 12ko
Sys.Preview Binding Base Binding Action InvokeMethode SetProperty Sys.Preview.UI AutoComplete Behavior Label Button CheckBox TextBox Selector Sys.Preview.Data DataColumn DataRow DataTable DataView DataFilter DataSource Sys.Preview.UI.Data DataControl DataNavigator ItemView ListView ListItem XSLTView Autre ServiceMethod eRequest Profile
Le Javascript est un langage « object- based » et non pas « object-oriented » Ajout de type étendu Array – add, contains, remove… Boolean Number - Parse Object – getType, getTypeName String – format, endsWith, startWith, trim … Microsoft Ajax Framework ajoute NamespacesClassesHéritageInterface Type Enumérés
var s = String.format({0}, {1} and {2}, 1, 2, 3); var sb = new Sys.StringBuilder(); for(var i = 0; i<100; i++){ sb.append(i); sb.append(i);sb.append(<br/>}alert(sb.toString());
Type.registerNamespace('Frimr'); Type.registerNamespace('Frimr'); Frimr.Person = function(name) { Frimr.Person = function(name) { Frimr.Person.initializeBase(this); Frimr.Person.initializeBase(this); this._name = name; this._name = name; } Frimr.Person.prototype = { Frimr.Person.prototype = { get_name : function(){ get_name : function(){ return this._name; return this._name; } } Frimr.Person.registerClass('Frimr.Person'); Frimr.Person.registerClass('Frimr.Person');
var p = new Frimr.Person('Christophe'); alert(p.get_name());alert(Object.getTypeName(p));
Frimr.Programmer = function(name, language) { Frimr.Programmer = function(name, language) { Frimr.Programmer.initializeBase(this, [name]); Frimr.Programmer.initializeBase(this, [name]); this._language = language; this._language = language; } Frimr.Programmer.prototype = { Frimr.Programmer.prototype = { get_name: function() { get_name: function() { var name = Frimr.Programmer.callBaseMethod(this, 'get_name'); var name = Frimr.Programmer.callBaseMethod(this, 'get_name'); return name + '(Programmateur)'; return name + '(Programmateur)'; }, }, get_language: function() { get_language: function() { return this._language; return this._language; } } Frimr.Programmer.registerClass('Frimr.Programmer', Frimr.Person); Frimr.Programmer.registerClass('Frimr.Programmer', Frimr.Person);
var p2 = new Frimr.Programmer('Christophe','JavaScript'); alert(p2.get_name());alert(p2.get_language());alert(Object.getTypeName(p2));
$create – Crée et initialise un composant $find – Retrouve un composant avec sont ID $get – Retrouve un élément dans le DOM [getElementByID] $addHandler – Ajoute un événement à un objet du DOM $removeHandler – Supprime un événement à un objet du DOM debug.trace
Impératif var bt = new Sys.Preview.UI.Button($get('bt')); bt.initialize();bt.add_click(OnClick)Déclaratif </button></components> </script>
Utilisation de Microsoft Ajax Library Utilisation du XML-Script avec des Web Services en PHP et sérialisation JSON Utilisation de Ajax Control Toolkit (Extenders)
Projet étudiant devenu projet communautaire Licence type Open Source : MS-PL Hébergé sur CodePlex Version 1.0 : Focalisée sur lexécution en.NET de code PHP existant Version 2.0 : Etend ceci via un scénario dintéropérabilité complêt (ASP.NET, Assemblies, …)
Composants majeurs : Compilateur PHP vers MSIL Support de ASP.NET Réimplémentation des classes et modules PHP MySQL Managed Extension Intéropérabilité.NET / Assemblies Projets Windows Forms !
Beta 2 : MySQL Managed Extension Beta 3 : Quelques corrections Visual Studio Integration Bêta
Plein de bonnes choses pour les développeurs PHP sur Windows ! Microsoft Ajax Library Web Services et JSON IIS7 Phalanger et ASP.NET, plus Extenders Ajax
Sinformer - Un portail dinformations, des événements, une newsletter bimensuelle personnalisée Se former - Des webcasts, des articles techniques, des téléchargements, des forums pour échanger avec vos pairs Bénéficier de services - Des cursus de formations et de certifications, des offres de support technique Visual Studio Abonnement MSDN Premium Abonnement TechNet Plus : Versions déval + 2 incidents support
Documentation, SDK et Tutoriels (Sidebar et Live.com) (Sidebar) (Live.com) Gallerie de Gadgets prêts à lemploi (+ RSS) Blog de léquipe Sidebar (Gadget Corner) Centre de développement Live.com (US) Centre de développement Live.com (FR) Forum dédié au développement des Gadgets Sidebar Forum dédié au développement des Gadgets Live.com
Merci !
© 2007 Microsoft France Votre potentiel, notre passion TM