Tratar con Node.js y Microsoft SQL Server: Parte 1
En una serie de artículos veremos cómo usar Node.js con algunos de los productos y plataformas más populares como SQL Server, MongoDB, Microsoft Azure, cómo crear aplicaciones usando jQuery, jQuery UI y Ignite UI con Node.js
En una serie de artículos veremos cómo usar Node.js con algunos de los productos y plataformas más populares como SQL Server, MongoDB, Microsoft Azure, cómo crear aplicaciones usando jQuery, jQuery UI y Ignite UI con Node.js
El primer post está dedicado a Node y Microsoft SQL Server. Inicialmente, expliquemos por qué muchas empresas y profesionales prefieren utilizar Node.js en sus soluciones.
Why Node.js?
Node.js, para aquellos que no han oído hablar de él, es esencialmente JavaScript del lado del servidor.
Puedes echar un vistazo a algunas de las ventajas a continuación:
- Prácticamente no requiere instalación
- Muy ligero (un exe estático de 7 MB para la plataforma MS Windows)
- Node.js fomenta las buenas prácticas de software listas para usar, como la programación asíncrona y la inversión de control.
- Node.js uses JavaScript syntax.
- ¡Hay más de 100 000 000 de desarrolladores WEB en todo el mundo que usan JavaScript!
- La razón realista:
Las aplicaciones multiplataforma con JS serán más rápidas y sencillas - Las partes buenas de JavaScript son realmente increíbles
- Un idioma para el navegador y el servidor
- Async de forma predeterminada
- Más de 1 millón de solicitudes simultáneas
Pero no es solo otro lenguaje de programación de moda: empresas como LinkedIn y Walmart ya lo están usando, y muchas otras empresas de TI de errores ya han anunciado que usan Node.js o agregarán soporte para Node para sus plataformas. En julio de 2011, Microsoft portó Node.js para MS Windows y más tarde, en noviembre de 2011, anunciaron el soporte de Microsoft Azure (anteriormente Windows Azure) para Node.js
Node.js utiliza también para los Servicios móviles de Microsoft Azure
Node se utiliza como plataforma predeterminada para el back-end. Funciona con Azure SQL Database y se ofrece de forma predeterminada para los desarrolladores.
Solo necesitan conocer las asignaciones de tipos JSON a SQL
Asignaciones de tipos de JSON a SQL: Servicios móviles de Azure con Node.js
| JASON Value | T-SQL Type |
|
Numeric values (integer, decimal, |
Float(53) |
|
Booleano |
Bit |
|
Fecha y hora |
DateTimeOffset(3) |
| Cadena |
Nvarchar(max) |
Hay muchos módulos que implementan soporte para Microsoft SQL Server. No es fácil elegir el módulo más adecuado para un caso concreto.
¿Qué Node.js conductor elegir?

El objetivo de este artículo es resumir los módulos node.js más populares para MS SQL Server. Compararemos los módulos y describiremos sus ventajas y desventajas
Node.js Modules for Microsoft SQL Server
| #N | % | Node.js Module |
| #1 | 20.7% |
Microsoft Driver for Node.js for SQL Server (Solo Windows) |
| #2 | 18.0% | |
| #3 | 12.3% | |
| #4 | 1.5% | |
| #5 | 0.4% | |
| #6 | 0.2% |
Microsoft Driver for Node.js for SQL Server (Solo Windows) |
| #7 | N / A |
Microsoft Driver for Node.js for SQL Server – unofficial distribution |
| #8 | N / A | Ende.js y Edge-sql Compilador de SQL para edge.js. Permite acceder a bases de datos SQL desde Node.js utilizando Edge.js y ADO.NET. |
- node-sqlserver & msnodesql
Ambos controladores usan el mismo código del repositorio de GitHub –https://github.com/Azure/node-sqlserver, pero usan diferentes paquetes npm.
Este es un controlador de Node.js de Microsoft para SQL Server y Azure SQL Database: Es un módulo Node.js, basado en SQL Server Native Client 11.0, disponible como Microsoft SQL Server 2012 Native Client y se puede encontrar en el archivo
SQLCaracterística de Server 2012Empaquetar.
Hay problemas con node-sqlserver / msnodesql y Windows 7.x / Windows 8.x.
Estos módulos requieren requisitos previos antes de instalar el controlador:
- Node.js: use la última versión si es posible, pero se ha probado en el nodo 0.6.10 y posteriores
- node-gyp – latest version installed globally (npm install -g node-gyp)
- python 2.7.x – para node-gyp (asegúrese de que esté en la ruta)
- Visual C++ 2010: la edición Express está disponible gratuitamente en Microsoft
- SQL Server Native Client 11.0: disponible como Microsoft SQL Server 2012 Native Client que se encuentra en SQL Server 2012 Feature Pack
Es una sobrecarga adicional instalar estos módulos en las plataformas reales de Windows: debe tener algunas versiones antiguas de diferentes bibliotecas y marcos. Esa es la razón para no recomendar el uso del controlador "oficial".
- node-sqlserver-unofficial
Se trata de una distribución binaria no oficial de ese controlador (node-sqlserver /msnodesql ) que utiliza el mismo repositorio de GitHub –https://github.com/Azure/node-sqlserver.
si planea usar este controlador, no es necesario compilar desde el código fuente (lo que requiere Visual Studio y confunde totalmente a algunas personas). Se ejecuta tanto en x86 como en x64 y con las versiones de nodo 0.8 y 0.10. No es necesario usar soluciones alternativas para ejecutar node-sqlserver-unofficial con Sitios web de Azure.
- tedious
Es un controlador TDS, para conectarse a las bases de datos de Microsoft SQL Server. Tedious es una implementación del protocolo TDS, que se utiliza para interactuar con instancias de SQL Server de Microsoft. Se pretende que sea una implementación bastante delgada del protocolo, sin demasiada funcionalidad adicional. Tedious es JavaScript puro, al igual que sus dependencias. (la fuente es CoffeeScript). Por lo tanto, debería ejecutarse sin cambios en cualquier plataforma en la que se admita Node. El tedioso controlador es compatible con todas las versiones de SQL Server desde 2000 hasta 2014. Es posible que se admitan versiones posteriores del protocolo TDS en el futuro, pero es poco probable que se admitan versiones anteriores. Puede volverse tedioso como un paquete npm o desde GitHub –ttps://github.com/pekim/tedious
- node-tds
Este es un módulo que le permite acceder a Microsoft SQL Server 2005 y versiones posteriores. Es una implementación JS pura del protocolo TDS alojada en GitHub. Node-tds es similar a tedioso . Podría instalarse como un paquete tds npm o es el código fuente de GitHub https://github.com/cretz/node-tds.
- mssqlhelper
Es un asistente de Microsoft SQL Server. Mssqlhelper está escrito principalmente en el módulo JavaScript de un solo contribuyente. El 21% de todas las líneas de código fuente son comentarios: en comparación, mssqlhelper solo tiene el 6% del código comentado. Puede instalar el paquete mssqlhelper npm aquí o encontrar el código fuente en GitHub: https://github.com/play175/mssqlhelper
- mssqlx
Es una interfaz de línea de comandos nodejs de Microsoft SQL Server. Mssqlx debería funcionar muy bien en todas las plataformas, especialmente mac y unix, sin ningún otro controlador, solo nodejs. Actualmente, esto solo funciona en la línea de comandos, la próxima versión funcionará a través de la API de transmisión. El objetivo de este proyecto es crear una experiencia cli impresionante para consultar mssql, se espera que siga los pasos de futon-cli. Puede usar este paquete mssqlx npm o encontrar el código fuente en GitHub: http://jackhq.tumblr.com/post/27992293043/mssqlx
- Edge.js and edge-sql
Edge.js es un módulo Node.js que permite que el código y los ensamblados de .NET se ejecuten en el mismo proceso con Node.js. Esto permite potencialmente a un desarrollador de Node.js aprovechar tecnologías que tradicionalmente han sido muy difíciles o imposibles de usar en el pasado. Puede crear bibliotecas .NET con toda la lógica de cómo conectarse a MS SQL Server, ejecutar consultas, manejar los resultados y puede usar estas bibliotecas en aplicaciones Node.js usando Edge-js.
Creación de una biblioteca de clases de .NET
public class Sample1
{
public async Task<object> Invoke(object input)
{
....
}
public async Task<List<SampleUser>> QueryUsers(int pageNumber, int pageSize)
{
....
}
}
Using a .NET library in Node.js + Edje.js application
// Set up the assembly to call from Node.js
var querySample = edge.func({
assemblyFile: 'EdgeSampleLibrary.dll',
typeName: 'EdgeSampleLibrary.Sample1',
methodName: 'Invoke'
});
Edge-sql es un compilador de SQL para edge.js. Permite acceder a bases de datos SQL desde Node.js utilizando Edge.js y ADO.NET. A través de edge-sql, puede consultar SQL Server directamente mediante Edge.js
var params = {
connectionString: "Data Source=IGBGSOFEV06\\SQLEXPRESS;Initial Catalog=NodeJS;Integrated Security=True“ ,
source: "SELECT TOP 5 * FROM SampleUsers ORDER BY CreateDate DESC"
};
var getTopUsers = edge.func( 'sql‘ , params);
Pros y contras

| driver | pros | Contras |
| tedious, node-tds |
Lightweight , |
Funcionalidades limitadas |
| msnodesql, node-sqlserver |
Más características |
Many dependencies |
| node-sqlserver-unofficial |
La misma base de código que msnodesql, node-sqlserver, | Sin apoyo oficial Requires Windows |
| mssqlhelper | Es una implementación JS pura del protocolo TDS | Solo de un colaborador Funcionalidades limitadas. |
| mssqlx | Mssqlx funciona muy bien en todas las plataformas, especialmente mac y unix, sin ningún otro controlador Basado en tedioso | Solo funciona en la línea de comandos |
| Edge.js and edge-sql |
puede ejecutar cualquier expresión SQL, puede conectarse mediante seguridad integrada |
Requires .Net 4.5 Solo se puede ejecutar en Windows |
En la siguiente parte de este artículo, puede aprender a usar diferentes módulos de Node.js para MS SQL Server. Echaremos un vistazo a las mejores prácticas y cubriremos diferentes casos de uso.


If you want more information about how to use Microsoft SQL Server & Node.js feel free to contact me at mmateev@infragistics.com
Puede obtener más información sobre Azure Bootcamp Bulgaria si nos sigue en Twitter @mihailmateev y @ Infragistics y mantenerse en contacto en Facebook, Google+, LinkedIn y Infragistics grupo de usuarios de amigos.