WP7.5 Mango: Tonos personalizados en Windows Phone Mango.

Después de algo más de casí cuatro años sin pasar por este blog, que ya ni me acordaba, pues he decidido añadir un nuevo artículo y darle algo de más actividad. Está vez sobre la nueva actualización “Mango” para Windows Phone 7 (WP), concretamente sobre los tonos personalizados.

Bien, tras trastear un poco, para el que no sepa y quiera hacerlo se realiza de la siguiente manera. Antes decir que tienen que tener tres condiciones el tono:

  1. Longitud de 39 segundos (Ni 38 ni 40) 39″ clavados.
  2. Mp3 o WMA.
  3. No esté protegido por Copyright.

Pues manos a la obra:

  • Cogemos nuestro archivo mp3 o wma y con un editor (ej.: Audicity) seleccionamos la parte de 39″ que será nuestro tono.
  • En audicity, vamos al menú Archivo > Exportar selección
  • Ahora viene lo importante, en Audicity te sale una ventanita para escribir la información del archivo, los Metadatos, y en el apartado “Género” escribimos “RINGTONE”, y guardanos.
  • Abrimos ZUNE, añadimos (arrastrando de la carpeta encima de Zune) nuestro tono y sincronizamos con el Telefono.
  • Cogemos el teléfono y nos vamos a Configuración > tonos y sonidos. En Tono pulsamos sobre el que está seleccionado para que aparezca la lista de tonos disponibles. Ahora aparecerá arriba del todo como “Personalizar” y debajo de este el nombre de nuestro tono. :). Seleccionamos y ya tenemos nuestro móvil un poco más personalizado.

 

Microsoft Windows Longhorn se llamará Windows Server 2008

Unos días antes de lo previsto y a causa de un descuido ya corregido en la página de Microsoft France, ya se conoce el nombre que adoptará comercialmente el próximo sistema operativo para servidores de Microsoft actualmente conocido como Windows Longhorn, el cual será Windows Server 2008.

Esta semana se celebra la conferencia WinHEC 2007, en la que Microsoft ha revelado el nombre final para su sistema operativo orientado a servidores, cuyo nombre clave hasta ahora había sido “Longhorn”. Windows Server 2008 será el próximo sistema operativo para profesionales de las Ti, y se espera que vea la luz a finales de este año. Actualmente está en su fase Beta 3, y se espera que tendrá 4 ediciones diferentes: web, standard, enterprise y datacenter. Estará basado en la arquitectura de Windows Server 2003, pero algo más automatizado.


Windows Server 2008 debería ser anunciado oficialmente esta semana en la Windows Hardware and Engineering Conference (WinHEC).

Membresía de ASP.NET 2.0 (I)

Introducción


La versión 2.0 de ASP.NET implementa un sistema de membresía mediante el cual es posible administrar y almacenar datos de usuarios, datos como nombre de usuario y password (Credenciales), funciones (Roles). Para poder hacer uso de ello, ASP.NET 2.0 nos ofrece una serie de clases para la utilización de dicha información. Decir también que ASP.NET, en esta versión 2.0, trae consigo la autenticación de formularios, por el cual podremos dar acceso a partes de nuestra aplicación web a usuarios logueados o usuarios logueados que pertenezcan a un determinado Rol (Administrador).


Sistema de membersía (MemberShip) y clases


El sistema de membresía está basado en un almacén de datos que permite albergar datos como usuarios, credenciales, nombre de usuarios y contraseñas, Roles, Profiles, preferencias de cada usuario en la aplicación web y otros datos necesarios. ASP.NET 2.0 ofrece soporte para distintos almacenes de datos, como son SQL Server o Active Directory. Nosotros nos centraremos en SQL Server y cómo configurar nuestros propios perfiles de proveedores personalizados, para añadir soporte a otros almacenes.


Para ello .NET Framework 2.0 nos ofrece una serie de clases para poder manejar la información de miembros, roles y perfiles. Estas clases son:



  • SQLMemberShipProvider (Para la gestión de miembros): Permite gestionar la información de los miembros en una aplicación ASP.NET con SQL Server como servidor de base de datos.
  • SQLRoleProvider (Para la gestión de roles): Permite gestionar la información de los roles de miembros en una aplicación ASP.NET con SQL Server como servidor de base de datos.
  • SQLProfilesProvider (Para la gestión de perfiles): Permite gestionar la información de los perfiles en una aplicación ASP.NET con SQL Server como servidor de base de datos.

Donde mejor puede ver un ejemplo es en el archivo machine.config alojado en el carpeta C:WINDOWSMicrosoft.NETFramework2.0.****CONFIG (**** corresponde a la versión que tengas instalado del Framework, lo normal que sea 2.0.50727), y ver como están configurados dichos proveedores, abajo pongo como estaría configurado el proveedor por defecto llamado “AspNetSqlMembershipProvider”:

<membership>
<
providers>
<
add name=AspNetSqlMembershipProvider
type=System.Web.Security.SqlMembershipProvider,
System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
connectionStringName=LocalSqlServer
enablePasswordRetrieval=false
enablePasswordReset=true
requiresQuestionAndAnswer=true
applicationName=/
requiresUniqueEmail=false
passwordFormat=Hashed
maxInvalidPasswordAttempts=5
minRequiredPasswordLength=7
minRequiredNonalphanumericCharacters=1
passwordAttemptWindow=10
passwordStrengthRegularExpression=“”
/>
</providers>
</membership>

 <profile>
<providers>
<add name=AspNetSqlProfileProvider
connectionStringName=LocalSqlServer
applicationName=/
type=System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
” />
</providers>
</profile>

<roleManager>
<providers>
<add name=AspNetSqlRoleProvider
connectionStringName=”LocalSqlServer
applicationName=”/”
type=”System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a/>
<add name=AspNetWindowsTokenRoleProvider
applicationName=”/”
type=”System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a
/>
</providers>
</roleManager>


Este proveedor se conecta con una instancia del SQL Server Express, y como se puede apreciar es importante la propiedad name donde se define el nombre de la cadena de conexión, en está cadena “LocalSqlServer”, si observamos de nuevo los proveedores anteriores todos tienen en comun una propiedad connectionStringName, cuyo valor corresponde con el valor del nombre de la conexión, ¡E ahí la cuestion! jejeje… Fundamental este punto


<connectionStrings>


      <add name=LocalSqlServer


connectionString=data source=.SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true


providerName=System.Data.SqlClient />


</connectionStrings>


Destacar también en la cadena de conexión “…aspnetdb.mdf…”. Este archivo al que hace referencia dicha cadena es la base de datos donde se almacena toda la información y referencia antes nombrado (Usuarios, Profiles, Roles, etc).


La configuración Web de ASP.NET


Visual Studio 2005 incorpora una herramienta llamada Configuración de ASP.NET la cual permite de forma sencilla administrar y crear la base de datos ASPNETDB.MDF. ¿Como podemos acceder a esta herramienta?


Muy sencillo, si tienes un proyecto ya creado o si no lo ha creado aun, ejecuta Visual Studio, vaya a Archivos > Nuevo > Sitio Web, dale un nombre al proyecto y aceptamos. Para entrar en dicho configurador, se puede acceder de dos formas diferentes, una sería en la barra de menus Sitio Web > Configuración de ASP.NET o desde el explorador de soluciones, como se muestra en la image siguiente.



Tras pulsar sobre dicho botón se levantara una página de configuración de ASP.NET, tal como se muestra en la imagen siguiente.



Como puede observar, dicha herramienta se divide en tres zonas bien diferenciadas que describo a continuación:



  • Seguridad

Cuando creamos una aplicación web nos interesa que tenga una cierta seguridad en toda la aplicación o en zonas concretas de esta ya que tenemos una serie de recursos que deseamos proteger y solo sean accesibles por tipo de usuario especificado. ASP.NET utiliza un sistema de seguridad que le permite restringir el acceso a cuentas de usuario específicas o a las funciones (Roles) a las que pertenecen las cuentas de usuario. Con la ficha Seguridad, puede administrar cuentas de usuario, funciones y reglas de acceso para el sitio Web. Antes de utilizar la ficha Seguridad por primera vez, utilice el Asistente para la configuración de seguridad para configuraciones de seguridad básicas para el sitio Web.



  • Aplicación

Esta zona se utiliza para administrar los valores de configuración del sitio y la aplicación Web utilizados con frecuencia.


Utilizar la ficha Aplicación para administrar lo siguiente:



  • Pares nombre/valor de la configuración de la aplicación.

La configuración de la aplicación consiste en pares nombre/valor que representan el texto de los valores configurables en la aplicación Web. Utilizar las configuraciones de la aplicación para almacenar la información de configuración personalizada, como las rutas de acceso a archivos, las direcciones URL del servicio Web XML, normalmente utilizada como texto, o cualquier información que desee mantener en una ubicación central y que pueda cambiar con facilidad.


Importante La configuración de la aplicación se almacena en el archivo como texto sin formato. Por lo tanto, debe tomar las medidas de seguridad apropiadas cuando utilice la configuración de la aplicación. No almacene información confidencial como nombres de usuario, contraseñas o cadenas de conexión de la base de datos en la configuración de la aplicación.



  • Configuración del Protocolo simple de transferencia de correo (SMTP).

Si el sitio Web requiere la capacidad de enviar un correo electrónico (por ejemplo, para enviar una contraseña a los usuarios), debe especificar el servidor SMTP que utiliza su sitio.



  • Estado de la aplicación.

Puede poner su aplicación fuera de conexión (apagarla) para realizar el mantenimiento o poner en conexión una base de datos nueva de Microsoft SQL Server Express.



  • Depuración y seguimiento.

La depuración y el seguimiento le permiten diagnosticar y corregir problemas con la aplicación Web, con la intención de utilizarlos durante el desarrollo. Al permitir la depuración, las páginas del sitio Web se compilan con información que los depuradores de .NET Framework o de Microsoft Visual Studio pueden utilizar para recorrer su código. Al permitir el seguimiento se genera información acerca de solicitudes Web individuales, encabezados HTTP que se envían con las solicitudes, el estado de los controles de la página y otros detalles acerca del procesamiento de páginas.



  • Proveedor

La zona Proveedor sirve para administrar el modo en que ASP.NET almacena datos para las características de la aplicación, como cuentas de usuario, funciones y otros valores de configuración.


ASP.NET utiliza clases de proveedores para administrar el almacenamiento de los datos para varias características, como la administración de suscripciones y de funciones. Una clase de proveedor es un componente que expone una funcionalidad ASP.NET específica, como la administración de la suscripción de las cuentas de usuario. Todas estas características de la aplicación requieren el almacenamiento de los datos. Aunque todas las clases de proveedores realizan las mismas características de la aplicación, cada proveedor puede almacenar datos de un modo distinto. Por ejemplo, las distintas clases de proveedor para la suscripción de ASP.NET pueden almacenar información de la cuenta de usuario de los siguientes modos:



  • En una base de datos de Microsoft SQL Server.
  • En el servicio del directorio Microsoft Windows Active Directory.
  • En una base de datos de usuario personalizada.

Todas estas clases de proveedor realizan el mismo grupo de tareas principales para administrar cuentas de usuario y usted interactúa con las clases de proveedor de su aplicación del mismo modo.


Recomiendo que antes de entrar de lleno en la aplicación de configuración de ASP.NET se compienze por el asistente, este se encuentra dentro de la ficha de seguridad y entraríamos en una serie de pasos, 7 para ser exactos, pasando desde el metodo de acceso (Windows o Formulario), configuración del proveedor, Definición de Roles (funciones), por ejemplo, es muy habitual tener alguien que administre nuestra aplicación web por lo que se suele crear el rol “Administrador”, agregar usuarios y definición de reglas de acceso, aquí es donde se decide donde o que zonas están permitidas para unos usuarios concretos y cuales no.


Hasta aquí todo bien, ahora si cerramos el configurador de ASP.NET, y nos vamos al explorador de soluciones y refrescamos veremos aparecer en la carpeta App_Data el archivo ASPNETDB.MDF, es la base de datos que alojará todos nuestros futuros usuarios, nuestros roles o funciones, personalización de la aplicación de cada usuario, etc. También podemos crear una base de datos o utilizar otra base de datos que haga la misma función, pero esto lo comentaré en un proximo artículo donde entraré en más detalle.



Ya con todo esto, podemos hacer uso de los controles de Login, CreateUser, LoginView, etc.


Espero que os haya servido de ayuda este artículo. Proximamente pondré la segunda parte de Membresía. Hasta pronto!!


 

Visual Studio Code Name "Orcas" CTP Enero

Microsoft ya ha puesto a disposición de los desarrolladores la nueva versión de Visual Studio, con nombre en clave “Orcas” CTP de enero. Ocupa unos 3.5 Gigas, en el enlace que os pongo se puede bajar en 8 partes, 700 megas aproximadamente las 7 primeras y la última 50 Mb.


Con esta nueva entrega se pretende crear rapidamente aplicaciones inteligentes conectadas para la nueva experiencia del usuario, así como permitir a cualqier organización (Empresa) crear rapidamente proyectos más seguros, más manejables, y más confiables aprovechando la tecnología de Windows Vista y Office 2007.


System Requirements



  • Sistemas Operativos Soportados: Windows Server 2003; Windows XP Service Pack 2

  • Software Requerido:


  • Credenciales VPC:
    Después de que hayas descargado la imagen Base de Orcas CTP y las diferentes ocho partes a tu maquina local puedes lanzar dicha imagen en Virtual PC o Virtual Server y usuar las siguientes credenciales:



    • Nombre de usuario: Administrator
    • Password: P2ssw0rd

  • NOTA: Microsoft recomienda que despues de la instalación abras la sesión y cambias el password del administrador.

  • Procesador: 1.6GHz Pentium III+

  • RAM: 1 GB RAM*
    * La cantidad de memoria RAM depende de tu equipo local. Puede usar el administrador de tareas para identificar cuanta RAM física está disponible en tu máquina.


 Enlace:


http://www.microsoft.com/downloads/details.aspx?familyid=1ff0b35d-0c4a-40b4-915a-5331e11c39e6


 

Evento Onobanet: ¿Qué trae .NET 3.0?

El 22 de Febrero MSDN y OnobaNET, traen a Huelva el evento de lanzamiento del .NET 3.0. Tendremos la oportunidad de ver en detalle las nuevas funcionalidades del Microsoft .NET Framework 3.0.



  • Windows Presentation Foundation – el subsistema de presentación unificado para Windows, con el que crear una nueva generación de interfaces de usuario sobre .NET.

  • Windows Communication Foundation – desarrollo de aplicaciones distribuidas en nuevos modelos de comunicación como servicios web seguros, fiables y transaccionales capaces de interoperar a través de distintas plataformas.

  • Las capacidades de definición de flujos de trabajo declarativos que estarán disponibles para los desarrolladores a través del Windows Workflow Foundation, incluido en el .NET Framework 3.0.

  • Y por último veremos Sharepoint 2007, una plataforma única, integrada y ampliable que permite construir aplicaciones web con funcionalidad avanzada de visualización, búsquedas o gestión de contenidos entre otras.

    ¡Y todo ello desarrollando de principio a fin una aplicación de la conocida empresa ficticia De Hinojo Software!

 Aquí os pongo el Cartel del evento:




La agenda será la siguiente:


 


9:30 Registro.
10:00 Introducción.
10:30 Desarrollo de la capa de negocio con Windows Communication Foundation y Windows Workflow Foundation.
11:20 Creando una web pública con Microsoft Office SharePoint Server.
12:10 Construcción del cliente rico con Windows Presentation Foundation.
13:00 Cierre.

Vista previa de archivos VB, C# y C++ en Windows Vista

Como bien sabemos, en la nueva versión del sistema operativo, Windows Vista, trae ahora la previsualización de vista previa, sin tener la necesidad de instalar el software para ver dichos archivos, es decir, supongamos que nos envian por email un documento de word y no tenemos instalado Microsoft Word, tan solo descargamos dicho archivos adjunto, y teniendo activado el “Panel Vista previa” se puede ver dicho contenido, así como una presentación de powerpoint, un archivo de texto, etc. Bien no?


Y si pudieramos previsualizar el contenido los archivos VB, CSharp o C++ de nuestros proyectos sin necesidad de abrir Visual Studio? Mola no?


Lo primero que debemos de mirar es si tenemos activado el “Panel de Vista previa”, como se ve en la siguiente imagen:


Panel de vista previa


Ahora debemos de registar la siguientes claves:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT.csshellex{8895b1c6-b41f-4c1c-a562-0d564250836f}]
@=”{1531d583-8375-4d3f-b5fb-d23bbd169f22}”

[HKEY_CLASSES_ROOT.vbshellex{8895b1c6-b41f-4c1c-a562-0d564250836f}]
@=”{1531d583-8375-4d3f-b5fb-d23bbd169f22}”

[HKEY_CLASSES_ROOT.cppshellex{8895b1c6-b41f-4c1c-a562-0d564250836f}]
@=”{1531d583-8375-4d3f-b5fb-d23bbd169f22}”

[HKEY_CLASSES_ROOT.hshellex{8895b1c6-b41f-4c1c-a562-0d564250836f}]
@=”{1531d583-8375-4d3f-b5fb-d23bbd169f22}”


En vez ejecutar la aplicación Regedit.exe y escribir todas estas claves, puedes crearte una aplicación o una secuencia de comandos sencilla que enumere todas las extensiones que haya en HKEY_CLASSES_ROOT. También puedes crearte un archivo de texto y copiar estás claves, no olvides escribir también la primera línea “Windows Registry Editor Version 5.00”, una vez guardado los cambios se cambia la extesión del archivo por “.reg” y luego ejectuamos dicho archivo y combiamos las claves.



Espero que os haya servido de utilidad. SALUDOS!!!

Pasando Valores entre Paginas

Cuando desarrollamos un proyecto web y empezamos a agregar páginas y se da el caso que necesitamos enviar datos de una pagina otra pagina nos encontramos un problema o se suele hacer la pregunta ¿Como paso estos datos a otra pagina?.


Bien, hay varias formas de consumir o enviar datos a otras paginas, esto se debe al modelo de postback que contempla ASP.NET. Aquellos programadores que conocen ASP, pudieron utilizar el control granular sobre el elemento form, resumiendo, se podía decir a donde el form debería enviar su contenido, así como el método a utilizar (POST/GET) y el número de los elementos form en una página.


En ASP.NET el metodo prederteminado de envio es POST, y que un valor escogido en la page1, sea visto en la page2.


Para el siguiente ejemplos he creado un proyecto con dos paginas “Default.aspx” (Pagina que enviará la información) y “Recepcion.aspx”.


default.aspx


<%@ Page Language=”VB”AutoEventWireup=”true” CodeFile=”Default.aspx.vb” Inherits=”_Default” %>


<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.1//EN” “http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”>


<html xmlns=”http://www.w3.org/1999/xhtml”>
       <
head runat=”server”>


              <title>Untitled Page</title>


       </head>


       <body>


       <form id=”form1″ runat=”server”>


              <asp:ScriptManager ID=”ScriptManager1″ runat=”server” />


              <div>


                     <asp:TextBox ID=”TextBox1″ runat=”server”></asp:TextBox>


                     <asp:Button ID=”Button1″ runat=”server” Text=”Enviar” />


              </div>


             </form>


</body>


</html>


En Default.aspx tendremos dos objeto, uno de tipo textbox y otro de tipo Button.


recepcion.aspx


<%@ Page Language=”VB” AutoEventWireup=”false” CodeFile=”Recepcion.aspx.vb” Inherits=”Recepcion” %>


<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>


<html xmlns=”http://www.w3.org/1999/xhtml” >


<head runat=”server”>


<title>Pagina sin t¡tulo</title>


</head>


<body>


<form id=”form1″ runat=”server”>


<div>


<asp:Label ID=”Label1″ runat=”server” Text=””></asp:Label>


</div>


</form>


</body>


</html>


En la página de recepción tendremos un solo objeto de tipo Label.


Puesto que ASP.NET nos permite almacenar elementos en el estado de la sesión actual del proceso, recordemos que HTTP es un protocolo sin estado y que por defecto el servidor no almacena las variables que definamos dentro de cada página o cualquier clase, pero si almacenamos valores dentro de una variable Session, está estará disponible para todas nuestras páginas durante el tiempo que dure la sesión actual (Hasta que cerremos el Browser), este es el método más utilizado.


Utilizando Cross Page


Esta es una nueva característica de ASP.NET 2.0 que nos permite especificar el destino del postback de la página de una manera muy sencilla, para así poder después consumirla.


A continuación se muestra el código asp de la página Default.aspx el código que se ha añadido al objeto Button.

<%@ Page Language=”VB” AutoEventWireup=”true” CodeFile=”Default.aspx.vb” Inherits=”_Default” %>

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.1//EN” “http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”>

<html xmlns=”http://www.w3.org/1999/xhtml”>

<head runat=”server”>

<title>Untitled Page</title>

</head>

<body>

<form id=”form1″ runat=”server”>

<asp:ScriptManager ID=”ScriptManager1″ runat=”server” />

<div>

<asp:TextBox ID=”TextBox1″ runat=”server”></asp:TextBox>

<asp:Button ID=”Button1″ runat=”server” Text=”Enviar” PostBackUrl=”~/Recepcion.aspx” />

</div>

</form>

</body>

</html>

 

Para que la pagina “Recepcion.aspx” reciba o consuma la información pasa por “Default.aspx” se añade el siguiente código:

 

Partial Class Recepcion

Inherits System.Web.UI.Page

 

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

If Page.PreviousPage.IsCrossPagePostBack Then

Dim Txtbox As TextBox = CType(Page.PreviousPage.FindControl(“TextBox1”), TextBox)

If Txtbox IsNot Nothing Then

Me.Label1.Text = Txtbox.Text

End If

End If

 

End Sub

 

End Class

 

Lo que hace este código es buscar un control cuyo ID es “TextBox1” en la página anterior gracias al método FindControl, pero tras a ver

comprobado antes que con la propiedad IsCrossPagePostBack es True y así consumir la información que contiene.

 

Para agregar la propiedad IsCrossPagePostBack hay que agregar la directiva siguiente:

 

<%@ PreviousPageType VirtualPath=”~/Default.aspx” %>

 

a la página de recepción o destino.

 

Con está directiva también se puede hacer una propiedad pública en la página de origen (default.aspx).

 

Partial Class _Default

Inherits System.Web.UI.Page

 

Public ReadOnly Property Envio() As String

Get

If Me.TextBox1.Text.Length > 0 Then

Return Me.TextBox1.Text

Else

Return Nothing

End If

End Get

End Property

 

End Class

 

Y en la pagina de “Recepcion” ponemos este otro código:

 

Partial Class Recepcion

Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

If Page.PreviousPage.IsCrossPagePostBack Then

‘Dim Txtbox As TextBox = CType(Page.PreviousPage.FindControl(“TextBox1”), TextBox)

‘If Txtbox IsNot Nothing Then

‘ Me.Label1.Text = Txtbox.Text

‘End If

Me.Label1.Text = Me.PreviousPage.Envio()

End If

End Sub

End Class

 

Os preguntareis como puede ser esto posible, la respuesta está en que cuando especificamos que un control va a tener un destino

Postbackurl, estamos añadiendo un nuevo campo oculto dentro de la página, el cual va a almacenar información sobre la misma

para poder ser accedida por la página de destino a traves de su propiedad PreviosPage, la cual tiene una propiedad

IsCrossPagePostBack que nos va a indicar si se genero el Cross Post Back o no.

 

De esta forma podemos optimizar el traspaso de informacion entre paginas, siempre y cuando el escenario lo permita conveniente

Saludos.

 

 

Nueva versión de Windows Mobile: Crossbow

Microsoft está preparando dos mejoras importantes para los dispositivos móviles. La primera de ellas con nombre en clave se llama Windows Mobile Crossbow (todavía basado en el CE 5.x de Windows) y la segunda mejora y con nombre en clave Windows Mobile Photon (Basado en el nuevo Windows CE 6.x).


Windows Mobile Crossbow


Windows Mobile 5.0 es el SO actual de los usuarios que utilizan dispositivos móviles de Windows, sin embargo la siguiente opción es Crossbow.


Pieter Knook, Sr VP de Microsoft ha comentado que el plan de Microsoft para lanzar una mejora a su plantaforma móvil anulamente es bastante interasante y podría significar un nuevo SO con cada mejora anual. Knook ha comentado que Crossbow tendrá un gran acoplamiento con Office 2007 y Exchange 12, así como incluirá la versión móvil Office Communicator y una herramienta de mensajería para las empresas.


 


 

WebParts con ASP.NET 2.0 (II) – Comunicación entre controles

Introducción :. 

Para que exista comunicación tiene que haber al menos dos partes implicadas, como bien sabemos, debe de a ver un emisor y un receptor, hasta aquí estamos de acuerdo. En el caso de los controles, uno tiene que actuar como comunicador (provee de datos a otros controles, y otro(s) que actua(n) como receptor(es) de la información (es decir, son consumidores "Receptores"). Claro está que para entre ellos haya comunicación fluida es necesario que todos hablen el mismo idioma. Dicho idioma, en este tipo de comunicación entre controles será un interfaz, que todos los controles implicados deben conocer, y que el encargado de proveer los datos debe implementar.

Definiciendo un interfaz (Idioma) :. 

Para que pongamos en comunicación dos o más controles hay que definir un interfaz que se adapte a nuestras necesidades. Por ejemplo, si tenemos un control calendario y otro que muestre las noticias de un dia determinado, podemos hacer que cuando se cambie la fecha en el calendario se actualice el listado de noticias. Por tanto tendremos un proveedor de datos (control "Calendario"), un consumidor (Control "Noticias"), y un interfaz que nos permitirá enviar la fecha seleccionada desde el proveedor a los consumidores.

Codígo de la interfaz:

Interfaz

Como podeís ver es realmente simple, aunque nada nos impide desarrollar interfaces mucho más complejos para intercambiar listas de datos,  tipos complejos.

Proveedor de datos :.

Ya definido el interfaz tenemos que convertir nuestro control "Tutoriales_WUCCalendario" en un proveedor de datos. Para ello tenemos que implementar dicho interfaz. El código es bastante sencillo, simplemente se devuelve la fecha seleccionada en el calendario, o la fecha del día si no hay ninguna. (vease imagen)Implementación IDataFecha

Además, de alguna forma hay que pasar está información a los consumidores. Y esto se consigue implementado un método público que devolverá un objeto de tipo "IDataFecha". A este método tenemos que añadirle el atributo:

<ConnectionProvider("Fecha")>

De hecho es el atributo lo que hace que este método se el que se utilice para pransmitir los datos. El nombre del método es indiferente, en este ejemplo le he puesto "Fecha". Sin embargo el parámetro "Fecha" del atributo si que tiene importancia, ya que es lo que se mostrará en pantalla cuando vayamos a definir una conexión. Conviene, por tanto, que tenga un valor que describa el tipo de los datos a intercambiar (por ej.: "Lista de datos", "Fecha seleccionada", etc).

Por último, el método proveedor en sí (que en nuestro caso se llama "Provider") es bastante simple, ya que se limita a devolver un objeto que implementa el interfaz "Idatafecha". En este caso nos devolvemos a nosotros mismos (es decir, el control "Tutoriales_WUCCalendario" ) puesto que implementa dicho interfaz.

Consumidores de datos :.

Definidos el interfaz y el proveedor de datos. Sólo necesitamos establecer quiénes van a consumir dichos datos. En nuestro caso va a ser control "CWNoticiasDefault.ascx", al que haremos algunas modificaciones. En primer lugar tenemos que implementar un metodo consumidor, que recibirá como parámetro un objeto de cualquier tipo siempre que implemente el interfaz "IDataFecha". Dicho método, al igual que en el caso del proveedor, puede tener cualquier nombre ya que el atributo que determita qué método se usará la comunicación es:

<ConnectionConsumer("Fecha")>

En nuestro caso el método se llama "GetInterface". Si que es importante (aunque no obligatorio) que el nombre del proveedor y consumidor coincidan, ya que es el dato que nos permitirá establecer la comunicación entre ellos.

La implementación del método en sí es sencilla. Simplemente tomamos el objeto recibido como parámentro y guardamos el valor de su propiedad "Fecha" en una variable privada. Dicha variable la usaremos en el evento "OnPreRender" . Si es nula devolveremos las noticias del día actual. Sí no es nula usaremos la fecha contenida en la propiedad "Fecha" del interfaz para mostrar las noticias de ese día.

Conectado controles :.

Ya tenemos los tres elementos principales, Interfaz común, proveedor de datos y un consumidor. Ahora tenemos que hacer que hablen entre sí. Para ello tenemos que establecer una conexión entre ellos. Hay tres formas de hacerlo: en tiempo de diseño, en tiempo de ejecución, y en tiempo de ejecución mediante programación.

En tiempo de diseño las conexiones se definen mediante la propiedad "StaticConnection" del control "WebPartManager". Como podemos ver en la imagen, se definen con el editor de conexión.

En la imagen, podemos apreciar lo que habría que introducir en cada uno de los campos para establecer una comunicación entre el control "WUCalendario" y el control "CWNoticiasDefault".

En tiempo de ejecución  las conexiones se definen gracias al control "ConnectionZone". Basta con arrastrar dicho control dentro de la pagína para empezar a establecer comunicaciones entre controles. Al añadir este control nos apareceré un nuevo modo de página disponible, el modo "Connect". Por tanto, para poder establecer conexiones tendremos que activar dicho modo de página, para a continuación seleccionar la opción de menú "Conectar" del control que vaya a actuar.

Como vemos en está última imagen, el control ConnectionZone detecta los dos controles, y sabe quién es el proveedor y quienes son los consumidores, en este caso solo hay uno, el control de noticias. En la sección "Para" podemos seleccionar el control al que le pasaremos el valor de fecha. Seleccionamos "Sin titulo" que pertenece al control Noticias, y por último "Conectar" y VOILA!!! ya tenemos conectamos los dos controles.

Por último, siempre tenemos la posibilidad de establecer una comunicación en tiempo de ejecución mediante programación.