Artur Piechocki - NASK - Nazwy domen internetowych
Artur Żarski, PHP na Windows
1. PHP na Windows
Artur Żarski
arturz@microsoft.com
Developer Evangelist
Microsoft Corporation
2. Plan spotkania
IIS7 jako platforma
PHP na Windows
SQL Server Driver for PHP
Expression Web 2
Inne możliwości współdziałania
3. .NET Framework 3.5
CLR Add-in Additional
LINQ ASP.NET 3.5
Framework Enhancements
.NET Framework 3.0 + SP 1
Windows Windows Windows
Windows
Presentation Communication Workflow
CardSpace
Foundation Foundation Foundation
.NET Framework 2.0 + SP 1
Zarządzanie
Serwer aplikacyjny
.NET 3.0 WS-Management
Role serwera
IIS 7 Monitorowanie
Podstawy
Core
Transakcje Odzyskiwanie
Sieć i komunikacja
Przechowywanie
Zintegrowany Hypervisor
4. VS.NET System.Web (ASP.NET) System.WinForms
UI
SessionState
Design ComponentModel
C# HtmlControls
Caching
Security WebControls
JScript
Configuration System.Drawing
VB
Simple Web Services
Drawing2D Printing
VC/MC++ Protocols
Imaging Text
Discovery Description
Debugger
System.Data (ADO.NET) System.Xml
Designers
XSLT Serialization
ADO SQL
SDK Tools
XPath
Design Adapters
CorDBG
System
ILAsm Collections IO Security Runtime
InteropServices
Configuration Net ServiceProcess
ILDbDump
Remoting
Diagnostics Reflection Text
SN
Serialization
Globalization Resources Threading
ILDAsm
Common Language Runtime
MetaInfo
JIT
GC App Domain Loader
PEVerify
MSIL Common Type System Class Loader
Platform Abstraction
Threads Boot Loader Sync Timers Networking Filesystem
5.
6.
7. Przykłady projektów PHP
Phalanger
Azure API for PHP
PHP4VS
WindowsLive for PHP
PHPOpenXML API
PHP Linq
PHPRPC for .NET
Excel document creation via OpenXML for PHP
8.
9. Zalety IIS 7.0
Modularna
Możliwość
Konfiguracja
architektura aby
systemu oparta zdalnego
zredukować
zarządzania
na XML
możliwość ataku
Możliwość
Integracja z
Zaawansowana rozszerzenia IIS7
WMS oraz Media
przy użyciu kodu
diagnostyka
Pack
zarządzanego
10. Dlaczego warto przejść na IIS7? (1/2)
Konfiguracja w pliku tekstowym
• Apache: httpd.conf ale wymaga restartu przez admina
• IIS7: bez restartu + command line
Rozproszona konfiguracja
• Apache: .htaccess
• Asp.net: web.config <system.webServer>, konfiguracja
per-URL (per żądanie)
Rozszerzalność (C/C++/C#/VB.NET/ 30+ innych
języków ...)
• Nowy interfejs CHttpModule, łatwo zastąpić swoim
• SQL Logging (logowanie W3C w mniej niż 50 linii kodu)
11. Dlaczego warto przejść na IIS7? (2/2)
Zaawansowana diagnostyka oraz rozwiązywanie
problemów
• 'failed request tracing„
• request monitoring and runtime data
Administracja i API
• AppCmd.exe
• WMI provider
• Microsoft.Web.Administration
Inne:
• Application Request Routing
• Web Deployment Tool
• Bitrate Throttling / Smooth Streaming
• …
12. IIS7 .NET Extensibility – Moduł vs. Handler
Moduły dostarczają usługi dla wszystkich żądań
moduł Basic Authentication
•
moduł Compression
•
Handlery dostarczają usługi dla specyficznych rozszerzeń
ISAPI handler (.dll)
•
Static handler (.htm, .jpg, .gif, etc)
•
IIS 7 pozwala na zarządzanie natywnymi i „zarządzanymi” modułami oraz
handlerami.
public class BasicAuthenticationModule : System.Web.IHttpModule
{
void Init(HttpApplication context)
{
}
void Dispose()
{
}
}
13. Skrypty: nowy WMI Provider
Set oService = GetObject(quot;winmgmts:rootWebAdministrationquot;)
' Tworzymy binding dla witryny
Set oBinding = oService.Get(quot;BindingElementquot;).SpawnInstance_
oBinding.BindingInformation = quot;*:80:www.site.comquot;
oBinding.Protocol = quot;httpquot;
‘ Tworzymy witrynę
oService.Get(quot;Sitequot;).Create _
quot;NewSitequot;, array(oBinding), quot;C:inetpubwwwrootquot;
' Tworzymy aplikację
oService.Get(quot;Applicationquot;).Create _
quot;/fooquot;, quot;NewSitequot;, quot;C:inetpubwwwrootfooquot;
14. Appcmd – listowanie i filtrowanie
Potężne narzędzie do zarządzania IIS 7 z linii komend
C:> appcmd list sites
SITE quot;Default Web Sitequot; (id:1,bindings:HTTP/*:80:,state:Started)
SITE quot;Site1quot; (id:2,bindings:http/*:81:,state:Started)
SITE quot;Site2quot; (id:3,bindings:http/*:82:,state:Stopped)
C:> appcmd list requests
REQUEST quot;fb0000008000000equot; (url:GET
/wait.aspx?time=10000,time:4276 msec,client:localhost)
C:> appcmd list requests /apppool.name:DefaultAppPool
C:> appcmd list requests /wp.name:3567
C:> appcmd list requests /site.id:1
15. Programowanie: Microsoft.Web.Administration
Nowe APIs pozwala programistom na pisanie własnych narzędzi do wdrażania,
zarządzania ASP.NET oraz IIS
ServerManager iisManager = new ServerManager();
foreach(WorkerProcess w3wp in iisManager.WorkerProcesses) {
Console.WriteLine(quot;W3WP ({0})quot;, w3wp.ProcessId);
foreach (Request request in w3wp.GetRequests(0)) {
Console.WriteLine(quot;{0} - {1},{2},{3}quot;,
request.Url,
request.ClientIPAddr,
request.TimeElapsed,
request.TimeInState);
}
}
16.
17. Najważniejsze elementy
ADOdb
Pierwszy projekt Open Source,
w którym MS brał udział
SQL Server PHP Driver
SQL Server Driver for PHP
został stworzony aby
umożliwić współpracę PHP z
SQL Server
IIS7+ FastCGI
Podstawa PHP na
Windows
Expression Web 2.0
Wsparcie narzędzi MS do
pracy z PHP
18. IIS FastCGI
Solidna platforma dla aplikacji PHP
• Otwarty standard
• Wspierane przez środowisko PHP oraz wiele innych
frameworków open source (RoR, Perl, Python, …)
• Ulepszenie CGI
• Web server tworzy proces FastCGI dla pierwszego
żądania
• Web server wykorzystuje istniejące procesy FastCGI
dla następnych żądań
• Konfigurowalne zasoby
vs. ISAPI:
• Dostarcza wymaganą stabilność dla aplikacji PHP typu non-thread-
safe
vs. CGI:
• Drastyczny wzrost wydajności
19. IIS FastCGI – Zasada działania
FastCGI process pool for
PHP5
FastCGI over
named pipes lub
TCP
php-cgi.exe
FastCGI process pool for
PHP4
Request
queue
php.exe
20. Uruchomienie aplikacji PHP na IIS 7.0
Łatwy setup:
• Instalacja PHP z FastCGI
• Wdrożenie aplikacji
Kompatybilność:
• Top 10 aplikacji PHP testowane i udokumentowane na
www.iis.net/php
• Łatwa migracja ze wsparciem Url Rewrite
21. SQL Server PHP Driver
Zalety:
Pozwala na pewną i skalowaną integrację z SQL Server
Tworzenie aplikacji na silnym i bezpiecznym silniku BD
BI oraz SQL Reporting Services
Konfiguracja:
Php.ini -> extension=php_sqlsrv.dll
Połączenie:
$serverName = quot;(local)quot;;
$connectionOptions =
array(quot;Databasequot;=>quot;AdventureWorksquot;);
22. Microsoft Expression Web 2
® ®
• PHP 5.2.5, Fast CGI
• Intellisense, code-coloring oraz
snippety
• Podgląd „PHP include” w trybie
projektowanie
• Podgląd stron PHP na różnych
zainstalowanych przeglądarkach
przy pomocy wbudowanego
Webservera
24. PHP i Silverlight
Działa na IIS i Apache
Wymaga dodania dwóch MIME types dla
Silverlight
• .xaml – application/xaml+xml
• .xab – application/x-silverlight-app
Brak ustawień = błąd 404.3
25. PHP i ASP.NET Membership + AJAX
ASP.NET
• Kompletne zarządzane API
PHP on Windows
• Microsoft SQL Server Driver for PHP
• Web Services
• .NET / COM
PHP On Linux
• FreeTDS
• Sockets
• Web Services
26. PHP i obiekty COM
Czym jest COM (Component Object Model) ?
PHP tak naprawdę nie używa COM.
COM jest dowolnym językiem Windows
• VB
• C++
• Delphi
• Python
• Perl
• Cobol
• Fortran
27. Tworzenie obiektów COM
<?php
$myCOMObject =new
COM(quot;COMObject.COMClassquot;);
$myCOMObject->someMethod(“Some Argument”);
?>
28. Inne możliwości
Microsoft Office
Web Services
• NuSOAP
• PHP 5 – Native SOAP Extension
• ezSOAP
• PEAR::SOAP
Microsoft .NET
Microsoft Services (np. Live, Azure)
Phalanger
29. PHP – „Wish List”
Natywne API dla Active Directory
AzMan API dla PHP
PHP Bridge dla ADAM
ASP.NET 2.0 Authentication Provider dla PHP
A CDO / Exchange Bridge dla PHP
PHP-Nuke, Mambo, etc. etc.
• Na MS SQL Server
• Opcjonalnie dla Phalanger
• Opcjonalnie dla AD
30. .NET Framework 3.5
CLR Add-in Additional
LINQ ASP.NET 3.5
Framework Enhancements
.NET Framework 3.0 + SP 1
Windows Windows Windows
Windows
Presentation Communication Workflow
CardSpace
Foundation Foundation Foundation
.NET Framework 2.0 + SP 1
Zarządzanie
Serwer aplikacyjny
.NET 3.0 WS-Management
Role serwera
IIS 7 Monitorowanie
Podstawy
Core
Transakcje Odzyskiwanie
Sieć i komunikacja
Przechowywanie
Zintegrowany Hypervisor
31. VS.NET System.Web (ASP.NET) System.WinForms
UI
SessionState
Design ComponentModel
C# HtmlControls
Caching
Security WebControls
JScript
Configuration System.Drawing
VB
Simple Web Services
Drawing2D Printing
VC/MC++ Protocols
Imaging Text
Discovery Description
Debugger
System.Data (ADO.NET) System.Xml
Designers
XSLT Serialization
ADO SQL
SDK Tools
XPath
Design Adapters
CorDBG
System
ILAsm Collections IO Security Runtime
InteropServices
Configuration Net ServiceProcess
ILDbDump
Remoting
Diagnostics Reflection Text
SN
Serialization
Globalization Resources Threading
ILDAsm
Common Language Runtime
MetaInfo
JIT
GC App Domain Loader
PEVerify
MSIL Common Type System Class Loader
Platform Abstraction
Threads Boot Loader Sync Timers Networking Filesystem