viernes, 25 de septiembre de 2015

Entrenamiento - Segundo Modulo del .NET Developer

Segundo Modulo del .NET Developer

Estimados Visitantes del Blog y Alumnos, queria comunicar a los interesados el inicio del Segundo Módulo del Programa .NET Developer que se realiza los días Sábados de 3:00 pm a 10:00 pm, en el cual se ha realizado los siguientes cambios:

Modulo 1: Windows Developer (48 horas en 2 meses)
Curso 01: .NET Framework (18 horas)
Curso 02: ADO .NET (18 horas)
Curso 03: WinForms (18 horas)

Modulo 2: Web Developer (96 horas en 4 meses)
Curso 04: ASP.NET Web Forms + JavaScript (24 horas)
Curso 05: ASP.NET MVC + JavaScript (24 horas)
Curso 06: HTML5 + JavaScript (24 horas)
Curso 07: Servicios (WCF y Web API) (24 horas)

Modulo 3: Mobile Developer (72 horas en 3 meses)
Curso 08: Responsive Web Designe (CSS3+HTML5+MVC) (18 horas)
Curso 09: jQuery Mobile (18 horas)
Curso 10: Xamarin Forms iOS (18 horas)
Curso 11: Xamarin Forms Android (18 horas)

Mañana Sábado 26 de Setiembre estaremos finalizando el primer módulo y el Sábado 10 de Octubre estaremos iniciando el segundo módulo con WebForms pero visto de forma diferente, sin usar Formularios ni Controles WebForms, solo HTML y JavaScript, mediante llamadas asíncronas con XHR y usando Serialización de Cadenas.


Ya saben que el costo es de 360 soles mensuales y los interesados tienen que enviar un mail de confirmación a Luis.duenash@gmail.com para enviarles la dirección exacta.

En la parte Web enseñaremos como optimizar el envio de imagenes, subir archivos grandes al servidor, hacer todas las operaciones con los datos del lado del cliente: filtro, paginación, ordenación, exportación, etc. Además de mostrar cambios en tiempo real usando web sockets, HTML5, etc.

El Libro del Día: Mastering Dart

El Libro del Día: 2015-09-25

Titulo: Mastering Dart
Autor: Sergey Akopkokhyants
Editorial: Packt
Nro Paginas: 346

Capítulos:
Chapter 1: Beyond Dart's Basics
Chapter 2: Advanced Techniques and Reflection
Chapter 3: Object Creation
Chapter 4: Asynchronous Programming
Chapter 5: The Stream Framework
Chapter 6: The Collection Framework
Chapter 7: Dart and JavaScript Interoperation
Chapter 8: Internalization and Localization
Chapter 9: Client-to-server Communication
Chapter 10: Advanced Storage
Chapter 11: Supporting Other HTML5 Features
Chapter 12: Security Aspects

Descarga:
Mastering_Dart

jueves, 24 de septiembre de 2015

El Libro del Día: Introduction to React

El Libro del Día: 2015-09-24

Titulo: Introduction to React
Autor: Cory Gackenheimer
Editorial: Apress
Nro Paginas: 141

Capítulos:
Chapter 1: What Is React
Chapter 2: The Core of React
Chapter 3: JSX Fundamentals
Chapter 4: Building a React Web Application
Chapter 5: Introducing Flux: An Application Architecture for React
Chapter 6: Using Flux to Structure a React Application

Descarga:
Introduction_to_React

miércoles, 23 de septiembre de 2015

El Libro del Día: Pro JavaScript Techniques (2nd Edition)

El Libro del Día: 2015-09-23

Titulo: Pro JavaScript Techniques (2nd Edition)
Autor: John Resig, Russ Ferguson, John Paxton
Editorial: Packt
Nro Paginas: 193

Capítulos:
Chapter 1: Professional JavaScript Techniques
Chapter 2: Features, Functions, and Objects
Chapter 3: Creating Reusable Code
Chapter 4: Debugging JavaScript Code
Chapter 5: The Document Object Model
Chapter 6: Events
Chapter 7: JavaScript and Form Validation
Chapter 8: Introduction to Ajax
Chapter 9: Web Production Tools
Chapter 10: AngularJS and Testing
Chapter 11: The Future of JavaScript
Appendix A: DOM Reference

Descarga:
Pro_JavaScript_Techniques

martes, 22 de septiembre de 2015

El Libro del Día: Cross platform UI Development with Xamarin.Forms

El Libro del Día: 2015-09-22

Titulo: Cross platform UI Development with Xamarin.Forms
Autor: Paul F. Johnson
Editorial: Packt
Nro Paginas: 330

Capítulos:
Chapter 1: In the Beginning
Chapter 2: Let's Get the Party Started
Chapter 3: Making It Look Pretty and Logging In
Chapter 4: Making Your Application Portable
Chapter 5: Data, Generics, and Making Sense of Information
Chapter 6: A View to a Kill
Chapter 7: Connect Me to Your Other Services
Chapter 8: What a Bind!
Chapter 9: Addressing the Issue
Chapter 10: This is the World Calling
Chapter 11: A Portable Settings Class
Chapter 12: Xamarin Forms Labs
Chapter 13: Social Media into the Mix
Chapter 14: Bringing It All Together

Descarga:
Cross_platform_UI_Development_with_Xamarin.Forms

lunes, 21 de septiembre de 2015

El Libro del Día: Instant Audio Processing with Web Audio

El Libro del Día: 2015-09-21

Titulo: Instant Audio Processing with Web Audio
Autor: Chris Khoo
Editorial: Packt
Nro Paginas: 76

Capítulos:
1. Setting up a web host (Simple)
2. Playing audio in a loop (Simple)
3. Setting the volume (Simple)
4. Automating the audio parameters (Intermediate)
5. Building an equalizer using BiquadFilterNode (Advanced)

Descarga:
Instant_Audio_Processing_with_Web_Audio

viernes, 18 de septiembre de 2015

El Libro del Día: OpenGL Data Visualization Cookbook

El Libro del Día: 2015-09-18

Titulo: OpenGL Data Visualization Cookbook
Autor: Raymond CH Lo, William CY Lo
Editorial: Packt
Nro Paginas: 298

Capítulos:
Chapter 1: Getting Started with OpenGL
Chapter 2: OpenGL Primitives and 2D Data Visualization
Chapter 3: Interactive 3D Data Visualization
Chapter 4: Rendering 2D Images and Videos with Texture Mapping
Chapter 5: Rendering of Point Cloud Data for 3D Range sensing Cameras
Chapter 6: Rendering Stereoscopic 3D Models using OpenGL
Chapter 7: An Introduction to Realtime Graphics Rendering on a Mobile Platform using OpenGL ES 3.0
Chapter 8: Interactive Realtime Data Visualization on Mobile Devices
Chapter 9: Augmented Reality based Visualization on Mobile or Wearable Platforms

Descarga:
OpenGL_Data_Visualization_Cookbook

jueves, 17 de septiembre de 2015

El Libro del Día: Ext JS 6 By Example

El Libro del Día: 2015-09-17

Titulo: Ext JS 6 By Example
Autor: Anand Dayalan
Editorial: Packt
Nro Paginas: 226

Capítulos:
Chapter 1: Getting Started with Ext JS
Chapter 2: Core Concepts
Chapter 3: Basic Components
Chapter 4: Data Packages
Chapter 5: Working with Grids
Chapter 6: Advanced Components
Chapter 7: Working with Charts
Chapter 8: Theming and Responsive Design

Descarga:
ExtJS_6_By_Example

miércoles, 16 de septiembre de 2015

Videos - Conferencia JSChannel 2015

Videos de la Conferencia JSChannel 2015

Antes de iniciar este post, quiero agradecer al CEPS UNI por la invitación para la conferencia Developer Days 2015 y también agradecer a todos los asistentes, sobre todo a mis alumnos que siempre estan apoyandome.

Parte importante de este blog, es la difusión de nuevas tecnologías, sobre todo JavaScript y HTML5, por lo cual, comparto la conferencia JSChannel realizada el 17 y 18 de Julio en Bangalores (India) organizada por JSChannel y patrocinada por McKinsey Digital Labs y que conto con la presencia del Doctor Douglas Crockford (JavaScript - JSON) y Yehuda Katz (JavaScript - Ember.js).

A continuación les dejo los videos de la conferencia, sobre todo es recomendable ver la propuesta del Doctor Crockford sobre la Nueva Web que propone.

1. JSChannel 2015 - Opening Keynote (Douglas Crockford)


2. JSChannel 2015 - Opening Keynote (Yehuda Katz)


3. JSChannel 2015 - Angular 2.0 Vs Aurelia


4. JSChannel 2015 - Design Thinking and Doing


5. JSChannel 2015 - Building a Mini Angular Framework From the Ground Up


6. JSChannel 2015 - React & Flux


7. JSChannel 2015 - Evolution of Javascript Frameworks


8. Channel 2015 - Lightning/Flash Talk


9. JSChannel 2015 - WebGL and Three.js


10. JSChannel 2015 - JS Performance Deep Dive


11. JSChannel 2015 - Functional Reactive Programming in JavaScript


12. JSChannel 2015 - Panel Discussion


13. JSChannel 2015 - Ending Keynote (Satty Bhens)



El Libro del Día: Three.js Cookbook

El Libro del Día: 2015-09-16

Titulo: Three.js Cookbook
Autor: Jos Dirksen
Editorial: Packt
Nro Paginas: 300

Capítulos:
Chapter 1: Getting Started
Chapter 2: Geometries and Meshes
Chapter 3: Working with the Camera
Chapter 4: Materials and Textures
Chapter 5: Lights and Custom Shaders
Chapter 6: Point Clouds and Postprocessing
Chapter 7: Animation and Physics

Descarga:
Three.js_Cookbook

martes, 15 de septiembre de 2015

El Libro del Día: Learning React Native

El Libro del Día: 2015-09-15

Titulo: Learning React Native
Autor: Bonnie Eisenman
Editorial: O'Reilly
Nro Paginas: 104

Capítulos:
1. Introduction
2. Getting Started
3. Components for Mobile
4. Styles

Descarga:
Learning_React_Native

jueves, 10 de septiembre de 2015

El Libro del Día: Ember.js Web Development with Ember CLI

El Libro del Día: 2015-09-10

Titulo: Ember.js Web Development with Ember CLI
Autor: Suchit Puri
Editorial: Packt
Nro Paginas: 174

Capítulos:
Chapter 1: Getting Started with Building Ambitious Ember.js Applications with Ember CLI
Chapter 2: Understanding Ember.js Object-oriented Patterns
Chapter 3: Rendering Using Templates
Chapter 4: Managing Application State Using Ember.js Routes
Chapter 5: Handling Display Logic Using Ember.js Controllers
Chapter 6: Communicating with the API Server Using ember data
Chapter 7: Building Reusable Components

Descarga:
Ember.js_Web_Development_with_Ember_CLI

miércoles, 9 de septiembre de 2015

El Libro del Día: Data Oriented Development with AngularJS

El Libro del Día: 2015-09-09

Titulo: Data Oriented Development with AngularJS
Autor: Manoj Waikar
Editorial: Packt
Nro Paginas: 156

Capítulos:
Chapter 1: AngularJS Rationale and Data Binding
Chapter 2: Working with Data
Chapter 3: Custom Controls
Chapter 4: Firebase
Chapter 5: Getting Started with AngularFire
Chapter 6: Applied Angular and AngularFire
Appendix A: Yeoman
Appendix B: Git and Git Flow
Appendix C: Editors and IDEs

Descarga:
Data_Oriented_Development_with_AngularJS

lunes, 7 de septiembre de 2015

Artículos - Buenas Prácticas de Performance en Sitios Web

Buenas Prácticas de Performance en Sitios Web

Uno de los principales atributos de un sitio web es que tenga un Alto Rendimiento, es decir, una buena Performance. En esta sección veremos todo lo necesario para mejorar el rendimiento de nuestros sitios web.


1.   Factores para Medir la Performance de una Aplicación
Los 2 factores más importantes para medir la performance son:
·         Tiempo de Procesamiento, el cual debe ser el menor posible
·         Consumo de Memoria, el cual también debe ser el menor posible

2.   Componentes de un Sitio Web
Los componentes de un Sitio Web los podemos dividir en 2 grandes grupos:
Front-End
Representa el inicio del procesamiento, sobre el cual interactúa el usuario y envía las órdenes al Back-End.
En un entorno web éste se compone básicamente por el Navegador (Browser), el cual procesa los siguientes elementos:
·         HTML, son las etiquetas que especifican lo que hay que Pintar en el Navegador.
·         JavaScript, son Secuencias de Comandos que debe ejecutar el Motor de Scripts.
·         Hojas de Estilos (CSS), son los formatos que se aplicarán a los elementos HTML.
·         Imágenes, son gráficos que debe mostrar el navegador, etc.

Componentes del Front-End de un Sitio Web
Todos estos elementos se encuentran definidos dentro de la página y deben descargarse desde el Servidor Web hacia el Cliente Web (navegador).
Back-End
Representa el final del procesamiento y se encarga de procesar las llamadas del Front-End y devolver resultados.
En un entorno web éste se compone de los Servidores entre los cuales tenemos:
·         Servidor Web, donde se aloja la aplicación web, por ejemplo, el Internet Information Services (IIS) de Microsoft.
·         Servidor de Datos, donde se aloja la base de datos, por ejemplo, el SQL Server de Microsoft.
·         Servidor de Aplicaciones, donde se aloja los Componentes Reusables, por ejemplo, el IIS con Servicios WCF, un Host WCF con Servicios, un Host .NET Remoting con Librerías Remotas, etc.
Componentes del Back-End de un Sitio Web

3.   El problema de la Performance en los Sitios Web
Hace varios años un equipo de investigadores de Yahoo, encabezados por Steve Souders, investigó el problema de la performance, que es: “Cuales son los factores que causan que un Sitio Web sea lento”.
La conclusión a la que llegaron fue que entre el 80 y 85 % de la velocidad de carga de una página está asociada al Front-End y solo del 15% al 20% de problemas lo causa el Back-End.
En síntesis, para dar mayor velocidad a nuestras aplicaciones, hay que optimizar sobre todo la página en el lado del cliente, es decir, HTML, JavaScript, CSS, Imágenes, etc, lo cual se trata con mayor detalle a continuación.


Estadística del Problema de la Performance

4.   Las 14 Reglas de Performance de Steve Souders
En el 2007 Steve Souders arquitecto principal de Yahoo escribió el Libro: “High Performance Web Sites”, en el cual resume en 14 reglas los criterios más importantes para la velocidad de un Sitio Web, además creó una herramienta llamada YSlow que ayuda a medir la performance, que junto a PageSpeed de Google son las herramientas más usadas para este fín.
Las 14 reglas de Steve Souders para que un sitio web tenga un alto rendimiento son:
·         Regla 1: Hacer pocas solicitudes HTTP
·         Regla 2: Usar una Red de Entrega de Contenidos (CDN)
·         Regla 3: Añadir una Cabecera HTTP con el Tiempo de Expiración
·         Regla 4: Comprimir Componentes usando GZIP
·         Regla 5: Ubicar la Definición de Hojas de Estilos al inicio de la página
·         Regla 6: Ubicar la Definición de JavaScripts al final de la página
·         Regla 7: Evitar usar Expresiones CSS
·         Regla 8: Usar JavaScript y CSS externos (archivos)
·         Regla 9: Reducir Búsquedas en Sistema de Nombres de Dominios (DNS)
·         Regla 10: Minificar o Reducir JavaScript y CSS
·         Regla 11: Evitar Redirecciones
·         Regla 12: Remover Scripts duplicados
·         Regla 13: Configurar ETags
·         Regla 14: Guardar en Cache Ajax

5.   Otras 14 Consideraciones de Performance de Steve Souders
En el 2009 Steve Souders escribe otro Libro titulado: “Even Faster Web Sites”, en colaboración con otros especialistas, como:
·         Dion Almaer y Ben Galbraith, líderes de la comunidad Ajax (Mozilla).
·         Douglas Crockford, creador de JSON (Yahoo).
·         Tony Gentilcore, creador de Fasterfox (Google).
·         Dylan Schiemann, co-creador de Dojo Toolkit (SitePen).
·         Stoyan Stefanov, co-creador de YSlow 2.0 y Smush.it (Yahoo).
·         Nicole Sullivan, experta en CSS, co-creadora de Smush.it (W3C)
·         Nicholas C. Zakas, co-creador de YUI Library (Yahoo).
Estas 14 consideraciones para que un sitio web sea siempre rápido son:
·         Consideración 1: Optimizar Ajax
·         Consideración 2: Crear Aplicaciones Web Adaptativas
·         Consideración 3: Dividir la Carga Inicial de la Página
·         Consideración 4: Cargar Scripts sin bloquear el Navegador
·         Consideración 5: Unir Scripts Asíncronos
·         Consideración 6: Posicionamiento de Scripts en línea
·         Consideración 7: Optimizar JavaScript
·         Consideración 8: Escalado con Comet
·         Consideración 9: Aumentando GZIP
·         Consideración 10: Optimizando Imágenes
·         Consideración 11: Fragmentando Dominios Dominantes
·         Consideración 12: Nivelar desde el inicio el Documento
·         Consideración 13: Usar escasamente los iFrames
·         Consideración 14: Simplificar los Selectores CSS

6.   Principales Reglas de Performance en Sitios Web

·         Regla 1: Hacer la menor cantidad de solicitudes (HTTP Request)
Para cumplir con esta regla se deberá bajar la menor cantidad de archivos del servidor al cliente, por lo que se debe tener en cuenta lo siguiente:
Ø  Tratar de enviar solo uno o dos archivos de JavaScript. De preferencia debe ser un solo archivo conteniendo solo las funciones usadas en dicha página. Sin son 2 archivos JS uno será genérico (compartido para varias páginas) y otro específico (solo para dicha página).
Ø  Tratar de enviar solo uno o dos archivos de Hojas de Estilos. De preferencia debe ser un solo archivo conteniendo solo los estilos usados en dicha página. Sin son 2 archivos CSS uno será genérico (compartido para varias páginas) y otro específico (solo para dicha página).
Ø  Tratar de Reducir el número de imágenes enviadas al cliente usando Sprites o si las imágenes son pequeñas enviando un flujo serializado como Base64 String.
Comentarios
Actualmente, la mayoría de Sitios Web No cumplen con la regla más importante de la performance, por las siguientes razones:
Ø  Uso de varios archivos de JavaScripts de Frameworks como jQuery, jQueryUI, PlugIns, etc; la mayoría de veces solo por usar unas cuantas características (funciones) de cada uno en la página, innecesariamente se bajan todos los archivos con todas las funciones.
Ø  Uso de varios archivos de Hojas de Estilos de Frameworks de Diseño Web Adaptativo (Responsive Web Design) como Bootstrap, jQuery Mobile, etc; la mayoría de veces solo por usar unas cuantas características (estilos) de cada uno en la página, innecesariamente se bajan todos los archivos con todos los estilos.
Ø  Uso exagerado de archivos de imágenes para mejorar la apariencia de la página, sin importar que por cada archivo mostrado se tenga que hacer un viaje desde el cliente hacia el servidor para traerla y mostrarla.
Ø  El hacer Bundling (Fusión de Archivos) para los JS y CSS No es la mejor solución, ya que si bien es cierto se envía un solo archivo al cliente se incumple la segunda regla ya que se envía mucho contenido.

·         Regla 2: Enviar la menor cantidad de bytes al cliente
Esta segunda regla requiere enviar la menor cantidad de datos del servidor al cliente, incluyendo: HTML, JavaScript, CSS, Imágenes, etc; para lo cual debemos tener en cuenta lo siguiente:
Ø  Solo incluir las funciones de JavaScript que se van a usar en la página.
Ø  Solo incluir los estilos que se van a usar en la página.
Ø  Una vez seleccionado solo las funciones necesarias, minificar el archivo JS.
Ø  Una vez seleccionado solo los estilos necesarios, minificar el archivo CSS.
Ø  Minificar el HTML de la página que viene del servidor, si se usa controles de lado del servidor se deberá crear un Modulo HTTP que intercepte el contenido y minifique el HTML.
Ø  Optimizar las imágenes antes de enviarlas al cliente, reduciendo su tamaño y escogiendo un formato comprimido que no pierda la calidad, por ejemplo el formato png o web-p.
Comentarios
Actualmente, la mayoría de Sitios Web tampoco cumplen con la segunda regla más importante de la performance, por las siguientes razones:
Ø  Cuando usan archivos de JavaScript de terceros, no seleccionan solo las funciones que necesitan en la página y las copian a su único archivo JS, sino que se descargan todos los archivos con todas las funciones tal cual venga en el Framework JavaScript que están usando.
Ø  Cuando usan archivos de hojas de estilos de terceros, no seleccionan solo los estilos que necesitan en la página y las copian a su único archivo CSS, sino que se descargan todos los archivos con todos los estilos tal cual venga en el Framework Responsive Web Design que están usando.
Ø  Minificar los archivos JS con todas las funciones que vienen en los Frameworks de JavaScript, las cuales en su mayoría no se usan, es una solución incompleta, lo mejor es minificar solo las funciones que se usan y no enviar en vano tanto contenido.
Ø  Minificar los archivos CSS con todos los estilos que vienen en los Frameworks Responsive, los cuales en su mayoría no se usan, es una solución incompleta, lo mejor es minificar solo los estilos que se usan y no enviar en vano tanto contenido.
Ø  Muchos desarrolladores usan Controles de lado del Servidor que generan demasiado HTML, mejor sería enviar solo los datos necesarios y pintarlos en el cliente. Pero cuidado, no usar HTML, XML ni JSON, si queremos reducir al máximo el ancho de banda solo debemos enviar los datos sin metadata, por ejemplo, separados por un caracter, inclusive se pueden enviar imágenes como Base64String.

·         Regla 3: Hacer Llamadas Asíncronas Ligeras
Es muy importante mantener siempre la disponibilidad de la aplicación, es decir, por ejemplo, que el usuario siempre pueda trabajar con la interface de usuario. Para esto podemos usar la programación asíncrona, en el caso de las llamadas desde el cliente al servidor generalmente se usa Ajax, para lo cual debemos tener en cuenta lo siguiente:
Ø  Usar XMlHttpRequest (XHR) para hacer llamadas asíncronas en forma nativa, ya que es un estándar de la W3C que actualmente es soportado por todos los navegadores. Los que usan jQuery Ajax, Microsoft Ajax, Ajax Control Toolkit, etc, están usando una librería que internamente usa XHR. Por ejemplo, los métodos de jQuery: $.get, $.post, $.json y $.ajax son llamadas a los métodos open y send de XHR.
Ø  Enviar y recibir datos como cadenas (Text) al hacer llamadas asíncronas, ya que solo ocupa un 7% de todo el HTML (100%), mientras las vistas parciales con HTML son el 50% aproximadamente y si se usa JSON sería el 25% aproximadamente. Es decir, creando un Serializador en el Servidor (código C# en .NET) se puede convertir objetos a cadenas y reducir el ancho de banda en casi un 93%, logrando mayor velocidad de carga de la pagina, aunque tengamos que pintar los controles HTML por JavaScript.
Ø  No escribir código en el inicio de la página, dejarlo en un método que se llame en forma asíncrona, debido a que la primera vez siempre se demora la pagina en cargar y mas el código a ejecutar seria más lento, en cambio, si enviamos la pagina sin ejecutar ningún código al inicio, dejamos que cargue en el navegador y recién hacemos la llamada en forma asíncrona (segundo plano) usando XHR y devolviendo cadenas con los datos que se pintaran como HTML usando JavaScript.
Comentarios
Esta tercera regla también es ignorada por que en muchos casos se hace lo siguiente:
Ø  Se usa jQuery como librería de JavaScript para hacer operaciones asíncronas. En realidad, no fuera malo si solo se seleccionara los métodos que se van a usar, pero casi todos no lo hacen y se trabaja con el archivo JS completo, es por eso, que mejor sería usar directamente una función que use XmlHttpRequest.
Ø  Actualmente, en ASP.NET MVC, la mayoría para trabajar en forma asíncrona usa vistas parciales que envían HTML o jQuery que envía JSON (con metadata) el cual es pintado en el cliente. Esta segunda forma es mejor que la primera, pero la más óptima es que se envíe solo los datos (sin metadata) y se pinte en el cliente.
Ø  Siempre se implementa Ajax en el regreso de la pagina (PostBack), por ejemplo, al dar clic a un botón de consulta o al grabar; pero es indispensable que también se haga en el inicio, ya que es aquí donde se demora más y se necesita que el usuario vea rápido la pagina web y no se quede en blanco el navegador.

·         Regla 4: Optimizar las operaciones con Bases de Datos
Esta regla implica trabajar en forma desconectada la explotación de datos y en forma conectada por lotes la actualización de datos, para mayor detalle seguir las siguientes directivas:
Ø  Las operaciones con datos como búsquedas o filtros, paginación, ordenación, exportación de datos a texto, Excel, etc, se pueden realizar solo en el cliente usando JavaScript, en vez de estar yendo al servidor para realizar tareas con datos que muchas veces No cambian constantemente. Por ejemplo, el ubigeo, al seleccionar el Departamento, filtrar las Provincias y al seleccionar la Provincia filtrar los Distritos; muchos se van hasta el Servidor de Base de Datos, otros hasta el Servidor Web, cuando fácilmente podría hacerse en el cliente.
Ø  Las operaciones de actualización de datos, como inserción, actualización y eliminación generalmente se hacen en forma conectada, pero de preferencia debe hacerse por lotes, es decir no por cada registro sino por un grupo de registros, por ejemplo los mostrados en una página.
Ø  Si hay que insertar o actualizar muchos registros, por ejemplo más de 100, es preferible realizar copias masivas si el origen de datos es SQL Server u Oracle Server, para lo cual se almacena los datos en una tabla y se envía con la clase BulkCopy de ADO.NET. Otra alternativa sería enviar una cadena separada por caracteres especiales y tener un Procedimiento Almacenado que las separe y las inserte o actualice en su tabla destino.
Comentarios
Esta cuarta regla también no se cumple por las siguientes razones:
Ø  La mayor parte de las consultas a todo tipo de datos, desde el sexo, estado civil, ubigeo, tipo de documentos comerciales, empleados, clientes, proveedores, etc.; se realizan en forma conectada, siendo para la mayor parte de casos innecesario ya que los datos no varían constantemente. Algunos guardan los datos en variables de Sesión en el Servidor Web, a veces en un TempData en MVC para no ir hasta la BD, pero otros, si van a consultar a la Base de Datos creando conexiones constantemente y saturando el ancho de banda de la red.
Ø  En el caso de las actualizaciones, la mayoría trabaja en forma individual, es decir, realiza los cambios en cada registro, en vez de hacerlo por lotes o para un grupo de registros consumiendo una sola conexión a la base de datos, sobre todo si es gran cantidad de registros que se quiere actualizar o insertar.

7.   Arquitectura de Desarrollo Web de Bajo Rendimiento (ADWBR)
Una Arquitectura de Desarrollo Web que produce un Bajo Rendimiento (Low Performance) es aquella que tiene las siguientes características:
·         Está Orientada al momento del Desarrollo o a facilitar la Construcción, por lo que usa intensivamente Librerías o Frameworks de terceros.
·         Se piensa que favorece al Desarrollador ya que al usar bloques de código pre-construido (Frameworks) el tiempo de desarrollo es menor que si se hace todo desde cero.
·         Cada página descarga muchos archivos en el cliente, porque usa muchas librerías de JavaScript, muchos archivos de CSS y muchas imágenes que se bajan de uno en uno o de dos en dos, dependiendo del navegador que se use.
·         Se descarga mucho contenido, por ejemplo todo el HTML con los datos a presentar, todas las funciones JavaScript se usen o no y todos los estilos se usen o no. Eso ocurre por usar Frameworks de terceros y no ser selectivo, hay cosas que no se usan pero todo viaja.
·         Usan llamadas asíncronas pesadas, ya que envían muchos datos de ida y de vuelta, algunos usan XML como formato de transporte y otros reducen el ancho de banda usando JSON, pero igual se puede mejorar mas.
·         Hacen operaciones No óptimas con Bases de Datos, ya que todo se hace en forma conectada usando Frameworks pesados como Entity Framework, cuando trabajan en forma desconectada usan DataSet y DataTables, y cuando actualizan gran cantidad de registros lo hacen en forma individual ejecutando muchos comandos.
Componentes de una Arquitectura de Desarrollo Web de Bajo Rendimiento

8.   Arquitectura de Desarrollo Web de Alto Rendimiento (ADWAR)
Una Arquitectura de Desarrollo Web que produce un Alto Rendimiento (High Performance) es aquella que tiene las siguientes características:
·         Está Orientada al momento del Despliegue o a facilitar la Ejecución, por lo que se hace todo desde cero y nativo.
·         Favorece al usuario final, ya que la aplicación web será muy rápida, pero también puede favorecer al desarrollador ya que no habrá problemas de soporte post producción.
·         Cada página descarga pocos archivos en el cliente, solo un HTML, un JavaScript, un CSS, y las Imágenes se envían en un solo Paquete o como un archivo Sprite.
·         Se descarga poco contenido, por ejemplo solo viaja los datos como cadenas sin HTML y por JavaScript se crea el HTML como cadena y se pinta una vez en el DOM, el archivo JavaScript solo tiene las funciones que se van a usar en la pagina, el archivo CSS solo los estilos usados por esa página y las Imágenes están optimizadas (comprimidas).
·         Usan llamadas asíncronas ligeras mediante XmlHttpRequest (XHR), enviando los datos como cadenas tanto en la ida como en la vuelta, esto permite ahorrar en más de 90% el ancho de banda logrando mayor velocidad.
·         Hacen operaciones óptimas con Bases de Datos, ya que se usa ADO.NET para el acceso a datos, las consultas se trabajan en forma desconectada con Listas de Objetos en el Servidor Web y en el Cliente con Matrices en JavaScript. Las actualizaciones se hacen por lotes y para gran cantidad de registros se usa BulkCopy o Cadenas en el Procedimiento Almacenado.
Componentes de una Arquitectura de Desarrollo Web de Alto Rendimiento

Comentario Final

Se que muchos no compartiran algunas ideas de este artículo, ya que esta muy arraigado los estándares de reusabilidad que son diferentes a los de performance que es lo que yo propongo, y el cual en los últimos meses me he encargado de difundir, Tengo una nueva arquitectura que estoy trabajando basada en la Performance.

Los interesados en conocer la parte práctica y la comparación de resultados entre la arquitectura tradicional y la arquitectura que propongo pueden asistir este Sabado 12 de Setiembre de 2:00 pm a 2:50 pm en el CEPS de la UNI, del cual dejo la relación de charlas: