domingo, 28 de octubre de 2007

Acelerando el servicio Speedy (Aplicable a todas las velocidades, 200,400,600,1000Kbps)

Hola estimados lectores, como muchos ya saben el servicio de speedy a nivel nacional (Perú) esta teniendo muchas deficiencias, esto ah generado una molestia masiva increible y yo me sumo a la gran cantidad de personas que dejamos un reclamo formal acerca del pesimo servicio que nos brinda esta compania telefonica.

Estuve intestigando la causa del problema de Lentitud Agresiva de este servicio, y pude dar con la clave, al parecer los DNS (Domain Name Server) de telefonica estan supér saturados, no entra ni una conexion mas en esos servidores, para quienes tienen el servicio en sus casas y/o hogares sienten la molestia de demorarse en cargar las paginas que frecuentemente visitan.

Bueno, debido a mi molestia particular, eh buscado otras alternativas que me permitan hacer la velocidad de mi internet mayor aun a la que deficientemente me brinda esta compania telefonica, y eh dado con la siguiente solucion.

OpenDNS, es una compania que brinda servicio de DNS gratuitos para usos multiples sin fin, bueno esto consiste en cambiar el clasico DNS que nos proporciona la la compania de servicios telefonicos por los numeros ip fijos de esta compania quien nos brindara una velocidad mucho mayor a la que nos brinda el servicio Speedy, Magicamente, notaran la diferencia de velocidades de navegacion, los invito a probar esta configuracion que detallo mas adelante se que estaran mas satisfechos y sobre todo con una velocidad de navegacion mayor a la que brinda este deficiente servicio.

¿Como configuro el servicio de OpenDns?
Para empezar necesitan conocer algunos cosas basicas de windows, para poder ver su configuracion:
Vamos a hacer click derecho en el icono Mis sitios de red y elegimos la opcion Propiedades.
Enseguida se mostrara la siguiente ventana.

Pantalla 1

Una vez estando dentro hacemos click derecho en "Conexion de area local", y elegimos la opcion Propiedades.
Se mostrara la siguiente ventana.

Pantalla 2

Luego seleccionamos la opcion Protocolo Internet (TCP/IP) y hacemos click en el Boton Propiedades.
Enseguida se mostrara la siguiente ventana.

Pantalla 3

Bien, eh rellenado el fondo con color amarillo en los campos DNS Preferido y DNS alternativo, estos numeros que aparece en sus PC's son los Numeros de DNS que estan completamente saturados por esta compania, el truco consiste en cambiar el numero que alli figura por los siguiente...

DNS Preferido : 208.67.222.222
DNS Alternativo: 208.67.220.220
Esto quedaria exactamente asi..Pantalla 4Luego de este pequeño cambio, uds notaran la gran diferencia de velocidades entre el DNS que supuestamente pagamos :S y el DNS de OpenDNS, gratuito, imaginense, si por alqo que pagamos nos brandan este servicio, que seria de nosotros si adquirieramos un servicio similar gratuito en nuestro pais... Caos total.

Espero amables amigos lectores que els haya gustado el post.
Saludos a todos :)

Si necesitan mayor informacion aqui les dejo el Link de Configuracion de el servicio OpenDns (en Ingles)

Daniel Lazarte

jueves, 25 de octubre de 2007

Windows Server 2008 RC0, disponible para descargar

Hola amigos, ya esta disponible en el sitio web de Microsoft el beta 3 de la ansiada version de la familia de servidores windows server 2008 RC0.

Para descargar esta versión, solo tienen que visitar el sitio de descarga de Windows Server 2008, validar si quieren aprender primero, evaluarlo o solicitar un Product Key puesto que han recibido un DVD con el producto.

Lo interesante de "release candidate" 0, es que viene en ediciones estándar, empresarial, DataCenter, Web Server y para sistemas de 64 bits basados en Itanium; aquí tienen una descripción de cada una de las ediciones, no tan comparativa diría yo. Además, está disponible no solo en inglés, sino en español también, excepto la edición para Itanium.
Para conocer los requerimientos de este RC0, visiten esta página web y tengan presente los diferentes recursos que se ofrecen para conocer mas y aprender de Windows Server 2008:

Portal de aprendizaje de Windows Server 2008.
Guía de evaluación de Windows Server 2008. Es para el Beta 3, pero es un documento muy educativo.
Revisión técnica del producto, resumiendo características técnicas del Beta 3.
Laboratorios virtuales de Windows Server 2008 y de IIS7 (y algunos de IIS6).
Videos de demos, en inglés, en formato WMV, de algunas características de Windows Server 2008, como NAP y Server Core, entre otros.

Y si te estás preguntando por qué deberías instalar Windows Server 2008, tal vez este top 10, en inglés, te ayude a responder esa pregunta.

Yo ya lo estoy probando, asi que pronto escribire acerca de las bondades a prueba de este S.O.

Saludos.
Daniel Lazarte

martes, 23 de octubre de 2007

Expert Zone - Unified Communications

Te invitamos a conocer la nueva propuesta de Microsoft para Comunicaciones Unificadas. Descubre como la fuerza del software nos permite agilizar las comunicaciones entre las personas y empresas independientemente del medio utilizado, la plataforma, el dispositivo o la localización.

image

Durante este evento podrás disfrutar de una serie de tracks técnicos ofrecidos por expertos de Microsoft en la tecnología y un amplio número de socios especializados en la materia. El objetivo a cubrir es mostrarte como hacer el despliegue y administración de estas nuevas tecnologías entre las que destacamos – Microsoft Office Communications Server 2007, Microsoft Office Communicator 2007 y Microsoft Office Live Meeting en combinación con Microsoft Exchange Server 2007 – que proporcionarán la base de software para ofrecer servicio de VoIP integrado con la infraestructura existente.

Fecha: del 18 al 26 de Octubre

El evento estará orientado hacia los siguientes productos:

  • Microsoft Offrice Communications Server 2007 (OCS 2007)

  • Microsoft Offrice Communicator 2007 (OC 2007)

  • Microsoft Exchange Server 2007 SP1

  • Microsoft Offrice Live Meeting 2007 (OLM 2007)

  • Microsoft Exchange Hosted Services (EHS)

  • Microsoft Round Table

  • UC Devices: IP Phones

  • UC 5 Start program announcement

  • IP Phone Devices - Partner driven

  • Security and Compliance

  • Web Conferencing

  • Mobility and Anywhere Access

  • The UC Administration Experience

  • UC Extensibility: Embedding UC in LOB Applications

  • End-User VOIP Experience

  • VOIP Architecture

  • VOIP Topologies and Interoperability

  • OCS 2007 Deployment

  • Exchange Server 2007 SP1 Overview


Para asegurar tu plaza en el evento accede ahora al registro online en Expert Zone en TechNet Latinoamérica.

Saludos.

viernes, 19 de octubre de 2007

Windows Live SkyDrive Beta, Almacenamiento OnLine Gratuito

Bueno hoy me decidi a probar el nuevo servicio de Microsoft Windows Live SkyDrive que nos permite tener almacenamiento Online de nuestros archivos (Disco Duro Virtual) en la web.

Me parece muy buena iniciativa la idea de tener un disco duro virtual, pero sobre todo lo mas rescatado es que podemos compartir archivos, carpetas con nuestros demas contactos de Live, o windows Live Messeneger para que puedan tener acceso se les otorga permisos desde la misma pagina de Skydrive.

 Windows Live SkyDrive

Pruebenlo espero sus comentarios

Saludos,
Daniel L

jueves, 18 de octubre de 2007

¿Que es un Framework? ¿Como puedo desarrollar un framework propio?

Muchos de los que nos dedicamos al desarrollo de software utilizamos, conocemos o, como mínimo, nos hemos tropezado con el concepto de framework (cuya traducción aproximada sería “marco de trabajo”). En concreto, y por diferentes motivos, he hecho algún pinito utilizando JavaServer Faces así como en Ruby on Rails. Sin embargo, el concepto de framework no es sencillo de definir, a pesar de que cualquiera con experiencia programando captará su sentido de manera casi intuitiva, y es muy posible que esté utilizando su propio framework (aunque no lo llame así).

¿Cuál es el sentido de un framework?
Sabemos por experiencia lo importante que es la normalización de datos en cualquier aplicación. Los usuarios pueden manejar su información en papel, fichas, en su propia memoria, tenerla duplicada, con incoherencias, omisiones, … ¡Todo un infierno! Pero una aplicación informática necesita que esa información esté estructurada de un modo conocido para poder manejarla: almacenarla, recuperarla, y todos los “-arla” que se requieran. Para eso definimos modelos de datos con una determinada estructura (que habitualmente se convierten en tablas de una base de datos). Pero ¿qué ocurre con la información que manejamos los propios desarrolladores para crear una aplicación? Léase código fuente, librerías, ficheros de configuración, etc. Muchas veces parece que la única elección importante es la tecnología concreta a utilizar (lenguaje de programación, gestor de bases de datos, etc.) pero, a partir de ahí, cada programador puede crear su propio maremagnum de ficheros y código fuente.

¿Por qué permitir ese “desorden” en un desarrollo, si estamos tan convencidos de las bondades de estructurar y normalizar la información? Eso es ni más ni menos lo que pretende un framework. Entonces ¿qué es un ‘framework’?Siendo muy simple, es un esquema (un esqueleto, un patrón) para el desarrollo y/o la implementación de una aplicación. Sí, es una definición muy genérica, pero también puede serlo un framework: sin ir más lejos, el paradigma MVC (Model-View-Controller) dice poco más que “separa en tu aplicación la gestión de los datos, las operaciones, y la presentación”. En el otro extremo, otros frameworks pueden llegar al detalle de definir los nombres de ficheros, su estructura, las convenciones de programación, etc.
Pongamos un ejemplo: una aplicación web que utilice Java como lenguaje de programación puede implementarse de multitud de formas, mediante servlets y JSPs. Hay algunas convenciones que es necesario seguir, como usar un fichero de configuración web.xml, pero el programador sigue sin tener un patrón claro a seguir para la creación de servlets, clases, JSPs, etc.

En una primera estandarización, la utilización de una arquitectura MVC aconseja que separemos la lógica de la aplicación (en los servlets) de la presentación (usando JSPs); en concreto, no sería correcto codificar lógica de aplicación o accesos a base de datos dentro de los JSP.
Un paso más allá: utilizando Faces como framework, la estructura de la aplicación queda todavía más definida: un único servlet (FacesServlet) va a controlar el flujo de la aplicación; además, el uso de un fichero concreto (faces-config.xml) permite crear la navegación de la aplicación, definir los objetos (beans) pasados como parámetros, etc., todo ello sin necesidad de codificarlo en Java o JSP. Los frameworks no necesariamente están ligados a un lenguaje concreto, aunque sea así en muchas ocasiones. En el cada vez más popular Ruby on Rails, ‘Ruby’ es el lenguaje de programación y ‘Rails’ el framework; por otro lado, JavaServer Faces está orientado a desarrollos en Java. Sin embargo, nada impide definir el mismo framework para lenguajes diferentes: por ejemplo, existe un framework llamado Biscuit cuyo objetivo es prácticamente convertirse en un “PHP on Rails”. Eso sí, cuanto más detallado es el framework, más necesidad tendrá de ceñirse a un lenguaje concreto.
También es posible que el framework defina una estructura para una aplicación completa, o bien sólo se centre en un aspecto de ella. Siguiendo con los ejemplos, Ruby on Rails ofrece un marco para el desarrollo completo de una aplicación web, mientras que JavaServer Faces está más orientado a la interfaz de usuario.

¿Qué ventajas tiene utilizar un ‘framework’?Las que se derivan de utilizar un estándar; entre otras:
El programador no necesita plantearse una estructura global de la aplicación, sino que el framework le proporciona un esqueleto que hay que “rellenar”. Facilita la colaboración. Cualquiera que haya tenido que “pelearse” con el código fuente de otro programador (¡o incluso con el propio, pasado algún tiempo!) sabrá lo difícil que es entenderlo y modificarlo; por tanto, todo lo que sea definir y estandarizar va a ahorrar tiempo y trabajo a los desarrollos colaborativos. Es más fácil encontrar herramientas (utilidades, librerías) adaptadas al framework concreto para facilitar el desarrollo.

¿Y si no necesito o no quiero utilizar un ‘framework’?
Por supuesto, un desarrollador puede crear toda una aplicación sin seguir ningún framework conocido; puede que sea tan pequeña que no lo considere necesario, que no conozca ninguno que se adapte a sus necesidades, o simplemente no desee dedicar tiempo a seleccionar y utilizar uno.
Sin embargo, a medida que la aplicación crece, un programador competente procurará seguir unas determinadas pautas que le faciliten su trabajo de desarrollo y mantenimiento: separación de presentación y lógica, una sintaxis coherente, etc. La evolución natural sera hacia que, de algún modo, se construirá su propio framework.
Y en vez de definir un estándar, ¿por qué no utilizar uno ya definido, y aprovechar el trabajo de otros muchos desarrolladores? Hacer un desarrollo críptico y difícil de interpretar puede ser útil en un concurso de código ofuscado o para presumir de “gurú”, pero es muy poco útil para desarrollar y mantener una aplicación. El coste inicial (la curva de aprendizaje) de utilizar un framework se compense probablemente en cuanto el trabajo de desarrollo crezca mínimamente. De acuerdo; pero ¿qué ‘framework’ utilizo?Buscando en la red se encuentra mucha información sobre los frameworks existentes para las diferentes plataformas y lenguajes. Posiblemente uno de sus principales problemas es que haya demasiados: ya se sabe, lo bueno de los estándares es que hay muchos para elegir . Sin embargo, la elección del framework concreto a utilizar vendrá marcada por:
El tipo de aplicación a desarrollar El lenguaje de programación y otras tecnologías concretas: base de datos, sistema operativo, etc. Como introducción a los frameworks, Ruby on Rails me parece una buena opción para desarrollar una aplicación web y como ejemplo de lo que es un framework. Dentro del mundo Java, Struts parece uno de los más extendidos.

En conclusiónLa utilización de un framework en el desarrollo de una aplicación implica un cierto coste inicial de aprendizaje, aunque a largo plazo es probable que facilite tanto el desarrollo como el mantenimiento. Existen multitud de frameworks orientados a diferentes lenguajes, funcionalidades, etc. Aunque la elección de uno de ellos puede ser una tarea complicada, lo más probable que a largo plazo sólo los mejor definidos (o más utilizados, que no siempre coinciden con los primeros) permanezcan. Y si ninguno de ellos se adapta a las necesidades de desarrollo, siempre es mejor definir uno propio que desarrollar “al por mayor”.

jueves, 11 de octubre de 2007

Paginacion Mixta Personalizada... (Asp.net Datagrid)

Hace unos dias un amigo mio lector fiel de este blog me hizo una pregunta... ¿Cual es la forma mas eficiente de realizar paginaciones en las paginas Asp.net? Bien como todos ya conocemos existen algunos controles como el Datagrid que tiene su paginacion propia, sin embargo no soy muy partidario de la eficiencia de este control por que si bien es cierto se le entrega un conjunto de resultados y el internamente atravez del metodo Page_SelectionChange realiza la paginacion pero del origen completo asignado.

Sin embargo existe una forma mucho mas eficiente, particularmente la uso por que consume pocos recursos, y nos permite hacer mucho mas ligera la pagina, es la tecnica de control tu origen por sTored Procedures, asi como la cantidad de paginas a mostrar.

Esto significa que si tengo una tabla con 25 mil registros, no cargare los 25 mil a la vez, si no que traere el conjunto de resultados por bloques definidos en el Stored Procedure.

Por ejemplo:

CREATE DATABASE CustomPagingGO
Use CustomPagingGO
CREATE TABLE Products ( ProductID int IDENTITY (1, 1) NOT NULL , ProductName varchar (50) NOT NULL ) ON [PRIMARY]GO
CREATE PROCEDURE GetProductsByPage@PageNumber int,@PageSize intAS CREATE TABLE #TempProducts ( ID int IDENTITY PRIMARY KEY, ProductID int, ProductName varchar(50), )
-- fill the temp table with all the products for the -- specified products retrieved from the Products table INSERT INTO #TempProducts ( ProductID, ProductName ) SELECT ProductID, ProductName FROM Products
-- declare two variables to calculate the -- range of records to extract for the specified page DECLARE @FromID int DECLARE @ToID int
-- calculate the first and last ID of the range of topics we need SET @FromID = ((@PageNumber - 1) * @PageSize) + 1 SET @ToID = @PageNumber * @PageSize
-- select the page of records SELECT ProductID, ProductName FROM #TempProducts WHERE ID >= @FromID AND ID <= @ToIDGO



Aqui les dejo el codigo de Referencia espero que les ayuden a mejorar la eficiencia de sus Paginas....


Saludos,
Daniel Lazarte

sábado, 6 de octubre de 2007

Motorola MotoQ GSM

Para los que me conocen soy muy obsesivo por la tecnología que cada dia crece y crece en el mundo entero, solo que no se por que se retrasa tanto aqui en Perú. hace algunas semanas Motorola lanzo al mercado su nuevo MotoQ GSM , y como no pude con mi genio rompi mi chanchito y fui al distribuidor mas cercano para comprarme uno, con el unico fin de probar la tecnología windows mobile, de cual soy pártidario por que ya eh probado otros dispositivos con este S.O.

Resulta que el celular no cumplio con mis espectativas, sinceramente comprobé las funciones una por una con el MotoQ GSM y con mi celular Motorola A1200 (Con sistema Operativo Linux), sinceramente amigos de motorola, me parece que podrian exlpotar mucho mas aun las facilidades y la firmeza de tener un sistema operativo Windows Mobile, sensillamente mi opinion del 1 al 10 para el MotoQ GSM es de 4, sobre todo por que yo eh probado smartPhones con muchas mas caracteristicas y funciones que este celu, sin duda no me agrado nada comenzando por el diseño, es un celular que mas parece una agenda que un smartphone.





Bueno espero comentarios de quienes tambien hallan probado este celular, creo que aun le falta madurar un poco mas a Motorola con el concepto de SmartPhone.
Saludos :)

El futuro esta en nuestros bolsillos, Tecnología Mobile…

Hace unos días estuve leyendo el diario Peru 21 y encontre una noticia relacionada con la SBS, donde el funcionario Javier Poggi, jefe de la Superintendencia de Banca y seguros anunciaba que su entidad recibira apoyo del Banco Interamericano de Desarrollo (Bid) para la implementacion de un sistema de consulta movil , orientado a que los usuarios del sistema financiero puedan realizar las operaciones desde su dispositivo movil, Celular, Palm, Poket PC etc.

La gran pregunta que surgio en mi cabeza fue… ¿Que tan primitivo pueden ser nuestros sistemas? es decir aqui en perú he notado que no existe la cultura de soluciones orientadas a cumplir exitosamente las necesidades de nuestro mercado. Hace 4 años desarrolle un sistema de Gestion de portal para una marca muy reconocida en el mercado, este sistema tiene una arquitectura lo suficientemente robusta para inplmentar competencia del mercado movil. (Mobile Architecture), es decir es capaz de inplementar estas interfaces para dispositivos moviles en nuestro mercado.


Ahora, eso fue hace casi 5 años ya, noto un gran inconveniente con las aplicaciones de nuestro medio, creo que ninguna esta lista para poder escalar hacia una solucion movil, me gustaria hacerle la pregunta a las personas que leen mi blog … ¿Sus aplicaciones complejas, si esas que inplementan infinitas capas y que son excelentemente agiles en la web o en una pc cliente… soportarian tecnología movil? ¿Es sencillo que migren o que se comporten de la misma forma en un dispositivo movil? Necesitamos hacer crecer la fuerza de esta tecnología que ya esta siendo día a día de usuarios en europa, asia y america del norte, amigos Arquitectos, ingenieros, analistas,desarrolladores todos… un nota para reflexionar el futuro esta en nuestras manos, un saludo a todos exitos

jueves, 4 de octubre de 2007

Drag and Drop en Asp.Net

Sin duda muchos de nosotros queremos siempre lo mejor (funcinalidad enriquecida) para el desenvolvimiento de nuesras aplicaciones web, uno de mis casos frecuentes es que casi siempre los usuarios solicitan incorporar y enriquecer visualmente la aplicacion, y esto no se refiere a detalles de estilos y colores, si no a la posibilidad de completar procesos del sistema de una forma mas sencilla como... Arrastrar y soltar objetos.

Bueno el famoso y Drag and Drop como uds. sabes es posible hacerlo con mucho codigo JavaScript (codigo de cliente), sin embargo existe una forma un tanto mas sencilla de lograr estos efectos visuales en nuestras paginas Asp.net.



Aqui les dejo un Ejemplo de como desarrollar una aplicacion incorporando Drag and Drop, y asu vez con e menor codigo JavaScript Posible.

Este es uno de los ejemplos que mas me sirvieron para crear esta funcionalidad.



Saludos,
Daniel Lazarte

martes, 2 de octubre de 2007

Mobile Web Application Architecture

Haciendo "inca Pie" a una sugerencia particular de mi amigo el "zorro" aqui les dejo una explicación dinamica de la Arquitectura de una aplicacion Web Mobile. La presentacion pertenece al curso oficial de certificacion Microsoft (2514).

Es importante amigos que conozcamos el material de construccion de nuestro edificio antes de iniciar las obras, microsoft nos provee de una serie de herramientas y tecnologías desde la version 2003 y ahora la pronto esperada CodName Orcas, herramiemtas que nos facilitaran el desarrollo de nuevas innovaciones tecnologicas.

La era mobile esta cada vez mas cerca... Aprende, desarrolla y inplementa :)

Mobile Web - Arquitectura

Usando SQL Caching y Dependencias

Aun no puedo publicar mi articulo propio por falta de tiempo :( pero aqui les dejo un excelenete ejemplo de como trabajar con SQL caching en Asp.Net 2.0 y sql server 2005, como muchos ya sabemos el manejo de la cache de nuestras aplicaciones es de vital importancia para asegurar el optimo funcionamiento de nuestras paginas estregadas, existe mas de una tecnica de manejo de cache, desde paginas, por controles, etc. Y ahora les dejo este ejemplo para que conoscan como manejar la cache administrada desde SQL server.

Ademas considero necesario que tambien conozcan la Arquitectura de una aplicacion con manejo de cache.

The Caching Layer (CL) is Another Layer in Our    Architecture

Entonces entendiendo el concepto de arquitectura de una aplicacion de este tipo podemos pasar a este excelente tutorial que nos indicara paso a paso como administrar la cache desde nuestro buen amigo SQL server 2005.

Espero disfruten del Caso Practico :)
Saludos ,
Daniel

Una mas de Web Service factory

¿Inventar la rueda? en que puede variar las matematicas y la fisica ya demostraron hace mucho tiempo cuales son las cualidades principales de ella ¿Como crear una nueva rueda? esta y otras son las preguntas que inertemente nos realizamos dia a dia en el desarrollo de patrones de arquitectura basados en tecnologia y bloques de codigos ya existentes.

¿Como podemos crear nuevos patrones con nuestra propia logica? para empezar que requisitos son indispensables y necesarios para que nuestro patron inplemente la funcionalidad que deseamos... Una de las famosas respuestas que siempre eh escuchado en los eventos es la siguiente "Que se conecte con mi origen de datos" o "Que inplemente objetos comunes para ser serializados y consumidos"... la gran pregunta... ¿Acaso eso no esta inventado? :S

un post de reflexion, mi sugerencia particular es directa a las venas... Usen, inplemente y Mejoren la Rueda.

Aqui les dejo el codigo fuente de un esenario interesante sobre Web Service factory, hands on Lab
Saludos,
Daniel

Intelissense para SQL 2005 y SQL 2000

Muchos de los desarrolladores (me incluyo) estamos acostumbrados a que nuestra herramienta de trabajo nos trate con las mayores facilidades posibles para hacer de nuestro trabajo Agil y agradable, sobre todo comodo, estuve investigando por ¡ufff buen tiempo! y encontre este Add-in espectacular que nos permite tener intelissense en nuetro SQL 2005 y SQL 2000, como todos ya sabemos nunca etsa demas una ayudadita en nuestro dia a dia..

Bueno como Una imagen vale mas que mil palabras, aqui les dejo el link para que descarguen de Forma Gratuita esta excelente herramienta proveida por Red Gate.



Sitio oficial de Descarga

Windows Presentation Fundation

Estuve platicando con unos amigos este fin de semana acerca de las enriquecidas interfaces de usuario que Brinda el nuevo Windows Presentation Fundation y pues me anime a investigar mas sobre este tema y me encontre con muchas novedades excelentes en realidad formulas algoritmicas destinadas a la plena satisfaccion del usuario.

El interés de muchos profesionales de software se centra, principalmente, en el modo de funcionamiento de las aplicaciones y no tanto en la forma de interacción que pueda darse entre éstas y los usuarios. Sin embargo, los usuarios (que, al fin y al cabo, son los que pagan) dan gran importancia a las interfaces. La interfaz de una aplicación constituye una parte fundamental de la experiencia global del usuario con el software particular. En lo que respecta a los usuarios, la aplicación es la experiencia. La experiencia mejorada de los usuarios mediante una interfaz optimizada puede contribuir al incremento de la productividad, a la generación de clientes leales y a una ampliación de las ventas en línea, entre muchas otras ventajas.

Los usuarios, que un día se conformaban con interfaces basadas en caracteres, ahora se han acostumbrado a las interfaces gráficas. No obstante, los requisitos que deben cumplir estas interfaces siguen aumentando. El uso de gráficos y componentes multimedia se ha hecho más generalizado. Además, la Web ha condicionado a una generación de usuarios que esperan obtener una interacción con software sencilla. La relevancia de las interfaces de las aplicaciones crece con el aumento del tiempo que los usuarios dedican a interacturar con las mismas. Para satisfacer las crecientes expectativas, la tecnología de creación de interfaces de usuario debe avanzar a la par.

El objetivo de Windows Presentation Foundation (WPF) es proporcionar estos avances en el entorno de Windows. WPF se incluye en la versión 3.0 de Microsoft .NET Framework y permite crear interfaces que incorporan documentos, componentes multimedia, gráficos bidimensionales y tridimensionales, animaciones, características tipo web, etc. Al igual que el resto de los componentes de .NET Framework 3.0, WPF estará disponible para Windows Vista, Windows XP y Windows Server 2003, y su lanzamiento está programado para que se produzca al mismo tiempo que Windows Vista. Este artículo sirve de introducción a WPF y ofrece una descripción de sus distintos componentes. El objetivo es aclarar los problemas que trata esta tecnología y analizar las soluciones que proporciona WPF.



Una aplicación de servicios financieros se puede ejecutar como aplicación de WPF independiente.Les dejo el link de esta aplicacion demo para que continuen la lectura...
Saludos a Todos :)

Visual Studio .Net CodeName Orcas (Novedades)

Que hay de nuevo en Orcas?

Que tal amigos, esta semana he estado en conferencias en Seattle en el evento del Techready, estas conferencias son como el PDC (Professional Developers Conference) pero para gente interna de Microsoft, durante este evento siempre hay montones de lanzamientos y nuevas tecnologías que apantallan al mas avanzado influenciador.

Durante este tiempo tuve oportunidad de aistir a un evento de Scott Guthrie donde mostró las principales características de Orcas, esta es mi lista de los Top 5 características de Orcas.

  1. Multitargeting

  2. Diseñador HTML

  3. Soporte AJAX

  4. Controles de Datos

  5. LINQ


MULTITARGETING


Al crear un nuevo proyecto en Visual Studio 2008, la ventana de plantillas será similar a las que conoces de versiones anteriores, la diferencia principal se encuentra en la parte superior derecha de la venta, la cual tiene un comobo que te permitirá seleccionar la versión de .NET en la cual vas a desarrollar tu proyecto, por ejemplo si tu proyecto lo tienes que desarrollar en .Net 2.0, puedes seguir utilizando VS 2008, no necesitas usar la versión 2005 para esto. Ahora si, tienes una sola herramienta para desarrollar las aplicaciones que necesitas.

image

Lo interesante de esto, es que ahora el IDE va a adaptarse a las necesidades del usuario, por ejemplo, cuando estas trabajando con la version 2.0 del framework y quieres hacer relación a componentes del framework 3.5 que no debería de dejarte utilizar, para lograr esto, el IDE analiza todas las dependencias y asi, todas las referencias que no coinciden aparecerán bloqueadas para que no puedas insertar algun componente que oblique a que tengas el framework 3.5 instalado.

esto mismo aplica para plantillas, controles, componentes e Intellisense, todo esto enfocado a lograr que la experiencia de usuario sea la mejor posible para los desarrolladores.

Diseñador HTMLimage


Cuando Microsoft comenzó a desarrollar el Expression Web Designer se hicieron grandes inversiones en lograr tener una aplicación que realmente facilitara el desarrollo de páginas Web, que fuera rápida, y que permitiera ver exactamente lo que está modificando en código, esta nueva interfaz, y el resto de las herramientas, ahora son parte de VS2008. esto hace que sea mucho mas rápido de lo que es actualmente Visual Studio 2005

En esta imagen podemos ver como del lado izquierdo nos muestra todos los estilos que existen dentro de la aplicación, pero aun mas interesante es que te muestra todas las dependencias entre los diferentes estilos, y te remarca aquellos que se van a aplicar directamente a la selección que tengas en este momento, esto de da la facilidad de saber exactamente cual es la hoja de estilos que estas aplicando, y mas aun, puedes ver cuales son los estilos que van a aplicar a este objeto.

El IDE es mucho mas rapido, esto lo puedes ver cuando cambias de modo de diseño avisualizar el código fuente.

Soporte AJAX


Las nuevas páginas y portales que se estan generando tienen algún componente de AJAX, sin embargo uno de los grandes problemas que existen actualmente son la interoperabilidad con componentes existentes como web services etc. y el debugging de dichos componentes, ahora con la nueva versión de Visual Studio, vas a poder usar los controles directamente, sin necesidad de instalar nada, esto hace que tu aplicación sea mucho mas fácil de construir, y que cuente con una mejor interfaz gráfica.

En cuanto a la depuración de AJAX, Visual Studio te permite agregar breakpoints en código de javascript, por ejemplo si tu HTML hace referencia a archivos .js al poner un breakpoint y depurar paso a paso, automaticamente abrirá el archivo de js al que hace referencia. Visual Studio cuenta con intellisense para HTML, Javascript, XML, y los otros lenguajes.

Controles de datos


Con la aparición de los web services y ADO.net surgió una revolución en cuanto las aplicaciones que accesan a datos, sin embargo los controles eran muy rigidos y no permitían grandes modificaciones que facilitaran el desarrollo.Muchas de las nuevas mejoras de estan precisamente en los nuevos controles de datos.

El Listview te va a permitir generar una lista totalmente personalizable, lo unico que haces es seleccionar los campos que quieres, automaticamente te genera los campos de insertar borrar modificar, pero como soporta Ajax, puedes poner controles de paginación (datapager) q refresquen solamente una parte de la página, reduciendo los postbacks y la experiencia del usuario. y puedes usar un control mas linqdatasource para usar como fuente de datos una consulta que hayas generado usando LINQ.

LINQ


LINQ a SQL es parte del .Net Framework 3.5, que es una implementación O/RM (object relational mapping) que te permite modelar una base de datos relacional usando clases de .NET, esto te permite que usando LINQ puedas hacer busquedas, actualizaciones, y agregar campos a las bases de datos.

LINQ te soporta transacciones, vistas y procedimientos almacenados, tambien te sirve como un método de validacion e integrar lógica de negocios en tu modelo de datos.

Un ejemplo de una consulta sería:

Dim BaseDeDatos as new NorthwindDataContext

Dim Productos = From p In BaseDeDatos.Products where p.Category.CategoryName="Beverages" Select p

Con LINQ puedes modelar los datos de una manera visual, y accederlos como si fueran objetos, esto te permite trabajar con una capa intermedia de lógica de negocios.

Agradecimientos a : Jaime Sanchez :) Buen Articulo

Manejando Sys.WebForms.PageRequestManager

Para bien o para mal, el control UpdatePanel es el preferido de la comunidad de ASP.NET AJAX. Y digo "para bien" porque UpdatePanel simplifica de forma espectacular la representación de páginas parciales y "para mal" porque su simplicidad y sencillez de uso se consiguen a costa de la eficacia e, irónicamente, el ancho de banda.


Aunque UpdatePanel proporciona la magia de AJAX a las páginas web normales, no ofrece la eficacia que normalmente se asocia con AJAX. Por ejemplo, ¿sabía que cuando un control UpdatePanel realiza una devolución de llamada asincrónica de AJAX al servidor para actualizar el contenido, la solicitud incluye todo lo que contiene una devolución de ASP.NET convencional, incluido el estado de vista? La mayoría de los desarrolladores supone que AJAX elimina el estado de vista. Esto no es el caso de la marca AJAX de UpdatePanel.

Si va a usar un control UpdatePanel, necesitará saber lo que se que va a encontrar. En muchos casos, desde el punto de vista del rendimiento, es mejor que una aplicación no use UpdatePanel y, en su lugar, emplee llamadas asincrónicas a WebMethods o métodos de páginas. De este modo, puede reducir el volumen de datos que se envía a través de la red en un orden de magnitud o más. Sin embargo, también es un cambio fundamental en el que es necesario que el desarrollador controle explícitamente las actualizaciones de la interfaz de usuario con JavaScript en la página.

Además, los foros de la discusión de ASP.NET AJAX ya están llenos de preguntas sobre la personalización de UpdatePanel. Muchas de estas preguntas se responden fácilmente una vez que se conoce PageRequestManager, la clase de JavaScript de Microsoft® AJAX Library que proporciona compatibilidad de cliente con UpdatePanels.

Ahora que se ha lanzado al mercado ASP.NET AJAX, me gustaría examinar más a fondo UpdatePanel y analizar con más profundidad cómo se puede personalizar, optimizar e incluso vivir sin él. Y eso es exactamente de lo que trata esta columna.

Cómo resaltar las actualizaciones

A veces, sólo se puede sentir lástima por los desarrolladores de Microsoft. Si no hacen bien su trabajo, el público les ataca sin piedad. Sin embargo, a veces también se les critica cuando hacen su trabajo demasiado bien. Por ejemplo, hace poco recibí un correo electrónico de un cliente que se quejaba de que ASP.NET AJAX UpdatePanel funcionaba demasiado bien.

UpdatePanel simplifica mucho la tarea de transformar la intermitencia y el parpadeo que se producen cuando una página de ASP.NET se devuelve al servidor en actualizaciones sencillas y sin parpadeo. UpdatePanel usa su magia para convertir las devoluciones en devoluciones de llamada asincrónicas (solicitudes de HTTP XML) y usar JavaScript en el cliente para actualizar la parte de la página encapsulada por el control UpdatePanel. La intermitencia y el parpadeo desaparecen porque el explorador no vuelve a dibujar la página como sucede durante una devolución.

La queja del cliente era que a veces los usuarios no se daban cuenta de que esa parte de la página se había actualizado con nuevo contenido. Su pregunta era sencilla: ¿los miembros del equipo de ASP.NET AJAX pueden conseguir que UpdatePanel parpadee un poco para que no se dejen pasar actualizaciones importantes?

Lo malo es que probablemente el equipo de ASP.NET AJAX no esté interesado en que UpdatePanel parpadee. A fin de cuentas, deshacerse del parpadeo fue uno de los primeros motivos para crear UpdatePanel. Lo bueno es que puede usar la magia de AJAX en el explorador para llamar la atención sobre las actualizaciones de UpdatePanel. El secreto está en la clase Sys.WebForms.PageRequestManager de Microsoft AJAX Library, la biblioteca de clases de JavaScript que compone la mitad de cliente de ASP.NET AJAX. PageRequestManager administra las devoluciones de llamada asincrónicas iniciadas por UpdatePanel. También es responsable de actualizar el contenido de un UpdatePanel cuando finaliza una devolución de llamada asincrónica.

PageRequestManager desencadena eventos en el explorador antes y después de que se produzca una actualización. Puede enlazar estos eventos en JavaScript y ejecutar código que llame la atención sobre el contenido actualizado. El evento clave se denomina pageLoaded. Este evento se desencadena cada vez que la página se carga en el explorador (de forma análoga a Page_Load en ASP.NET). También se desencadena cada vez que finaliza una devolución de llamada asincrónica iniciada en nombre de un control UpdatePanel y se actualiza el contenido de ese UpdatePanel. Puede registrar un controlador de JavaScript para el evento pageLoaded con dos líneas de código (que se pueden combinar en una):

var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_pageLoaded(pageLoaded);


La primera línea establece una referencia al objeto de la página PageRequestManager. La segunda registra una función de JavaScript denominada pageLoaded como controlador de eventos pageLoaded.

Cuando se le llama, un controlador del evento pageLoaded recibe un argumento del tipo Sys.WebForms.PageLoadedEventArgs, que es otra clase de Microsoft AJAX Library. PageLoadedEventArgs contiene un método get_panelsUpdated al que se llama para enumerar todos los UpdatePanels, si hubiera alguno, cuyo contenido se haya actualizado. De forma predeterminada, un UpdatePanel no es nada más que un DIV del cliente, de modo que puede usar JavaScript para generar intermitencia en el DIV, destacarlo o hacer lo que desee para llamar la atención del usuario.

El código enumerado en la figura 1 muestra una de las maneras de usar eventos pageLoaded para resaltar la actualización. Cada vez que tiene lugar una actualización, JavaScript muestra de forma intermitente los elementos del modelo de objetos del documento (DOM) que representan UpdatePanels actualizados, haciéndolos aparecer y desaparecer tres veces consecutivamente. La intermitencia se lleva a cabo mediante una función auxiliar denominada flashPanels, que usa un recuento de intermitencias como parámetro de entrada.

Observe cómo se activa y desactiva la visibilidad de UpdatePanel para crear un efecto de intermitencia. En lugar de interactuar directamente con los elementos DOM, el código ajusta los elementos DOM que representan los UpdatePanels con objetos Sys.UI.Control. A continuación, usa métodos set_visible y get_visible de Sys.UI.Control para mostrar y ocultar un elemento:

_panels[i].set_visible(!_panels[i].get_visible());

Sys.UI.Control es una clase de JavaScript que se encuentra en Microsoft AJAX Library, concretamente en MicrosoftAjax.js. La ventaja de conmutar la visibilidad de este modo es que es independiente del explorador. Esto funciona igual de bien todos los exploradores que admiten ASP.NET AJAX (prácticamente todos los exploradores modernos). Por otro lado, el código JavaScript que interactúa directamente con el explorador DOM se debe ajustar para que funcione con tipos de exploradores diferentes.

Back to top


Cancelación de actualizaciones de UpdatePanel
El evento pageLoaded es uno de los que desencadena la clase PageRequestManager cuando un UpdatePanel regresa al servidor para actualizar su contenido. Otro evento importante que desencadena PageRequestManager es initializeRequest, que tiene lugar antes de que se produzca una devolución de llamada asincrónica.

Alguien me preguntó hace poco si era posible decidir en tiempo de ejecución si se debía permitir que un AsyncPostBackTrigger desencadenara una actualización de UpdatePanel. La respuesta es sí. Esto se lleva a cabo mediante el procesamiento de eventos initializeRequest.

El segundo parámetro que se transmite a un controlador de initializeRequest es un objeto del tipo initializeRequestEventArgs. Este objeto contiene un método get_postBackElement que identifica el botón o el elemento que ha desencadenado la actualización. También dispone de un método set_cancel que se puede usar para cancelar una devolución de llamada antes de que ocurra. Este es un ejemplo del método set_cancel en acción:

<script type=”text/javascript”>

var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_initializeRequest(initializeRequest);

function initializeRequest(sender, args)
{
args.set_cancel(!confirm(‘Are you sure?’));
}
</script>

En este ejemplo, antes de que se ejecute una devolución de llamada, un controlador de intializeRequest abre un cuadro de confirmación que pregunta al usuario si debe continuar la actualización. Al hacer clic en Cancelar en el cuadro de confirmación, se transfiere true a set_cancel, lo que detiene en seco la devolución de llamada. En la vida real, probablemente no le interesa pedir confirmación al usuario antes de permitir que continúe una actualización pero podría ser útil tener la posibilidad de cancelar una actualización en función de las condiciones que existan en otras partes de la aplicación.

Por cierto, también se pueden cancelar las devoluciones de llamada asincrónicas después de que se hayan ejecutado pero antes de que hayan finalizado. PageRequestManager ofrece un método abortPostBack para hacer esto; también proporciona un método get_isInAsyncPostBack para determinar si hay una devolución de llamada asincrónica pendiente. Con frecuencia, estos métodos se usan con controles UpdateProgress para presentar una interfaz de usuario de cancelación.

Back to top


Varios UpdatePanels

Una página puede contener varios UpdatePanels. De forma predeterminada, cuando se actualiza un UpdatePanel en una página, los demás UpdatePanel de la página también se actualizan. A veces esto será lo que quiera pero, pero con frecuencia, no necesitará que se actualicen todos los UpdatePanel como respuesta a la actualización de otros UpdatePanel.

Puede elegir las instancias de UpdatePanel que desee actualizar (y cuándo) si establece en "Condicional" la propiedad de UpdateMode de cada control UpdatePanel de la página. A continuación, cuando se actualice un UpdatePanel y éste llame a un controlador de eventos del cliente, llame a UpdatePanel.Update en los demás paneles que desee actualizar. De este modo se reduce la carga en el servidor, al disminuir el número de controles que se representan, y se reduce el volumen de datos de la respuesta porque los UpdatePanel que no se actualicen no agregarán nada a la respuesta.

Back to top


Actualizaciones sin UpdatePanel

AJAX no sólo se ocupa de mejorar la experiencia del usuario; también trata de ofrecer mayor eficacia a la transmisión. Cuando se produce una devolución tradicional de ASP.NET, todos los datos del formulario web, incluido el estado de vista, se desplazan al servidor en la devolución. El estado de vista es uno de los motivos por los que las páginas de ASP.NET, sobre todo las que usan controles DataGrid y GridView, pueden parecer lentas. Las páginas con una gran cantidad de estado de vista son un problema para el rendimiento y este tipo de páginas es muy frecuente en las aplicaciones de ASP.NET.

Una de las ventajas de sustituir las devoluciones de ASP.NET por devoluciones de llamada de AJAX es que, si se realizan correctamente, las devoluciones de llamada de AJAX sólo transmiten los datos que es necesario transmitir. Esto significa que no tienen que incluir el estado de vista en la transmisión.

Cuando emplea UpdatePanel para realizar actualizaciones sin parpadeo en una página, es posible que piense que está aumentando la eficacia. A fin de cuentas, UpdatePanel usa AJAX, ¿no es así? Lamentablemente, si comprueba el tráfico de transmisión cuando se actualiza un UpdatePanel, descubrirá que no está ahorrando mucho, por lo menos en el envío. Los datos del estado de vista (y otros datos) que normalmente se transmiten al servidor durante una devolución, también se transmiten durante las devoluciones de llamada de UpdatePanel. En realidad, lo que aumenta en una solicitud asincrónica de HTTP XML de un UpdatePanel es casi idéntico a lo que aumenta en una devolución estándar de ASP .NET. Éste es el pequeño secreto de ASP.NET AJAX: UpdatePanel ofrece sencillez de uso pero no eficacia en la transmisión.

Puede hacer muy poco para aumentar la eficacia de UpdatePanel pero puede renunciar el uso de UpdatePanel y usar otras características de ASP.NET AJAX para actualizar el contenido de las páginas de un modo igual de sencillo pero mucho más eficaz. Se tarda un poco más pero los resultados merecen la pena, ya que se puede reducir mucho el volumen de datos que se desplaza entre el cliente y el servidor.

También se puede reducir la carga del servidor. Cuando un UpdatePanel devuelve una llamada al servidor, la página a la que se dirige la devolución recorre un ciclo de vida casi completo; se crea una instancia de la página y de los controles de la página, y los controles de UpdatePanel experimentan un ciclo de representación normal. Esto supone una gran sobrecarga sólo para actualizar una parte de la página.

Por ejemplo, piense en el fragmento de página de la figura 2. Ofrece una interfaz de usuario sencilla que permite que el usuario escriba un código postal y haga clic en un botón para inicializar los campos de ciudad y estado/provincia con una ciudad y un estado/provincia (consulte la figura 3). Todos los controles se alojan en un UpdatePanel, de modo que la devolución del control de botón se convierte en una devolución de llamada asincrónica y se llama al controlador de eventos (GetCityAndState) en el servidor, dentro de la devolución de llamada. GetCityAndState (el código no aparece) lee el código postal del TextBox ZipCode, lo convierte en una ciudad y un estado/provincia e inicializa el TextBox y la DropDownList que representan la ciudad y el estado/provincia. Dado que todo esto ocurre dentro de un UpdatePanel, la actualización es perfecta y sin parpadeo.

Figura 3 Interfaz de usuario de ciudad, estado/provincia y código postal


Éste es el problema. Si se usa un UpdatePanel de este modo, mejora la experiencia del usuario, pero se reduce poco el volumen de datos que se transmite. El UpdatePanel apenas reduce la carga en el servidor; es decir, hasta el punto en que los controles que se encuentran dentro del UpdatePanel se representan, el procesamiento que tiene lugar en el servidor es casi idéntico al que se produce durante una devolución completa. Es así porque una de las ventajas del control UpdatePanel es que los controladores de eventos del servidor, tal como GetCityAndState, no funcionan de forma diferente en una devolución de llamada asíncrona y en una devolución tradicional. Esto significa que se debe crear una instancia de los controles de la página, se deben inicializar, deben tener acceso al estado de vista, etc.

En la figura 4 se demuestra el modo de implementar la misma funcionalidad sin un control UpdatePanel. En esta ocasión, el botón Autofill está conectado a una pequeña parte de JavaScript que desencadena una solicitud de HTTP XML asincrónico a un método web de ASMX denominando GetCityAndState. La llamada se realiza a través del proxy de JavaScript denominado ZipCodeService, que se genera a través de la referencia de servicio en el control de ScriptManager. GetCityAndState toma una cadena de código postal como entrada y devuelve una matriz de cadenas que contiene dos elementos: la ciudad y el estado/provincia correspondientes. La función de finalización onGetCityAndStateCompleted recupera los elementos de la matriz y los inserta en los campos de ciudad y estado/provincia. Aparentemente tiene el mismo resultado, pero el modo de llegar a él es muy distinto en el interior.

De este modo se implementa la llamada al método web de ASMX a través del proxy de JavaScript:

[ScriptService]
public class ZipCodeService : System.Web.Services.WebService
{
[WebMethod]
public string[] GetCityAndState(string zip)
{
...
}
}

Se trata de un método web estándar en todos los aspectos, pero la clase a la que pertenece tiene el atributo ScriptService en lugar de WebService. ScriptService es sinónimo de WebService, pero con el significado añadido de que se puede llamar a los WebMethods del servicio web desde la secuencia de comandos del lado cliente.


Además de permitir que los WebMethods convencionales actúen como destino de las solicitudes de HTTP XML, ASP.NET AJAX también admite un tipo especial de método web conocido como el método de página. Los métodos de página son WebMethods que se implementan en páginas web; es decir, en archivos ASPX o archivos de código subyacente en lugar de hacerlo en archivos ASMX. Los métodos de página permiten a los desarrolladores ofrecer extremos para devoluciones de llamadas XML-HTTP sin necesidad de crear servicios web dedicados.

Los métodos de página deben ser métodos estáticos públicos y, al igual que los WebMethods, llevar el atributo WebMethod. (Los métodos WebMethods y de página también pueden llevar el atributo ScriptMethod, que ofrece un mayor control sobre lo que se transmite.) En el cliente, se llama a los métodos de página desde JavaScript a través del proxy especial PageMethods.

A diferencia de servicios web, los métodos de página no necesitan referencias de servicio. Sin embargo, tiene que habilitar métodos de página mediante el establecimiento en true de la propiedad EnablePageMethods del control ScriptManager, tal como se muestra a continuación:

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

En realidad, los métodos de página ofrecen la misma eficacia que los WebMethods. El estado de vista y otras entradas no se transmiten al servidor cuando se llama a los métodos de página. Y, dado que los métodos de página son estáticos, se les puede llamar sin crear una instancia de un objeto de página. Al llamar a un método de página, no se invoca el ciclo de vida de la página que se activa mediante solicitudes de ASP.NET convencionales.

Back to top


Servicio web != SOAP y XML

Una de las características más importantes de ASP.NET AJAX es su capacidad para invocar métodos WebMethods y de página en un servidor usando solicitudes asincrónicas de HTTP XML desde clientes de explorador. No obstante, siempre que cuento esta característica a la gente, no puedo dejar de avergonzarme un poco.

La mayoría de nosotros, cuando escuchamos el término servicio web, pensamos en SOAP y XML. Ninguna de estas tecnologías se suele mencionar cuando se habla de eficacia. Sí, puede llamar a WebMethods desde JavaScript usando ASP.NET AJAX. Pero no, ASP.NET AJAX no usa ni SOAP ni XML.

En la figura 5 se muestra lo que se desplaza en la transmisión cuando se ejecuta la llamada al método web de la figura 4. Además de los encabezados HTTP, los únicos datos que se transmiten en la solicitud son los del código postal que escribe el usuario, y los únicos datos que se devuelven en la respuesta son los de un par de cadenas que representan la ciudad y el estado/provincia. No verá ningún SOAP ni XML (ni el estado de vista correspondiente). En su lugar, la entrada y la salida se codifican usando JavaScript Object Notation (JSON), que es mucho menos detallado que XML y más fácil de procesar. En lugar de SOAP, la solicitud y la respuesta usan un protocolo sencillo que es básicamente HTTP. La combinación de HTTP y JSON permite que las llamadas de ASP.NET AJAX a WebMethods y los métodos de página sean mucho más eficaces que las llamadas tradicionales a servicios web.

JSON es un formato de serialización estándar del sector muy prometedor. Además, es el formato nativo que emplea ASP.NET AJAX. En el cliente, la compatibilidad con la serialización y deserialización se proporciona a través de la clase Sys.Serialization.JavaScriptSerializer de Microsoft AJAX Library. En el servidor, la compatibilidad se proporciona a través de la clase System.Web.Script.Serialization.JavaScriptSerializer.

No todos los tipos son compatibles con JSON. Por ejemplo, JSON no puede administrar objetos con referencias circulares. Si necesita devolver tipos de datos complejos que no sean compatibles con JSON, puede usar el atributo ScriptMethod de ASP.NET AJAX para serializar los tipos de devolución en XML. Esta técnica también es útil para los métodos que devuelven datos XML, tal como se demuestra a continuación:

[ScriptMethod (ResponseFormat=ResponseFormat.Xml)]
public XmlDocument GetData()
{
...
}

De manera alternativa, puede crear y registrar convertidores personalizados de JSON que permiten que los tipos que normalmente no son compatibles con JSON se serialicen y deserialicen. ASP.NET AJAX Futures CTP de enero contiene estos tres convertidores: uno para Dataset, otro para DataTable y un tercero para DataRow.

La evolución de LINQ y su impacto en el diseño de C#

Yo era un gran aficionado de la serie Connections que presentaba James Burke, cuando se emitía en el Discovery Channel. Su premisa básica: la forma en que los descubrimientos aparentemente no relacionados influían en otros descubrimientos, lo que en último término se plasmó en algún avance del mundo moderno. La moraleja, por decirlo así, es que los avances no se consiguen de manera aislada. Lo mismo se puede aplicar a LINQ (Language Integrated Query).


En términos sencillos, LINQ es una serie de extensiones de lenguaje que admite la consulta de datos de forma segura; se presentará en la próxima versión de Visual Studio con nombre en código "Orcas". Los datos que se deben consultar pueden adoptar la forma de XML (LINQ sobre XML), bases de datos (ADO.NET habilitado para LINQ, que incluye LINQ sobre SQL, LINQ sobre Dataset y LINQ sobre Entidades), objetos (LINQ sobre Objetos), etc. La arquitectura de LINQ se muestra en la figura 1.

Figura 1 Arquitectura de LINQ
Figura 1 Arquitectura de LINQ (Hacer clic en la imagen para reducirla)

WebService Factory en acción

Ya esta disponible la ultima version del webservice factory, una herramienta de Arquitectura y modelamiento de codigo fuente disponible para VB.net y C#.
Web Service Software Factory provee de un conjunto de prácticas probadas para la construcción de aplicaciones distribuidas. Estas prácticas son expuestas a través de tecnicas cocretas, patrones relacionados al mundo de los servicios web, guias HOW Tos paso a paso, incluso una implementacion de referencia en otras palabras un ejemplo practico y por si fuera poco han desarrollando sobre el GAT una herramienta automatizada que se instala sobre Visual Studio 2005 para la debida creacion de servicios web, asi que tu nada mas usas esta herramienta y ya tienes un servicio web de primer nivel que contempla interface de servicio, contratos, excepciones y demas. En si Web Service Software Factory es lo que necesitas para ponerte al dia en esta area de la tecnologia y la mejor parte de todo esto es que todo lo hace con WCF (Windows Communication Foundation) que es el presente y futuro para contruir servicio web altamente confiables. Recuerda que WCF es parte del core de Windows Vista (la nueva version del sistema operativo de Microsoft) asi que invertir en esto es invertir en el futuro.
Mas detalles en : http://msdn2.microsoft.com/en-us/library/aa480534.aspx


What Is the Service Factory?
Generally speaking, software factories represent a collection of guidance that helps architects and developers build a specific kind of application. Therefore, the Service Factory helps developers and architects build Web service applications. Web service applications are more than just the technologies that send and receive SOAP messages and expose WSDL contracts—they also include the functionality that is needed to fulfill the service's behavior. Figure 1 illustrates the parts of the application, and their relationship with one another, the Service Factory will help you build.

Diseñando Aplicaciones SOA (Excelente!!)

Diseñando Aplicaciones Orquestadoras con Visual Studio.net 2005En este documento encontre una arquitectura bastante interesante, en el documento conoceran el modelo de Arquitectura Orientada a Servicios (Service-Oriented Architecture, SOA), el nuevo modelo de aplicaciones orientada a servicios nos pertime escalabilidad, conectividad y sobre todo disponibilidad de la información de alto rendimiento.
Espero que les sirva este proyecto demo de la Universidad de la Republica.

Aplicaciones Orquestadoras

Accesos directos en Visual Basic 2005 Guia Del desarrollador

hola amigos, aqui les dejo este interesante documento que contiene los shorcuts o accesos directos para aquellos desarrolladores esmerados en conseguir la EFICIENCIA que tanta soñamos en el momento que escribimos nuestro codigo.
Aqui les va Shorcuts VB 2005

Cómo crear ofuscación Empresarial (Excelente !!)

Estuve leyendo este articulo acerca de Cómo crear ofuscación Empresaria y me parecio super interesante ademas esta completisimo. aqui les dejo el link para que lo revisen.
Saludos Arquitectos

White Paper del Microsoft .NET MicroFramework

White Paper del Microsoft .NET MicroFramework Aqui les dejo el white Paper del Microsoft .net MicroFramework para desarrollo de aplicaicones mobiles.Saludos :)

Bienvenidos todos amantes de la tecnología

¡Hola a todos!
Bienvenidos sean todos a este blog abierto para discutir, debatir, solucionar cualquier interrogante que se presente en nuestro día a día. Los saludo desde Perú para todo el mundo bienvenidos a la comunidad de desarrollo, arquitectura, inplementacion, de software y sistemas.


En este blog encontraran ultimas novedades de herramientas de desarrollo, lo que se viene, el futuro de aplicaciones y mucho mas. Nuevamente bienvenidos y... CodnAme Hsi Initialize...

Saludos
Daniel Lazarte