SharePoint 2016 Preview Ya disponible y primeras impresiones!!

Ayer por la tarde el equipo de Microsoft anuncio la disponibilidad para descarga de la nueva versión de nuestro servidor favorito SharePoint 2016 ya esta disponible para descargar. El equipo de producto anuncio que la nueva versión iba a tener como principales características que iba a tener una mejor experiencia de usuario, iba a tener una arquitectura híbrida y muy robustos en temas de seguridad.  

Roles

Lo primero que se destaca a la hora de abordar la instalación es el tema de los roles. Mucho se ha hablado sobre esta característica y su importancia.

 Un problema de muchas granjas de SharePoint es que no estaba bien distribuida la carga entre los servidores bien por un crecimiento no tenido en cuanta bien por una mala configuración, dependiendo del escenario y de los servicios que se utilizaba se opta por un rol u otro. Ahora se facilita mucho esta tarea para ello desde el propio Wizard se puede seleccionar el rol que va a tener ese servidor, pero lo más interesante es que ese rol se puede modificar desde la Administración Central. Para ello hay ir a la Administracion Central-> System Settings -> Servers -> Conver role in this farm 

A continuación te salen todos los servidores que hay en dicha granja y la opción de cambiarle el rol que ocupa

Más información sobre esta nueva característica esta disponible aqui https://technet.microsoft.com/en-us/library/mt346114(v=office.16).aspx

 

Lanzador de Aplicaciones

De una forma idéntica a la que hay en Office 365, ahora dentro de los sitios de SharePoint tenemos un lanzador de Aplicaciones dentro del sitio: 

De momento no he encontrado forma de como agregar Aplicaciones a este menú, pero todo se andará 🙂 

Requisitos para instalarlo:

 SharePoint es un sistema que generalmente entre versión y versión se han incrementado mucho los recursos que hace falta. En esta nueva versión no se han incrementando dichas características respecto a la versión de 2013. 

Aspectos Deprecated:

 

  • SharePoint Foundation (una gran noticia)
  • Instalacion de tipo standalone
  • ForeFront Identity Manager
  • Excel Services en SharePoint
  • Capacidades de BI
  • Tags y Notas

 

Otras cosas interesantes:

  • Se incrementa la limitación en cuanto al tamaño máximo de los ficheros siendo un tamaño máximo de hasta 10 Gigas para ello basta con incrementar el tamaño máximo que esta establecido dentro de la Administración Central
  • Acceso Móvil mejorado (la caracteristica introducida en Office 365 ya esta disponible en esta nueva versión).
  • Project Server: nuevas características  de la integración de Project Server 
  • Previsualización de Imagenes y Videos 
  • Creación rápida de sitios 

¿y de desarrollo qué?

Ahora mismo no hay ninguna noticia sobre Desarrollo, esta claro que continuan las Apps y las Soluciones de modo Granja. Ahora bien no disponemos del nuevo SDK para poder utilizarlo desde Visual Studio 

¿y de diseño que?

En los aspectos relativos continuamos con el Design Manager, aunque se anuncio que no habría nueva versión de SharePoint Designer con la versión de 2013 se pueden abrir los sitios sin ningún problema. Desde mi punto de vista se ha perdido una ocasión muy interesante para “descatalogar” una herramienta no muy eficaz y que tiene pocas virtudes. 

 

Conclusiones

Esto es una mirada a simple vista, hay que probar y analizar todas estas nuevas mejoras sobre conexiones híbridas y ver como con esta nueva versión de SharePoint se puede sacar provecho de lo mejor de los entornos OnPremise y Online. Iremos informando próximamente 🙂

 

TypeScript (III): Módulos Internos y gestión de su carga AMD

Cuando en el anterior post abordamos el tema de los modulos comentabamos que era la forma de encapsular diversos aspectos para tener el código mucho más organizado. Ahora bien lo que realmente da un plus de mejora respecto a JavaScript es la utilización de un modulo en otro modulo. Esta acción en .NET lo hacemos utilizando los Using que indica que cargamos determinada funcionalidad (que a su vez esta en la misma libreria/ejecutable). 

Para hacer esto en TypeScript se hace de una forma muy simple, partimos de que tenemos un Módulo Test.Utils donde implementamos un Logger para guardar las excepciones de nuestro desarrollo:

Ahora tenemos otra Modulo llamado Persona donde queremos utilizar este Log para ello en primer lugar tenemos que agregar la referencia al fichero que vamos a utilizar:

Ahora bien, el resultado de este TypeScipt al final no es otra cosa que JavaScript por lo que si miramos el fichero JavaScript resultante  no es otra cosa que una definición de una variable de esta forma: this.logger=new Test.Utils.Logger(); 

Esto provoca que dependa de que en ejecución antes de llamar al fichero que contiene la clase Person tenemos que tener cargado la clase Utils. En nuestro caso seria de la siguiente forma:


Ahora si ejecutamos nuestra aplicación y visualizamos la Consola (mediante las herramientas de depuración) visualizaremos el mensaje del constructor:

AMD ( Asynchronous module definition) 

Ahora bien si nos fijamos en el código HTML tenemos que establecer el orden de carga de los Scripts si modificamos el orden de carga de estos scripts pues en nuestra aplicación se produce un Error de que no ha encontrado determinado objeto.

Este proceso de carga en otros lenguajes como Java o C# no tenemos en cuenta porque ya se encarga de el compilador de hacer esta faena. Este proceso de carga de las dependencias que necesita las aplicaciones es lo que en JS se puede hacer de forma manual o mediante una libreria que se encargue de ir cargando los módulos según se necesite. 

En este punto casi todos coincidiréis que es mejor que se encargue una librería cuya función sea la encarga de ir cargando los módulos según necesidades principalmente por varios motivos:

  • Mantenimiento de las dependencias, legibilidad del código
  • Optimización de las librerías que necesitamos

La librería más famosa para encargarle este proceso de carga es RequireJS. Ahora vamos a ver que modificaciones tenemos que hacer a nuestro ejemplo para poder hacer la carga de forma asincrona utilizando RequireJS.

En primer lugar (siempre que utilicemos Visual Studio como IDE) nos descargaremos mediante Nuget (o el gestor de paquetes que más rabia nos de) los siguientes paquetes:

  •  RequireJS 
  • requirejs.TypeScript.DefinitelyTyped : Este paquete indica las interfaces para poder utilizar una librería de terceros dentro de TypeScript (ya vermos en la siguiente serie como hacerlo)

Dentro de nuestro modulo  debemos de introducir la palabra clave export. En nuestro ejemplo empezaremos agregando esta palabra clave tal y como se visualiza en el siguiente código:

 

Ahora si analizamos el fichero JavaScript resultante tiene una dependencia en el mismo para que se pueda integrar dentro de RequireJS:

A continuación si este modulo lo queremos utilizar en otro modulo de la aplicación tendremos que importarlo para ello lo hacemos de la siguiente forma

:

Ahora para que RequiereJS haga su función tendremos que crear un fichero de arranque, a este fichero le tenemos que añadir la referencia a los definición de tipos e indicar una serie de parámetros de configuración: baseUrl: La ubicación donde están los ficheros que se van a cargar. Y agregamos la función que se ejecuta cuando se cargue este script. 

Y para finalizar dentro del HTML quitamos todas las referencias JavaScript existentes y solamente se añade una referencia a RequiereJS  en la que hay que agregar un parametro “data-main” que tiene que tener el valor del script que va a utilizar en nuestro caso quedaría de la siguiente forma:

 

Resumen

TypeScript es un lenguaje muy potente en el que se pueden unificar las ventajas que tiene JavaScript para el desarrollo en Web junto con la organización, modularidad con la que trabajamos en la parte de servidor.

Este ejemplo lo podeís descargar desde mi GitHub

 

 

Visual Studio 2015 para SharePoint Developers

El pasado 20 de Julio se produjo el lanzamiento de la versión “definitiva” de Visual Studio 2015, uno de los productos estrellas de Microsoft y santo de devoción de casi todos los desarrolladores en la plataforma .NET. Esta nueva versión trae bastantes novedades sobre todo para la parte de desarrollo Web (integración de herramientas cono NodeJS, Grunt, Gulp, NPM dentro del IDE), mejoras en las herramientas de depuración, el poder utilizar Roselyn y mejoras para el desarrollo multiplataforma de la mano de Plantillas de Cordova. 

Ahora bien, dentro del núcleo de desarrolladores de SharePoint existe una pregunta si actualizan el IDE o esperan a la nueva versión de SharePoint para realizar esta migración, en definitiva si realmente nos aporta alguna mejora a nuestro día a día.

Aspectos a favor

  • Compatibilidad 100% con los proyectos ya existentes
  • Nueva consola de depuración de errores muy detallada y que blinda mucha información al desarrollador
  • El cambio de licenciamiento hace que equipos que anteriormente solamente disponian la versión Premium ahora tienen la posibilidad de tener la Enterprise. Lo que traducido es que dispone de una serie de plantillas como Test de Carga, Intellitrace (una aplicación que da el detalle de toda la traza de depuración de nuestra aplicación)y aspectos como por ejemplo ver a simple vista si un método tiene algún test asociado, si tiene un bug dado de alta, ver los sitios donde se utiliza y ver las personas que han realizado una modificación.

 

Aspectos en contra

  • No hay soporte para las CKS Dev. Estos son unos plugins imprescindibles para cualquier desarrolla, da unas utilidades como reinicio de los pools del IIS, desplegar ficheros dentro de la carpeta de Layouts sin tener que reiniciar.
  • WebEssentials, este es un plugin muy importante para el desarrollo Web (en versiones anteriores) ya que tiene muchas utilidades que ahora recaen en herramientas como Grunt, Gulp, (Esto puede provocar un cambio en los equipos que no utilizan ahora todas estas herramientas de FrontEnd

 

Conclusión

La migración o no a Visual Studio 2015 es algo que más tarde o más temprano se ha de producir: SharePoint 2016 esta a la vuelta de la esquina. Ahora bien la utilización o no de esta nueva versión de Visual Studio depende más de las características del equipo, si el equipo ya esta habituado a utilizar Grunt, Gulp, NodeJS como sus herramientas de FrontEnd no dudaría en utilizarlo como IDE. Ahora bien si el equipo en el que estás no está habituado a utilizar estas herramientas en principio no migraría, pero si que aconsejaría ir familiarizándose con todas estas nuevas herramientas ya que en el futuro más cercano va a ser muy necesario utilizarlo y dominarlas.

 

 

TypeScript (II): El Lenguaje

TypeScript es un subconjunto extendido de JavaScript. Este concepto lo tenemos que tener claro a la hora de cuando empezamos con TypeScript, existe la opinión entre muchos desarrolladores que con TypeScript se ahorran el aprender JavaScript y no es del todo cierto. Para empezar a desarrollar con TypeScript es necesario un conocimiento básico de JavaScript. 

Tipos de Variable

Uno de los grandes cambios cuando estamos trabajando en JavaScript es que una variable puede mutar de tipo en un momento puede ser un número, después un string e incluso un boolean si nos hace falta. Dentro de JavaScript existen los mecanimos para la comprobación de tipos como pueda ser las === pero esto es algo que no todos los desarrolladores  hacen y puede ocasionar muchos fallos. Ahora bien en TypeScript tambien tenemos esta posibilidad existe un tipo llamado any que se comporta de la misma manera es decir si ponemos este código tal cual funcionara igual en TypeScript que en JavaScript: 

Ahora bien si a continuación de la definición de la variable ponemos : number el resultado es el siguiente:

Ahora esto ya nos va gustando un poco más ya sabemos si nuestro código compila o no compila y por lo menos sabemos que semanticamente es correcto o no. Como en todos los lenguajes pueden ser bien number (númerico bien entero, double,…) string, any (cualquier valor y sino se indica nada es any) o boolean.

Enum

Esta es otra de las características que a los desarrolladores de .NET echábamos de menos en JavaScript.  Para ello con utilizar este código sería suficiente:

Clases

Las clases es algo que de forma directa no esta soportado en JavaScript (en la versión 6 de JS es una de las novedades) pero si que se puede simular su comportamiento utilizando Prototype. La definición de la clase es algo muy típico de lenguajes fuerte tipados como Java o C# es la forma en la que empezamos a organizar los proyectos y un punto de partida para empezar a tener organizado nuestro código y un poco más mantenible. Un ejemplo seria la siguiente clase:

Interfaces

Las interfaces son uno de los elementos más potentes que hay en TypeScript, su concepto es igual que en otros lenguajes como C#, una especie de contrato en la que tenemos que definir lo que hay en ella. Una de las grandes diferencias que tiene respecto a .NET es que la Interface la podemos utilizar tanto para variables como para funciones lo que otorga una mayor potencia a las mismas. Por ejemplo podemos tener definida una Interface Vehiculo de la siguiente manera: 

 

Módulos

Quizás en este punto sea el que más beneficios nos pueda utilizar, por regla general cuando desarrollamos en .NET más o menos siempre que se haga dentro de una coherencia tenemos varios Namespaces por los que nosostros vamos distribuyendo nuestra aplicación. En JavaScript por la propia naturaleza del lenguaje es algo que de forma natural no sale, dado de que podemos eliminar cualquier objeto que tengamos en ese momento (esto provoca que nos carguemos la aplicación sin quererlo ni desearlo). Este problema en JavaScript se puede solucionar con el patrón modulo algo que explique en el siguiente post pero que es una forma que no todos los desarrolladores consiguen hacer . Dentro de un modulo podemos incluir diversas clases, interfaces, etc… y lo mejor es que podemos acceder desde otro módulos que implementemos (este aspecto ya lo veremos en más detenimiento en un articulo posterior). Dentro del modulo todo lo que queramos utilizar en otro modulo tendremos que incluir la etiqueta export (similar al public/private) 

 

Conclusión

Ya hemos visto toda la potencia que tiene TypeScript como lenguaje, agregando unas pautas y unos patrones a un lenguaje casi sin restricciones. TypeScript es la evolución para intentar tener organizado todo el código de cliente de la misma forma que se hace desde el BackEnd. En los siguientes artículos veremos como poder utilizar librerias de terceros como JQuery, Angular, y como solucionar el problema de la carga de los scripts.

TypeScript (I): Preparación del entorno

A lo largo de las próximos post voy a escribir sobre TypeScript y su utilización como un lenguaje para facilitarnos la vida dentro del Front-End. En los últimos tiempos JavaScript ha ido cobrando más y más protagonismo dentro del desarrollo Web (hasta el punto de vista de ser el lenguaje más utlizado). El principal problema que tiene JavaScript es que mucha gente no conoce el propio lenguaje ni sus buenas practicas ni como se debe de programar. En lugar de conocer JavaScript conocen una librería muy famosa llamada JQuery con la que a través de Copy-Paste le dan unos efectos a su desarrollo sin mucho esfuerzo. Pero de hay ha construir una aplicación empresarial: estable, robusta y escalable va un abismo.

JavaScript es un lenguaje peculiar (sobre todo si venimos del mundo .NET), débilmente tipado, asíncrono y hace que sin el conocimiento adecuado su código se convierta en un auténtico infierno. Para solventar en parte esta problemática Microsoft desarrollo este lenguaje de programación, en el que partipa  Anders Hejlsberg creador de lenguajes como C#, Turbo Pascal. TypeScript es un superconjunto de JavaScrip,t que esencialmente añade tipado estático y objetos basados en clases.

TypeScript extiende la sintaxis de JavaScript, por tanto cualquier código JavaScript existente debería funcionar sin problemas. Está pensado para grandes proyectos, los cuales a través de un compilador de TypeScript se traduce a código JavaScript original. Permite además trabajar sin problemas con famosas librerías de JavaScript como JQuery, Node.JS, AngularJS.

Para ver la potencia que tiene este lenguaje basta con ver que la última vez que Google y Microsoft se han puesto de acuerdo es en la utilización de TypeScript para el desarrollo de la versión 2 de Angular http://blogs.msdn.com/b/typescript/archive/2015/03/05/angular-2-0-built-on-typescript.aspx 

 

 

Instalación en IDE

Para Visual Studio:

  • En la versión 2015  TypeScript ya viene integrado de serie y no hay que hacer nada
  • En la versión 2013 tendremos que instalar este plugin

Ahora si abrimos Visual Studio tendremos un tipo de Proyecto TypeScript :

 

Al crear este tipo de proyecto, por defecto tendrá un fichero app.ts que tiene una clase demo y todavía no tiene un fichero js asociado. Ahora bien para compilar y facilitarnos la vida hay una extensión muy conocida llamada WebEssentials que nos facilita la vida, nos da la opción de conforme escribimos ver el JavaScript que se genera, Compilar el fichero TypeScript …. 

Todas estas opciones las podemos configurar desde el propio Visual Studio. Tools->Options-> WebEssentials-> TypeScript en una pantalla como la siguiente:

En NodeJS para instalarlo npm install -g typescript y cada vez que queramos compilar un archivo bastará con tsc “nombredelfichero.ts”

TypeScript es un lenguaje de código abierto y desde su creación se ha intentado que se pueda utilizar desde cualquier IDE como pueda ser Sublime, o inclusive Emacs o VI. Para tenerlo dentro de Sublime tendremos que descargarnos este plugin y volcar su contenido dentro de la carperta c:Users{nombrede usuario}AppDataRoamingSublime Text 2PackagesTypeScript. Si ahora abrimos Sublime, creamos un nuevo fichero con extensión .ts y escribimos una clase, podemos observar que tenemos intellisense y ayuda contextual

Ahora bien este contenido lo queremos compilar para ello, dentro de Sublime tenemos dos opciones:

 

  • Bien configurar que cada que se guarde el fichero se genere una build
  • Lanzarla de forma manual.

 

Estas opciones están en Tools-> Save On Build  o en Tools-> Build tal y como se puede observar en la siguiente imagen:

 

Si ahora nos vamos a la ubicación donde tenemos el fichero .ts, a su lado tendremos un fichero con el mismo nombre terminada con la extensión .js y el resultado es el siguiente:

 

Conclusión

En este primer post hemos visto como podemos preparar el entorno para tener listo y poder empezar a utilizar TypeScript en cualquiera de nuestros proyectos, bien sea desde dentro de Visual Studio o bien en otros entornos no Windows. En los siguientes post nos adentraremos más profundamente en los fundamentos de este lenguaje, el como utilizar librerias de terceros (Jquery, AngularJS, …) y su uso en SharePoint..