miércoles 30 de mayo de 2007

Rewriting en .NET (IV)

Cuarta y última entrega del artículo. Terminaremos con la arquitectura de un proyecto de ejemplo y los problemas más frecuentes con los que os podéis encontrar durante el desarrollo.

La arquitectura del proyecto de ejemplo

Prerrequisitos

Necesitaremos únicamente el Framework 2.0 y cualquier versión de Visual Studio. En caso de optar por atacar un Sql Server, cualquier versión del mismo será válida.


Base de datos

Para su uso inmediato en cualquier entorno, la aplicación ataca una base de datos Access.

Para cambiar y hacer que la aplicación ataque una base de datos SQL, incorpora scripts de creación tanto de la base de datos como de los stored procedures y tablas necesarios más el código comentado en la capa de datos para el acceso a los mismos.


Código

Capa de datos. Un DataManager más las entidades de negocio usadas
.
Capa de negocio. Manager para la generación de menús. Módulos y clase ReWriter. Controles web necesarios.

Utilidades. Clase vertical de utilidad para distintas tareas rutinarias de la aplicación. ( eliminación de acentos, etc.)

UI. Interfaz de usuario con las páginas del proyecto, una página default.aspx de entrada y una única página, productos.aspx, de captura de todas las peticiones.

Css y Skins mínimos para la interfaz de usuario


Web.config

ConnectionStrings de la aplicación, tanto para SQL Server, como para Access.

Creación de secciones de configuración.

Declaración de módulos.
Reglas de reescritura tanto para recursos que constituyan páginas aspx, como para cualquier otro tipo de recurso, css, js, imágenes…)
AppSettings con las claves de la aplicación. Sólo se usa una para determinar la Url del dominio.IMPORTANTE: Tendréis que cambiarla con la url donde vayáis a correr la aplicación.


Por ejemplo:
Por defecto la clave y su valor son:

<appSettings>
<add key="UrlServidorWeb" value="http://localhost:2314/WebRewriter" />
</appSettings>


Si ejecutáis dentro del entorno del Visual Studio, deberéis cambiar el valor de la clave a
http://localhost:xxxx/WebRewriter donde xxxx será el puerto que os abra el servidor web incorporado al entorno de desarrollo del VS.
En caso de que instaléis la aplicación en un IIS local, el valor de la clave sería:

http://localhost/WebRewriter WebRewriter como nombre del directorio virtual. Si lo habeis creado con otro nombre, sería ese otro nombre.
En caso de que instaléis la aplicación en un IIS en algún dominio o tengaís dns apuntando al mismo, el valor de la clave sería:

http://www.midomino.net/WebRewriter donde WebRewriter sería el nombre del directorio virtual. Si lo habéis creado con otro nombre,usaréis ese otro nombre.

Detalles de posicionamiento en buscadores

-Hay que controlar del número de páginas “falsas” que generaremos; sites pequeños con miles de páginas, llamarán demasiado la atención y probablemente serán penalizado tarde o temprano. Google no es tonto, y si se puede hacer esto, es porque lo permite.


-Sacar el id que usaremos para pasarlo como parámetro a las páginas finales reales fuera del nombre de fichero final (html o aspx). Es mejor que figure como un directorio más dentro del path a que forme parte del nombre de la página “falsa”.


-Supresión de espacios, cambiados por _ o por + en cualquier parte del path, incluido el nombre final de la página


-Quitad acentos, diéresis o cualquier otro tipo de puntuación de las palabras. A las “arañas” de los buscadores les molesta mucho.

-Es mejor realizar modificaciones continuas, aun pequeñas e ir aumentando el número de páginas que se encuentran las arañas de Google en cada visita poco a poco, a crear mucho contenido de golpe, de una sola vez, y que luego no haya ninguna variación en tiempo. Pequeños “trucos” serían algo así como crear un apartado de noticias que fuésemos actualizando a menudo, o algún otro tipo de entrada similar son bastante efectivos.

-Crear un Sitemap. Google nos proporciona además herramientas para los administradores Web para la gestión del posicionamiento. Más información la podéis encontrar en
http://www.google.es/support/webmasters/

Es importante, situarlo lo más arriba posible en la página, ahora hablo de la resultante. Utilizad Capas (div) si es preciso. Las arañas de los buscadores leen linealmente, son vagas y se cansan pronto por lo que si vuestros enlaces están al final de páginas inmensas, tenéis probabilidades de que no lleguen hasta el final si no encuentran algo más por el camino.


-Importante también el uso de controles de navegación, como el sitemappath. Son más enlaces que cargamos en las páginas.


-Existen diversos manuales sobre el tema como Hacks de Google:


Herramientas

Expresiones regulares
Entre otros programas, RegexDesigner. Intuitivo, sencillo y, pudiendo verificar tanto “matchs” obtenidos como “Replaces” a efectuar.

Analizadores Web

Decir antes de nada, que no me dedico a reposicionar páginas en buscadores, pero siempre es bueno tener un control para evitar sorpresas en fases de desarrollo avanzadas, por lo que tener unos mínimos recursos a mano cuando nos embarcamos en un proyecto de este tipo nunca está de más.


En principio, todos los analizadores que añado corren bajo entorno Web, no he probado aún ninguna aplicación de escritorio sobre el tema. Hecho en falta, alguna que realmente haga una búsqueda recursiva de todas y cada una de las páginas saltando entre ellas y genere algún report general que nos dé más pistas.


http://tools.summitmedia.co.uk/spider/
Muy buena

http://www.seoforum.no/


Enlaces de interés


MSDN

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/urlrewriting.asp

http://www.microsoft.com/spanish/msdn/articulos/archivo/020604/voices/URLRewriting.asp#urlrewriting_topic4


Web.config

http://msdn2.microsoft.com/es-es/library/ms178685(VS.80).aspx


Varios

http://www.aspnetresources.com/blog/validation_scare.aspx


Filtros para Rewriting

http://www.iismods.com

http://www.qwerksoft.com


Expresiones regulares

http://www.sellsbrothers.com

http://bulma.net/body.phtml?nIdNoticia=770&nIdPage=2

PD: Como Santi está muy perro para publicar él la última parte del artículo, me ha pasado el marrón a mi... eso sí... el formato es todo suyo, porque no me ha dejado hacerlo a mi manera :P.

PPD: El proyecto de ejemplo está pendiente de colgar...