lunes, 23 de junio de 2014

La revolución de Javascript

De un lenguaje de script, Javascript se ha convertido en los últimos años en la plataforma de desarrollo más usada en el mundo. Hoy, Javascript se está reinventando gracias a proyectos como Coffeescript, DART, Node.js y jQuery.

Javascript es un lenguaje de script muy simple. Orientado a objetos (como Actionscript 2, sin clases) y basado en la sintaxis ECMAScript, derivado de C. Fue pensado para crear sencillas interacciones en la web, pero hoy es uno de los lenguajes criticos de las plataformas modernas.

TODAS las webapps usan Javascript. Facebook, Google (con Instant), Twitter o Maps funcionarían muy limitado o serían imposibles sin JS.

La primera revolución fueron los Just in Time Compilers (JIT compiler) como Tamarin de Adobe. Los motores JIT en los navegadores hicieron a JS un lenguajeMUY VELOZ. Chrome tiene V8, Firefox tiene JägerMonkey y cada browser tiene un JIT Compiler que hace que JS tenga tanta velocidad como la tuvo alguna vez Java.

Pero la revolución más fuerte está en el lenguaje. Cuatro tecnologías quieren cambiar la forma en la que escribimos Javascript y tu tienes que elegir alguna. ¿Aun haces Javascript desnudo sin ningún framework o compilador? Estás en el pasado:

DART


DART es el esfuerzo de Google por crear un Javascript más Java. Tu programas en DART con su sintaxis propia, al estilo Java y si estás en Chrome, te corre nativo. Si estás en otro navegador, DART es capaz de "compilarse" a Javascript normal. Por lo que funciona en todos los navegadores.

Las ventajas: DART es un lenguaje orientado a objetos real. Namespaces, clases, herencias, interfaces, patrones de diseño, todo lo que esperas en un lenguaje robusto y poderoso con toda la ingeniería de software aplicable. Por ejemplo, así se hace un hola mundo:
Código :
class HelloDartTest {
  static testMain() {
    print("Hello, Darter!");
  }
}

main() {
  HelloDartTest.testMain();
}

Las desventajas: Ese hola mundo de unas 5 lineas de código se convierten en !17mil lineas de Javascript compilado! Aun está en proceso el lenguaje y el compilador (alpha) pero la necesidad de precompilación antes de usarlo hace que DART aun sea una opción, aunque prometedora, verde.


Node.js


Node.js es la capacidad de usar Javascript del lado del servidor, igual que usarías PHP. Puedes programar con JS toda tu aplicación. ¿Otra ventaja?Comparten ambito de variables. Puedes compartir datos JSON entre cliente y servidor de manera transparente, sin variables de sesión ni cookies. ¿Otra ventaja? Es realtime. Con el uso de websockets, AJAX pooling, proxy http y otras técnicas, Node.js crea una conexión de intercambio de datos en tiempo real con el server. 

Hacer un chat por ejemplo, es tan idiota como poner esto en el server:
Código :
var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
  socket.on('chat', function (data) {
    socket.emit('room', { mensaje: data.mensaje });
  });
});

Y esto en el JS del HTML:
Código :
<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect('http://localhost');
  socket.on('room', function (data) {
    //codigo para poner mensaje nuevo en la conversación
  });
  // código para enviar como cliente un mensaje al chat
  socket.emit('chat', { nick: "freddier", mensaje: campo.value });
</script>

¿Desventajas? Es su propio server, no se pega a Apache o similares. Aun está un poco verde aunque ya hay frameworks enteros de desarrollo de webapps como ExpressJS que es lo que Django es a Python o PHP es a... PHP.


CoffeeScript


Coffeescript es una revolución muy interesante. Muy similar a DART, CoffeeScript es un precompilador de Javascript en el que programas en una sintaxis muy similar a Python y el software te genera los JS. Es JS de toda la vida, pero con una sintaxis mejor y una librería nativa mejor. 

Como ejemplo, este es el hola mundo de CoffeeScript, con funciones, declaración de objetos JSON e invocación:
Código :
mensaje =
    parte1: "hola "
    parte2: "mundo"
holaMundo = ->
    alert mensaje.parte1 + mensaje.parte2 + "!"
holaMundo()

Y este el resultado compilado en Javascript:
Código :
var holaMundo, mensaje;
mensaje = {
  parte1: "hola ",
  parte2: "mundo"
};
holaMundo = function() {
  return alert(mensaje.parte1 + mensaje.parte2 + "!");
};
holaMundo();


Es bastante eficiente y robusto y todo se convierte a JS nativo. Si te gusta más Python o Ruby que Java, entonces CoffeeScript es el camino. Si eres más Java y tradicional, apuestale a DART.


jQuery, jQuery UI y jQuery Mobile


jQuery es el framework más famoso por excelencia y Cristalab tiene infinidades de tutoriales de jQueryjQuery UI es la extensión de jQuery cargada de componentes de interfaz que permite crear apps completas basadas en el navegador. Pero la gente de jQuery ha creado algo más hermoso en jQuery Mobile.

Con la ayuda de Adobe y su Theme Roller, jQuery Mobile permite crear completamente aplicaciones web para todo tipo de teléfonos móviles y tabletas sin necesidad de HTML. Define TODO en JS. Define headers, secciones, botones, sliders, diseños, colores, pantallas, efectos. TODO. jQuery Mobile se encarga de convertirlo a algo visual, lindo, veloz y que funcione en TODOS los teléfonos modernos y no tan modernos. 

Y si sumamos PhoneGap (que ahora es de Adobe) o Adobe AIR, podemos con ese mismo código crear una app nativa multiplataforma para iPhone, iPad o Androids. 

El fin de la incompatibilidad


La magia detrás de cosas como DART, jQuery, Node.js y Coffeescript es que son 100% retrocompatibles con todos los navegadores, incluso los viejos. Ya pasó el tiempo en el que un script no te funcionaba en ciertos IE u otra cosa rara no arrancaba en Firefox o Chrome. Ahora programas una vez y lo ves igual en todas partes.


Excepto claro, si aun haces JS desnudo de siempre. Que es muy testosterónico, pero poco productivo. Los frameworks hacen fácil la vida, los grandes jugadores los usan. No hay por qué no usarlos.


FUENTE: http://www.cristalab.com/blog/la-revolucion-de-javascript-c101359l/

jueves, 15 de mayo de 2014

ASP.NET,ASP.NET MVC,MICROSOFT

¿Qué es ASP.NET Web API?

Es un marco de trabajo (framework) encima del .NET framework, que simplifica la construcción de servicios HTTP para un amplio rango de clientes (incluyendo navegadores móviles).
Usando ASP.NET Web API podemos crear servicios que no están basados en SOAP como XML simple o cadenas JSON, etc. con muchas ventajas incluyendo
  • Crear servicios orientados a recursos usando las características completas de HTTP.
  • Exponer servicios a una variedad de clietnes fácilmente como navegadores o dispositivos móviles, etc.

¿Cuáles son las ventajas de usar ASP.NET Web API?

Usarlo tiene un gran número de ventajas pero las ventajas importantes son:
  • Funciona de la manera de HTTP usando verbos estándares como GET, POST, PUT, DELETE para operaciones CRUD (crear, reportar, actualizar, eliminar).
  • Soporte completo para enrutamiento.
  • Respuesta generada en formato JSON o XML usando MediaTypeFormatter.
  • Tiene la habilidad de ser hospedado en IIS (Internet Information Services) y fuera de IIS.
  • Soporta enlace de modelos y validación.
  • Soporte para OData.

¿Qué nuevas características son introducidas en ASP.NET Web API 2.0?

Las siguientes:
  • Enrutamiento de atributos.
  • Autenticación externa.
  • CORS (Cross-Origin Resource Sharing)
  • OWIN (Open Web Interface para .NET) auto hospedaje.
  • IHttpActionResult.
  • Web API OData.

¿WFC versus ASP.NET Web API?

WFC (Windows Communication Foundation) está diseñado para intercambiar mensajes estándares basados en SOAP usando una variedad de protocolos de transporte como HTTP, TCP, Named Pipes, MSMQ, etc.
Por otro lado, ASP.NET Web API es un marco de trabajo para construir servicios que no están basados en SOAP, solamente sobre HTTP.

¿Es verdad que ASP.NET Web API ha reemplazado WCF?

Es un concepto erróneo. Es sólo otra forma de construir servicios que no están basados en SOAP.
Tiene algunas ventajas añadidas pero WCF es aún la mejor opción para los siguientes escenarios:
  • Si vamos a usar un transporte diferente a HTTP como por ejemplo TCP, UDP o Named Pipes.
  • Escenario de encolamiento de mensajes usando MSMQ.
  • Comunicación de una sola vía o comunicación dúplex.

¿MVC versus ASP.NET Web API?

ASP.NET Web API crea simples servicios HTTP que devuelven datos crudos (RAW).
Por otro lado, ASP.NET MVC es utilizado para desarrollar aplicaciones web que generan Vistas así como datos. ASP.NET MVC facilita la generación de HTML fácilmente.

¿Cómo devolver una Vista desde un método ASP.NET Web API?

(Una pregunta difícil) No, no podemos devolver una Vista desde un método ASP.NET Web API.

¿Cómo restringir el acceso a un método Web API para un verbo específico HTTP?

Los atributos juegan un rol aquí. Fácilmente podemos restringir acceso a un método ASP.NET Web API usando un específico método HTTP. Por ejemplo podríamos tener que restringir un método Web API a través del verbo HTTP POST así:
1
2
3
4
5
[HttpPost]
public void UpdateStudent(Student aStudent)
{
   StudentRepository.AddStudent(aStudent);
}

¿Podemos utilizar Web API con un formulario web ASP.NET?

Sí, ASP.NET Web API está enlazado con el marco de trabajo ASP.NET MVC pero todavía puede ser utilizado con un formulario web ASP.NET.
Puede ser hecho en 3 simples pasos:
  1. Crear un controlador Web API.
  2. Agregar una tabla de ruteo al método Application_Start del Global.asax.
  3. Hacer una llamada jQuery AJAX al método Web API y obtener los datos.

¿Cómo podemos proveer de un nombre alias para una acción ASP.NET Web API?

Usando un atributo “ActionName”.
1
2
3
4
5
6
[HttpPost]
[ActionName("SaveStudentInfo")]
public void UpdateStudent(Student aStudent)
{
   StudentRepository.AddStudent(aStudent);
}