problemas caseritos en Web Application Projects... hoy Profiles

Cuando se liberaron los Web Application Projects (para saber más de WSP y WAP, revise esta entrada) para Visual Studio 2005, salieron a la luz algunos muertitos algunos bugs, los que fueron reportados, y que han sido listados y catalogados como: problemas caseritos conocidos con:

  1. Report Designer
  2. Profiles
  3. Declarative Typed DataSets (.xsd files)
  4. Conversion and Source Control
  5. Mobile Web Forms
  6. Using TFS Team Build
  7. Using TFS Source Control
  8. Starting a Web Service and another Project which uses the Web Service
  9. Installing on non-English Locales
  10. Refactoring will not work for Inline code

Para mayores detalles de los mismos, pueden revisar esta entrada: FAQ and Known Issues (Web Application Projects).

No se, si todos fueron corregidos con el VS2005 SP1, o ahora con la liberación VS2008. No voy hablar de todos, por que aún no se cruzan conmigo :@.

Hoy voy hablar acerca del soporte de Profiles. Y como pueden ver en el link anterior, hay 1,140,000 páginas aproximadamente como resultado que hablan de Profiles, así que no voy hablar mucho de ellos. Esta demás decir que cuando necesitas guardar ciertas preferencias del usuario con respecto a su perfil en la web, que si quiere la web en rosa o en amarillo patito, o quiere guardar la cantidad de resultados a mostrar cuando hace una búsqueda, Profiles se convierte en el mejor aliado, ya que te ahorra una pasta de tiempo en la implementación, sobre todo si te dan sólo unos meses para hacer una web, y con la ventaja que si más adelante te das cuenta que quieres personalizar profiles, cambiar el modelo de acceso a datos, cambiar el modelo a datos, pues lo haces y punto, para eso hay Custom Profiles. Pero hombre, que tampoco todo lo vas a meter a Profiles, que si cuál es el estado civil: casado, soltero, viudo,  bigamio, el número de hijos reconocidos, los hijos por reconocer, el teléfono, mobile, mail, ... y todos los datos que puede tener un contacto, estos son datos del contacto y deben estar en tu modelo de datos, y no hay mucha justificación para tenerlos en Profiles. Recuerden que cuando usamos Membership, Roles, Profiles, o WebParts, lo que hace aspnet_regsql.exe, es crear su propio modelo de datos, con sus propios stores procedures, y ahí esta la magia de arrastrar el control Login, y que ya funcione, aspnet_regsql.exe, ya hizo el trabajo macho :D.

No quise hablar de Profiles, pero era inevitable... ahora ya sabemos que son los profiles, y para que sirve. Recuerden que profiles, es como usar una variable de sesión, pero almacenado de manera persistente (en una base de datos), y que además lo tenemos strongly typed tipado, eso que pones un punto y te sale el nombre, el famoso intellisense. Por ejemplo si quiero guardar que pepito le gusta ver en la portada solo las noticias de la categoría rosa policial:

   1: Profile.CatPortada = "Policial";

Eso es para guardar el perfil de pepito, ahora en la portada sólo tengo que leer el valor de su Profile.

Esto va de las mil maravillas en un Web Site Projects. Y como dicen por acá, Profile (de la forma como lo conocemos en Web Site Projects), no existe en Web Application Projects. Ni con el VS2005 SP1, ni tampoco esta presente en VS2008.

Pero no es que, no sea un problema detectado. Dentro de las guías de migración de Web Site Projects a Web Application Projects, que fueron publicadas cuando se liberaron estas últimas para VS2005. Se recomienda el uso de un add-in llamado: ASP.NET WebProfile Generator, que habilita el acceso a los Profiles de ASP.NET (como lo conocemos en Web Site Projects), en los Web Application Projects. Como dice en la página esto es un add-in para VS2005, no lo he probado en VS2008, pero vi que daban el código fuente, así que imagino que no debe ser difícil adaptarlo.

Pero me gusto, y me quedo con esta solución, la propuesta planteada por Jon Galloway: Writing a custom ASP.NET Profile class. Y es crear una clase que herede de ProfileBase, agregar las propiedades que deseamos habilitar (lo que harías con el web.config), y en el web.config, sólo indicarle que el elemento Profiles herede de esta clase.

Es una manera simple, legible, y portable de habilitar Profiles (como lo conocemos en un Web Site Project) en un Web Application Project.

El código ejemplo esta en esta entrada: Writing a custom ASP.NET Profile class.

Saludos,

Published 29/2/2008 1:45 por Sergio Tarrillo
Archivado en: ,
Comparte este post:
http://geeks.ms/blogs/sergiotarrillo/archive/2008/02/29/75517.aspx