Transcript Slide 1

Extending PHP with the
Microsoft Platform
Joe Stagner
Opinionated Misfit Geek
Microsoft Corporation
[email protected]
www.JoeOn.net
Who am I and why am I here?






Programming for over 30 years.
PHP developer since 1998.
Other Web Dev, ASP, CGI, Perl,
JSP/Java, LiveWire, ColdFusion
With Microsoft for 6 years.
Work mostly in the Web Platofrms
Group
Been the “PHP Guy” at Microsoft for
all 6 years.
My Goal …….
To add one more option to your choices.
Why isn’t this already redundant?

If (PHP != “LAMP”)



Microsoft Missed
The Community Missed
Slashdot Won 
About Microsoft
(From the PHP Developer’s Perspective.)


Don’t think of Microsoft as ASP.NET
Microsoft’s Platform Motivations




Products versus Platforms
But Think ECOSYSTEM
90% of PHP Developers Code on
Windows
10% of PHP Developers DEPLOY on
Windows
What’s Changed at Microsoft?



Scott Guthrie / DevDiv Organization
Platform Focus
Dynamic Languages


IIS Team




Python, Ruby, Phalanger
FastCGI
Hosting Team
Tools & Data Teams
Open Source ***
The PHP Developer




Is a natural pragmatist.
Is an integration specialist.
Tends to focus on the solution, not
the plumbing.
Works in venue that’s changing at
a staggering pace.
PHP versus ASP.NET
PHP
Dynamic
Loosely Typed
Optional OO
Runs On the OS
.php / .inc
“C”
Simplicity
ASP.NET
Compiled
Strongly Typed
Mandatory OO
Runs IN the OS ***
.dll / .exe
.NET
Comprehensiveness
PHP on Windows
- Problems / Solutions




Startup Cost
Ongoing Cost
Hosting
Threads !


Reliability / Performance
Community
Microsoft Developer Start






Windows / IIS
SQL Server Express (Workgroup)
Visual Web Developer Express
Visual C# (VB) Express
Microsoft Ajax
WPF / E ***
PHP & Microsoft Ecosystem
PHP
 Microsoft

Some Favorite PHP Applications
PHP-Nuke
PostNuke
RunCMS
Mambo
Xoops
MyPHPAdmin
PHPBB2
VBulletin
VBPortal
cPanel
Drupal
e107
MD-Pro
MyPHPNuke
PHPWebSite
TikiWiki
Typo3
Xaraya
b2Evolution
bBlog
Serendipity
WordPress
TextPattern
OSCommerce
OSCNuke
Zen Cart
eGroupWare
phpGroupWare
Site@School
ATutor
Moodle
Segue
Coppermine
QwikiWikki
SugarCRM
WebCalendar
Software Options from Microsoft
MS Access
MS Outlook
BizTalk
SQL Server
MS LCS
Identity
Integration
Server
MS Excel
PowerPoint
SharePoint
SQL RS
Business
Manager
ISA Server
MS FrontPage
MS Project
MS CMS
SQL AS
Virtual Earth
Data Analyzer
MS InfoPath
Small Business
Accounting
Exchange
Server
SQL NS
Messenger
MS Mobile
Live Meeting
MS Visio
Commerce
Server
Project Server
MapPoint
Tablet PC
MS OneNote
MS Word
MS CRM
MOM
App Center
MS Starter
Kits
More Software Options from Microsoft
Active
Directory
IIS 6/7
Axapta
Navision
Info Bridge
Media Center
ADAM
MSMQ
Great Plains
Retail
Management
WSH
Info Card
Authorization
Manager
Windows
Server 2003
Small
Business
Manager
Windows
Unix
Services
DirectX
WinFX
Operations
Manager
Windows
Mobile
MS Solomon
VBA / VSA
ActiveX
Windows
Workflow
MS
Enterprise
Reporting
XML-WS
WSE
Application
Center
MSN
Search
Hosted
Controls
Presentation
Foundation
Windows
Embedded
Windows
Media
Server
System
Management
Server
Windows
Index
Server
Host
Integration
Server
Vista
Longhorn
Why Develop & Run on Windows

Windows Ecosystem




Over 600,000 partners in the Microsoft
Ecosystem.
Microsoft makes MUCH more than
Windows
Microsoft is making huge investments
interoperability standards and
technologies. (WS-I, etc.)
Microsoft provides


…. a complete turn-key infrastructure
…. Individual best-of-breed applications
for you to choose from
Why PHP for Windows Developers

The PHP Ecosystem





Nuke and Nuke-Like Application
Open source designs
Loose and Wild
The PHP community contributes to a
variety of defacto standard facilities to
connect everything
Zend and the PHP community are
invested in Windows Specific PHP
technology.
The State of PHP on Windows



PHP is PHP is PHP. (Mostly)
Winabler, Platform, FastCGI
Other 3rd parties offer…….


CodeGear Delphi for PHP
Phalanger = Managed Code PHP


JCX.Software



http://www.php-compiler.net/
VS.PHP
Zend’s Windows Work Continues
Microsoft’s work for PHP Continues
Things PHP is not designed for.











Component Creation
Calling binary .DLLs
Simplifying Interoperability
Remote Instancing
Application Multithreading
Asynchronous Dependencies
Multi Phase Transactions
Aggregating Multi-Interfaced Objects
Type Encapsulation & Abstraction
Object Scope Promotion
Static Instance Access
PHP on Windows

PHP on IIS 6


PHP Versions…. Why choose ?
PHP on IIS 7

New application context ?
IIS 7
PHP on Windows

More Options

Managed Code (.NET) PHP


Windows Applications



Phalanger http://php-compiler.net/
WinBinnder
NuSphere PHP Doc
PHP-GTK
Performance

What’s the problem anyway.




CGI on Windows ?
The PHP ISAPI Extension
Microsoft FastCGI
Microsoft / Zend Agreement
Performance



IIS
Binary Solutions
CGI, ISAPI





Winabler
Zend Platform
Phalanger
COM / .NET Bridge
FastCGI
Integration Options





The Windows File System
SMTP
X.500
WDDX
MS-SQL Server, ADO, ODBC




ASP.NET Authorization Provider
Database’d session state
XML
LDAP
Integration Options

MSMQ / MQ Series
Sockets
RSS
XML-RPC

XML Web Services / SOAP

PHP Extensibility Mechanisms



Integration Options

HTTP Form Tricks




They can be Open
They can be Hidden
They can be Encrypted
Cookie Tricks

They can also be encrypted
Finally some ADVANTAGE to
HTTP’s stateless protocol.
Integration Options




Build your own.
PHP on Windows built with VC++
PECL Extensions
PHP is Open Source
Office
Documents
Integration Options
 WinDNA
/ COM
 Microsoft .NET
PHP and COM



What’s COM ?
PHP doesn’t REALLY speak COM.
COM is the Lingua Franca of Windows







VB
C++ (Ours and many others)
Delphi
Python
Perl
Cobol
Fortran
Creating a COM Object Instance
<?php
$myCOMObject =new
COM("COMObject.COMClass");
$myCOMObject->someMethod(“Some Argument”);
?>
Creating a COM Veneer

Build it in Visual Basic 6

Then call from PHP
<?php
$myCOMObject =new
COM("COMObject.COMClass");
$myCOMObject->someMethod(“Some
Argument”);
?>
COM
Objects
.NET Framework and Tools
VB
C++
C#
…
J#
Common Language Specification
Web Forms Web Services
Mobile Internet Toolkit
Windows
Forms
ADO .NET and XML
Base Class Library
Common Language Runtime
Operating System
Visual Studio .NET
ASP .NET
The Shared Source CLI
VS.NET
C#
JScript
VB
System.Web (ASP.NET)
UI
SessionState
HtmlControls
Caching
Security
WebControls
Configuration
Debugger
Simple Web Services
Protocols
Discovery
Description
Designers
System.Data (ADO.NET)
VC/MC++
ADO
SDK Tools
Design
SN
ILDAsm
Boot Loader
Threads
System.Drawing
Drawing2D
Printing
Imaging
Text
System.Xml
XSLT
Adapters
Serialization
XPath
System
Collections
IO
Security
Configuration
Net
ServiceProcess
Diagnostics
Reflection
Text
Remoting
Globalization
Resources
Threading
Serialization
Runtime
InteropServices
Common Language Runtime
MetaInfo
PEVerify
ComponentModel
GC
App Domain Loader
JIT
MSIL
Common Type System
Class Loader
Platform Adaptation Layer
Sync
Timers
Networking
Filesystem
ECMA CLI
ILDbDump
Design
SQL
CorDBG
ILAsm
System.WinForms
Base Class Library
System.Web
Services
Description
Discovery
Protocols
UI
HtmlControls
WebControls
Caching
Configuration
Security
SessionState
System.Windows.Forms
Design
ComponentModel
System.Drawing
Drawing2D
Imaging
System.Data
OleDb
Common
Printing
Text
System.Xml
SqlClient
SQLTypes
XSLT
XPath
Serialization
System
Collections
Configuration
Diagnostics
Globalization
IO
Net
Reflection
Resources
Security
ServiceProcess
Text
Threading
Runtime
InteropServices
Remoting
Serialization
Microsoft .NET



COM Callable Wrapper
Runtime Callable Wrapper
PHP Restrictions


OLE 2
Parameterless Constructors
.NET
Objects
XML Web Services




NuSOAP
PHP 5 – Native SOAP Extension
ezSOAP
PEAR::SOAP
XML
WebServices
Microsoft AJAX
•Free & Open Source
•Client Libraries
•ASP.NET Server Implementation
•PHP Server Implementation
•Cross Platform Client Implementation
•ASP.NET Server Side -> Javascript
•Or fully LAMP
Microsoft AJAX
Microsoft WPF/e
•Rich Client Behavior
•Cross Browser
•Cross Platform
•V.1 XAML & JavaScript
•V.next C# and/or VB
•Expression Tools
Microsoft
WPF/e
Joe’s Wish List








Great SQL Server 2005 access for PHP
A native Active Directory API PHP
An AzMan API for PHP
A PHP Bridge to ADAM
An ASP.NET 2.0 Auth Provider for PHP
A seamless session state bridge.
A CDO / Exchange Bridge for PHP
PHP-Nuke, Mambo, etc. etc.



On Windows
On Microsoft SQL
Optionally in Phalanger, using AD
Call to Action !
•Get your Visual Studio (FREE)
•Get SQL Server Express (FREE)
•Understand what products Microsoft makes.
•Email [email protected]
•Read me at www.JoeOn.net
Thanks
•Andrew Stopford
•NuSphere
•Michael Pham
•Juan Rivera (VS.PHP)
•Zend
Q&A
THANKS !
© 2006 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
© 2006 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.