Post on 01-Nov-2014
description
transcript
Joe Stagner
Opinionated Misfit GeekMicrosoft Corporation
Joe.Stagner@Microsoft.com
www.JoeOn.net
Extending PHP with the Extending PHP with the Microsoft PlatformMicrosoft Platform
Who am I and why am I here?Who am I and why am I here?
Programming for over 30 years.Programming for over 30 years. PHP developer since 1998.PHP developer since 1998. Other Web Dev, ASP, CGI, Perl, Other Web Dev, ASP, CGI, Perl,
JSP/Java, LiveWire, ColdFusionJSP/Java, LiveWire, ColdFusion With Microsoft for 6 years.With Microsoft for 6 years. Work mostly in the Web Platofrms Work mostly in the Web Platofrms
GroupGroup Been the “PHP Guy” at Microsoft for Been the “PHP Guy” at Microsoft for
all 6 years.all 6 years.
My Goal …….My Goal …….
To add one more option to your choices.To add one more option to your choices.
Why isn’t this already redundant?Why isn’t this already redundant?
If (PHP != “LAMP”)If (PHP != “LAMP”) Microsoft MissedMicrosoft Missed The Community MissedThe Community Missed Slashdot Won Slashdot Won
About Microsoft About Microsoft (From the PHP Developer’s Perspective.)
Don’t think of Microsoft as ASP.NETDon’t think of Microsoft as ASP.NET Microsoft’s Platform MotivationsMicrosoft’s Platform Motivations
Products versus PlatformsProducts versus Platforms
But Think ECOSYSTEMBut Think ECOSYSTEM 90% of PHP Developers Code on 90% of PHP Developers Code on
WindowsWindows 10% of PHP Developers DEPLOY on 10% of PHP Developers DEPLOY on
WindowsWindows
What’s Changed at Microsoft?What’s Changed at Microsoft? Scott Guthrie / DevDiv OrganizationScott Guthrie / DevDiv Organization Platform FocusPlatform Focus Dynamic LanguagesDynamic Languages
Python, Ruby, PhalangerPython, Ruby, Phalanger
IIS Team IIS Team FastCGIFastCGI
Hosting TeamHosting Team Tools & Data TeamsTools & Data Teams Open Source ***Open Source ***
The PHP DeveloperThe 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 versus ASP.NET PHP ASP.NETPHP ASP.NETDynamicDynamic CompiledCompiledLoosely TypedLoosely Typed Strongly TypedStrongly TypedOptional OOOptional OO Mandatory OOMandatory OORuns On the OSRuns On the OS Runs IN the OS ***Runs IN the OS ***.php / .inc.php / .inc .dll / .exe.dll / .exe““C”C” .NET.NETSimplicity Simplicity ComprehensivenessComprehensiveness
PHP on Windows PHP on Windows - Problems / Solutions- Problems / Solutions
Startup Cost Startup Cost Ongoing CostOngoing Cost HostingHosting Threads ! Threads !
Reliability / PerformanceReliability / Performance CommunityCommunity
Microsoft Developer StartMicrosoft Developer Start
Windows / IIS Windows / IIS SQL Server Express (Workgroup) SQL Server Express (Workgroup) Visual Web Developer ExpressVisual Web Developer Express Visual C# (VB) ExpressVisual C# (VB) Express Microsoft AjaxMicrosoft Ajax WPF / E ***WPF / E ***
PHP & Microsoft EcosystemPHP & Microsoft Ecosystem
PHPPHPMicrosoft Microsoft
PHP-NukePHP-Nuke
PHPBB2PHPBB2
MD-ProMD-Pro
b2Evolutionb2Evolution
OSCNukeOSCNuke
MoodleMoodle
VBulletinVBulletin
PostNukePostNuke
MyPHPNukeMyPHPNuke
bBlogbBlog
Zen CartZen Cart
SegueSegue
VBPortalVBPortal DrupalDrupal
CoppermineCoppermine
phpGroupWarephpGroupWare
PHPWebSitePHPWebSite
eGroupWareeGroupWare
SerendipitySerendipity
XoopsXoops
Site@SchoolSite@School
TextPatternTextPattern
Typo3Typo3
QwikiWikkiQwikiWikki
RunCMSRunCMS MamboMambo
cPanelcPanel
TikiWikiTikiWiki
WordPressWordPress
SugarCRMSugarCRM
MyPHPAdminMyPHPAdmin
e107e107
XarayaXaraya
OSCommerceOSCommerce
ATutorATutor
WebCalendarWebCalendar
Some Favorite PHP Applications
MS AccessMS Access
MS ExcelMS Excel
MS FrontPageMS FrontPage
MS InfoPathMS InfoPath
Live MeetingLive Meeting
MS OneNoteMS OneNote
PowerPointPowerPoint
MS OutlookMS Outlook
MS ProjectMS Project
Small Business Accounting
Small Business Accounting
MS VisioMS Visio
MS WordMS Word
SharePointSharePoint Business Manager
Business Manager
MS CRMMS CRM
Project ServerProject Server
MS CMSMS CMS
CommerceServer
CommerceServer
ExchangeServer
ExchangeServer
MS LCSMS LCS
MapPointMapPoint
MessengerMessenger
Virtual EarthVirtual Earth
MOMMOM
BizTalkBizTalk SQL ServerSQL Server
SQL RSSQL RS
SQL ASSQL AS
SQL NSSQL NS
App CenterApp Center
IdentityIntegration
Server
IdentityIntegration
Server
ISA ServerISA Server
Data AnalyzerData Analyzer
MS MobileMS Mobile
Tablet PCTablet PC
MS Starter Kits
MS Starter Kits
Software Options from Microsoft
Great PlainsGreat Plains
AxaptaAxapta
Small Business Manager
Small Business Manager
MSEnterprise Reporting
MSEnterprise Reporting
NavisionNavision
Retail Management
Retail Management
MS SolomonMS SolomonWindows Mobile
Windows Mobile
Windows Embedded
Windows Embedded
Active Directory
Active Directory
ADAMADAM
Authorization Manager
Authorization Manager
Operations Manager
Operations Manager
IIS 6/7IIS 6/7
Windows Server 2003
Windows Server 2003
XML-WSWSE
XML-WSWSE
Media CenterMedia Center
WindowsMedia Server
WindowsMedia Server
Application Center
Application Center
SystemManagement
Server
SystemManagement
Server
Windows Unix
Services
Windows Unix
Services
Host Integration
Server
Host Integration
Server
Windows Workflow
Windows Workflow
VistaLonghorn
VistaLonghorn
Presentation Foundation
Presentation Foundation
MSNSearch
MSNSearch
WindowsIndexServer
WindowsIndexServer
VBA / VSAVBA / VSA
Info BridgeInfo Bridge
WSHWSH
DirectXDirectX
ActiveXActiveX
HostedControls
HostedControls
MSMQMSMQ Info CardInfo Card
WinFXWinFX
More Software Options from Microsoft
Why Develop & Run on WindowsWhy Develop & Run on Windows
Windows EcosystemWindows Ecosystem Over 600,000 partners in the Microsoft Over 600,000 partners in the Microsoft
Ecosystem. Ecosystem. Microsoft makes MUCH more than Microsoft makes MUCH more than
WindowsWindows Microsoft is making huge investments Microsoft is making huge investments
interoperability standards and interoperability standards and technologies. (WS-I, etc.) technologies. (WS-I, etc.)
Microsoft provides Microsoft provides ……. a complete turn-key infrastructure. a complete turn-key infrastructure ……. Individual best-of-breed applications . Individual best-of-breed applications
for you to choose fromfor you to choose from
Why PHP for Windows DevelopersWhy PHP for Windows Developers
The PHP Ecosystem The PHP Ecosystem Nuke and Nuke-Like ApplicationNuke and Nuke-Like Application Open source designsOpen source designs Loose and WildLoose and Wild The PHP community contributes to a The PHP community contributes to a
variety of defacto standard facilities to variety of defacto standard facilities to connect everythingconnect everything
Zend and the PHP community are Zend and the PHP community are invested in Windows Specific PHP invested in Windows Specific PHP technology.technology.
The State of PHP on WindowsThe State of PHP on Windows PHP is PHP is PHP. PHP is PHP is PHP. (Mostly)(Mostly) Winabler, Platform, FastCGIWinabler, Platform, FastCGI Other 3Other 3rdrd parties offer……. parties offer…….
CodeGear Delphi for PHPCodeGear Delphi for PHP Phalanger = Managed Code PHPPhalanger = Managed Code PHP
http://www.php-compiler.net/http://www.php-compiler.net/
JCX.SoftwareJCX.Software VS.PHPVS.PHP
Zend’s Windows Work ContinuesZend’s Windows Work Continues Microsoft’s work for PHP ContinuesMicrosoft’s work for PHP Continues
Things PHP is not designed for.Things PHP is not designed for. Component CreationComponent Creation Calling binary .DLLsCalling binary .DLLs Simplifying InteroperabilitySimplifying Interoperability Remote InstancingRemote Instancing Application MultithreadingApplication Multithreading Asynchronous DependenciesAsynchronous Dependencies Multi Phase TransactionsMulti Phase Transactions Aggregating Multi-Interfaced ObjectsAggregating Multi-Interfaced Objects Type Encapsulation & AbstractionType Encapsulation & Abstraction Object Scope PromotionObject Scope Promotion Static Instance AccessStatic Instance Access
PHP on WindowsPHP on Windows
PHP on IIS 6PHP on IIS 6 PHP Versions…. Why choose ?PHP Versions…. Why choose ?
PHP on IIS 7 PHP on IIS 7 New application context ?New application context ?
IIS 7
PHP on WindowsPHP on Windows
More OptionsMore Options Managed Code (.NET) PHPManaged Code (.NET) PHP
Phalanger Phalanger http://php-compiler.net/http://php-compiler.net/
Windows ApplicationsWindows Applications WinBinnderWinBinnder NuSphere PHP DocNuSphere PHP Doc
PHP-GTKPHP-GTK
PerformancePerformance
What’s the problem anyway.What’s the problem anyway. CGI on Windows ?CGI on Windows ? The PHP ISAPI ExtensionThe PHP ISAPI Extension Microsoft FastCGIMicrosoft FastCGI Microsoft / Zend AgreementMicrosoft / Zend Agreement
PerformancePerformance
IISIIS Binary SolutionsBinary Solutions CGI, ISAPICGI, ISAPI
Winabler Winabler
Zend PlatformZend Platform PhalangerPhalanger COM / .NET BridgeCOM / .NET Bridge FastCGIFastCGI
Integration OptionsIntegration Options The Windows File SystemThe Windows File System SMTPSMTP X.500X.500 WDDXWDDX MS-SQL Server, ADO, ODBCMS-SQL Server, ADO, ODBC
ASP.NET Authorization ProviderASP.NET Authorization Provider Database’d session stateDatabase’d session state
XMLXML LDAP LDAP
Integration OptionsIntegration Options
MSMQ / MQ SeriesMSMQ / MQ Series SocketsSockets RSSRSS XML-RPCXML-RPC XML Web Services / SOAP XML Web Services / SOAP PHP Extensibility MechanismsPHP Extensibility Mechanisms
Integration OptionsIntegration Options
Finally some ADVANTAGE to Finally some ADVANTAGE to HTTP’s stateless protocolHTTP’s stateless protocol..
HTTP Form TricksHTTP Form Tricks They can be OpenThey can be Open They can be HiddenThey can be Hidden They can be EncryptedThey can be Encrypted
Cookie TricksCookie Tricks They can also be encryptedThey can also be encrypted
Integration OptionsIntegration Options
Build your own.Build your own. PHP on Windows built with VC++PHP on Windows built with VC++ PECL ExtensionsPECL Extensions PHP is Open SourcePHP is Open Source
Office Documents
Integration OptionsIntegration Options
WinDNA / COMWinDNA / COMMicrosoft .NETMicrosoft .NET
PHP and COMPHP and COM What’s COM ?What’s COM ? PHP doesn’t REALLY speak COM.PHP doesn’t REALLY speak COM. COM is the Lingua Franca of COM is the Lingua Franca of
WindowsWindows VBVB C++ (Ours and many others)C++ (Ours and many others) DelphiDelphi PythonPython PerlPerl CobolCobol FortranFortran
Creating a COM Object Instance
<?php<?php
$myCOMObject =new $myCOMObject =new COM("COMObject.COMClass");COM("COMObject.COMClass");
$myCOMObject->someMethod(“Some Argument”);$myCOMObject->someMethod(“Some Argument”);
?>?>
Creating a COM VeneerCreating a COM Veneer
Build it in Visual Basic 6 Build it in Visual Basic 6 Then call from PHP Then call from PHP
<?php<?php
$myCOMObject =new $myCOMObject =new COM("COMObject.COMClass");COM("COMObject.COMClass");
$myCOMObject->someMethod(“Some $myCOMObject->someMethod(“Some Argument”);Argument”);
?>?>
COM Objects
Operating SystemOperating System
Common Language RuntimeCommon Language Runtime
Base Class LibraryBase Class Library
ADO .NET and XMLADO .NET and XML
ASP .NETASP .NETWeb Forms Web ServicesWeb Forms Web Services
Mobile Internet ToolkitMobile Internet Toolkit
WindowsWindowsFormsForms
Common Language Specification
VBVB C++C++ C#C# J#J# ……V
isua
l Stu
dio
.NE
TV
isua
l Stu
dio
.NE
T
.NET Framework and Tools.NET Framework and Tools
VS.NET
Common Language RuntimeCommon Language Runtime
System System
System.Data (ADO.NET) System.Xml
Design
ADO
Adapters
SQL
Globalization
Diagnostics
Configuration
Collections
Resources
Reflection
Net
IO
Threading
Text
ServiceProcess
Security RuntimeInteropServices
Remoting
Serialization
XPath
XSLT Serialization
System.Drawing
JIT
GC
MSIL
App Domain Loader
Common Type System Class Loader
System.Web (ASP.NET)
Configuration
SessionStateCachingSecurity
Simple Web Services
DescriptionProtocols
UIHtmlControls
WebControls
Discovery
C#
VC/MC++ Imaging
Drawing2D
Text
Printing
JScript
VB
Platform Adaptation LayerPlatform Adaptation LayerBoot Loader
SyncThreads
Networking
Timers Filesystem
System.WinForms
Design ComponentModel
Debugger
Designers
SDK ToolsSDK Tools
CorDBG
ILAsm
ILDbDump
SN
ILDAsm
MetaInfo
PEVerify
EC
MA
C
LIThe Shared Source CLI The Shared Source CLI
Base Class LibraryBase Class Library
SystemSystem
System.DataSystem.Data System.XmlSystem.Xml
System.WebSystem.Web
Globalization
Diagnostics
Configuration
Collections
Resources
Reflection
Net
IO
Threading
Text
ServiceProcess
Security
Common
OleDb
SQLTypes
SqlClient
XPath
XSLT
RuntimeInteropServices
Remoting
Serialization
Serialization
Configuration SessionState
Caching Security
ServicesDescription
Discovery
Protocols
UIHtmlControls
WebControls
System.DrawingSystem.Drawing
Imaging
Drawing2D
Text
Printing
System.Windows.FormsSystem.Windows.Forms
Design ComponentModel
Microsoft .NET Microsoft .NET
COM Callable WrapperCOM Callable Wrapper Runtime Callable WrapperRuntime Callable Wrapper PHP RestrictionsPHP Restrictions
OLE 2OLE 2
Parameterless ConstructorsParameterless Constructors
.NET Objects
XML Web Services XML Web Services
NuSOAPNuSOAP PHP 5 – Native SOAP ExtensionPHP 5 – Native SOAP Extension ezSOAPezSOAP PEAR::SOAPPEAR::SOAP
XMLWebServices
Microsoft AJAXMicrosoft AJAX
•Free & Open Source Free & Open Source •Client LibrariesClient Libraries•ASP.NET Server ImplementationASP.NET Server Implementation•PHP Server ImplementationPHP Server Implementation
•Cross Platform Client ImplementationCross Platform Client Implementation•ASP.NET Server Side -> JavascriptASP.NET Server Side -> Javascript•Or fully LAMPOr fully LAMP
Microsoft AJAX
Microsoft WPF/eMicrosoft WPF/e
•Rich Client Behavior Rich Client Behavior •Cross BrowserCross Browser•Cross PlatformCross Platform•V.1 XAML & JavaScriptV.1 XAML & JavaScript•V.next C# and/or VBV.next C# and/or VB•Expression ToolsExpression Tools
Microsoft WPF/e
Joe’s Wish ListJoe’s Wish List Great SQL Server 2005 access for PHPGreat SQL Server 2005 access for PHP A native Active Directory API PHPA native Active Directory API PHP An AzMan API for PHPAn AzMan API for PHP A PHP Bridge to ADAMA PHP Bridge to ADAM An ASP.NET 2.0 Auth Provider for PHPAn ASP.NET 2.0 Auth Provider for PHP A seamless session state bridge.A seamless session state bridge. A CDO / Exchange Bridge for PHPA CDO / Exchange Bridge for PHP PHP-Nuke, Mambo, etc. etc. PHP-Nuke, Mambo, etc. etc.
On WindowsOn Windows On Microsoft SQLOn Microsoft SQL Optionally in Phalanger, using ADOptionally in Phalanger, using AD
Call to Action !Call to Action !
•Get your Visual Studio (FREE) Get your Visual Studio (FREE) •Get SQL Server Express (FREE)Get SQL Server Express (FREE)•Understand what products Microsoft makes.Understand what products Microsoft makes.•Email Joe.Stagner@Microsoft.comEmail Joe.Stagner@Microsoft.com•Read me at www.JoeOn.netRead me at www.JoeOn.net
Thanks Thanks •Andrew StopfordAndrew Stopford•NuSphereNuSphere•Michael PhamMichael Pham•Juan Rivera (VS.PHP)Juan Rivera (VS.PHP)•ZendZend
© 2006 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
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.