Vamos a ver, partimos de la base de que un fichero .aspx es un fichero de texto. Supongamos que en mi web tengo una carpeta que se llama "plantillas".
Dentro de esta carpeta tengo un archivo "verArticulo.plantilla" (¿extension .plantilla? ¿Por qué no?, al fin y al cabo le puedo poner la extensión que me salga de...). El archivo .plantilla podría tener de una forma muy simplificada esta pinta:
Código HTML:
<%@ Page Inherits="MiNamespace.Articulos.VerArticulo" assembly="elquesea" %>
<html>
<head>
<title></title>
...
</head>
<body>
<{aquí podría llamarse a un userControl que contiene la cabecera, por ejemplo }>
<h2><!-- AQUI EL TÍTULO DEL ARTICULO --></h2>
<div id="resumen">
<p><!-- AQUI EL RESUMEN SI LO HUBIERA --></p>
</div>
<div id="contenido">
<p><!-- AQUI EL CONTENIDO --></p>
</div>
<{ Aquí podría llamarse a un control que nos permita saber si el artículo tiene comentarios, por ejemplo, y mostrar un enlace a ellos si los tiene }>
<{ Y aquí llamamos a un userControl que contiene el pie }>
</body>
</html>
Entonces es de suponer que habrá una zona de administración de la web (vamos, el CMS) que me permita introducir un nuevo artículo (noticia, opinión o lo que sea). Cuando el "editor" termina de introducir un nuevo artículo se encuentra con dos botones:
- Guardar sin publicar: guardaria el artículo en la base de datos pero no lo publicaria, es decir, no crearía la pagina .aspx y el artículo no sería visible a los usuarios de la web. ¿Qué utilidad tiene esto? -> Permite tener artículos para publicar en otro momento, permite que se puedan tener artículos publicados y sin publicar, pero siempre almacenados en la base de datos, etc. (suponemos que en cada artículo de la tabla articulos de la base de datos habrá un campo "publicado" de tipo bit que permita saber si un artículo está publicado o no, además de otros que indiquen si se pueden hacer comentarios, etc).
- Guardar y publicar: guarda el artículo en la base de datos, y además, abre el archivo .plantilla correspondiente (¿como saber cual es el que corresponde a los artículos? -> puedo haberlo establecido en un archivo de configuración de la web (.config)). Pues eso, que abre el archivo (como si fuera un archivo de texto que de hecho lo es), introduce el contenido (título de la página, título del artículo, resumen si lo hubiera, el artículo en sí...) en los lugares correspondientes y lo guarda en la carpeta "artículos" de la web como "xxxxx.aspx", donde xxxxx es el nombre que nos apetezca, por ejemplo el código del articulo en la base de datos (notar que hay que tener permisos de escritura en la carpeta "articulos").
Las ventajas de todo esto, porque alguien puede decir "ya, listo, pero si tengo por ejemplo un control en la pagina que tiene que acceder a la base de datos para ver si hay comentarios, hay que acceder a la base de datos de todas maneras". La respuesta es sí, pero no es lo mismo traerse un simple escalar, o cosas pequeñas, que un artículo entero, más aún si viene de un ineficiente campo tipo texto, con lo que tanto el servidor de bases de datos como el de http van a sufrir mucha menos carga, dando lugar a que todo vaya mucho más fluido (porque en localhost todo funciona muy bien, pero cuando hablamos de sitios web reales con muchas visitas, y/o shared hosting en muchos casos, entonces vienen las sorpresas, así que mejor prevenir que curar..., es como los que se empeñan de hablar del "modelo de datos desconectado" y soltar las ventajas de los DataSet y a almacenarlos sin pudor en ¡variables de sesión!, ??!!, en aplicaciones windows estará muy bien, pero en aplicaciones web siempre es más recomendable tomar el DataReader y a correr...
).
En fin, que ya deliro, espero que haya servido de ayuda...