Pages actives côté serveur

Contrairement à ce que certains affirment, HTML n'est pas un langage de programmation. Ce n'est qu'un langage de description de pages, permettant au créateur de construire des documents qui seront présentées au client d'une façon aussi proche que possible de ce qu'il avait souhaité. La page est entièrement prédéfinie et toute variante doit faire l'objet d'une nouvelle rédaction.

Les concepteurs de sites ont donc rapidement senti le besoin d'outils leur permettant de générer des pages de façon plus rapide à l'aide d'outils de programmation. Ils étaient ainsi à même de pouvoir, avec un minimum d'effort répondre à une demande légèrement différentes de leurs visiteurs successifs, de publier le contenu d'un catalogue en ligne, etc ...

Afin de pouvoir traiter les demandes des visiteurs, une norme spécifique a été définie sous le nom de Common Gateway Interface (CGI).

Les premières techniques utilisées consistaient à écrire des programmes externes (dans un langage quelconque). Lorsque les serveur reçoit une telle demande, il crée un nouveau processus dans lequel il exécute le programme qui lui retourne la page générée qu'il peut alors renvoyer au demandeur. Une programmation complète est alors nécessaire et la création d'un processus à chaque demande peut être une charge assez lourde (malgré les multiples techniques d'optimisation que l'on peut imaginer).
La réponse à ce problème à consisté à permettre au serveur d'exécuter des programme dans son propre contexte d'exécution (.dll de Windows ou modules chargeables d'autres environnements). Pour cela, divers fournisseurs de serveurs ont proposé des API spécifiques permettant de faciliter le développement, tout en laissant la charge complète de la création de la page au programmeur. Bien sûr cette approche allie avantages (en termes de performances) et inconvénients (en terme de fiabilité, un module mal écrit pouvant mettre en cause le fonctionnement global du serveur.
Une approche plus récente consiste à proposer au créateur de page de réduire au minimum  sa charge de travail en lui permettant d'insérer dans sa page html des séquences d'instructions écrites dans le langage de programmation de son choix.

Deux solutions principales ont été proposées :

Présentés comme concurrents, voire ennemis héréditaires puisque PHP est souvent associé au monde du logiciel libre alors qu'ASP a été créé par Microsoft, ces deux approches sont semblables, peut être complémentaires et en tout cas parfaitement compatibles, puisqu'un serveur Microsoft peut interpréter des pages PHP aussi bien qu'un serveur Apache peut interpréter des pages ASP (après que chacun d'eux ait été configuré correctement, cela va de soi ...)