Lidando com Node.js e Microsoft SQL Server: Parte 1
Em uma série de artigos, veremos como usar o Node.js com alguns dos produtos e plataformas mais populares, como SQL Server, MongoDB, Microsoft Azure, como criar aplicativos usando jQuery, jQuery UI e Ignite UI com Node.js
Em uma série de artigos, veremos como usar o Node.js com alguns dos produtos e plataformas mais populares, como SQL Server, MongoDB, Microsoft Azure, como criar aplicativos usando jQuery, jQuery UI e Ignite UI com Node.js
O primeiro post é dedicado ao Node e ao Microsoft SQL Server. Inicialmente vamos explicar por que muitas empresas e profissionais preferem usar Node.js em suas soluções.
Why Node.js?
Node.js, para aqueles que nunca ouviram falar, é essencialmente JavaScript do lado do servidor.
Você pode dar uma olhada em algumas das vantagens abaixo:
- Praticamente nenhuma instalação necessária
- Muito leve (um exe estático de 7 MB para plataforma MS Windows)
- Node.js incentiva boas práticas de software prontas para uso, como programação assíncrona e inversão de controle
- Node.js uses JavaScript syntax.
- Existem mais de 100.000.000 de desenvolvedores WEB em todo o mundo que usam JavaScript!
- A razão realista:
Aplicativos multiplataforma com JS serão mais rápidos e fáceis - As partes boas do JavaScript são realmente incríveis
- Um idioma para o navegador e o servidor
- Assíncrono por padrão
- Mais de 1 milhão de solicitações simultâneas
Mas não é apenas mais uma linguagem de programação da moda – empresas como LinkedIn e Walmart já a estão usando, e muitas outras empresas de TI de bugs já anunciaram que usam Node.js ou adicionarão suporte ao Node para suas plataformas. Em julho de 2011, a Microsoft portou o Node.js para MS Windows e, posteriormente, em novembro de 2011, eles anunciaram o suporte do Microsoft Azure (antigo Windows Azure) para Node.js
Node.js também é usado para os Serviços Móveis do Microsoft Azure
O Node é usado como uma plataforma padrão para o back-end. Ele funciona com o Banco de Dados SQL do Azure e é oferecido pronto para uso para desenvolvedores.
Eles só precisam saber os mapeamentos de tipo JSON para SQL
Mapeamentos de tipo JSON para SQL – Serviços Móveis do Azure com Node.js
| JASON Value | T-SQL Type |
|
Numeric values (integer, decimal, |
Float(53) |
|
Booleano |
Bit |
|
Data e hora |
DateTimeOffset(3) |
| Corda |
Nvarchar(max) |
Há muitos módulos que implementam o suporte para o Microsoft SQL Server. Não é fácil escolher o módulo mais adequado para um caso específico.
Qual Node.js driver escolher?

O objetivo deste artigo é resumir os módulos de node.js mais populares para MS SQL Server. Vamos comparar os módulos e descrever suas vantagens e desvantagens
Node.js Modules for Microsoft SQL Server
| #N | % | Node.js Module |
| #1 | 20.7% |
Microsoft Driver for Node.js for SQL Server ( Somente Windows) |
| #2 | 18.0% | |
| #3 | 12.3% | |
| #4 | 1.5% | |
| #5 | 0.4% | |
| #6 | 0.2% |
Microsoft Driver for Node.js for SQL Server ( Somente Windows) |
| #7 | N/A |
Microsoft Driver for Node.js for SQL Server – unofficial distribution |
| #8 | N/A | Ende.js e Edge-sql Compilador SQL para edge.js. Ele permite acessar bancos de dados SQL de Node.js usando Edge.js e ADO.NET. |
- node-sqlserver & msnodesql
Ambos os drivers usam o mesmo código do repositório GitHub –https://github.com/Azure/node-sqlserver, mas usando pacotes npm diferentes.
Este é um driver Node.js da Microsoft para SQL Server e Banco de Dados SQL do Azure: É um módulo Node.js, baseado no SQL Server Native Client 11.0 – disponível como Microsoft SQL Server 2012 Native Client e pode ser encontrado no
SQLRecurso Server 2012Embalar.
Há problemas com node-sqlserver / msnodesql e WIndows 7.x / Windows 8.x.
Esses módulos exigem pré-requisitos antes de instalar o driver:
- Node.js – use a versão mais recente, se possível, mas ela foi testada no nó 0.6.10 e posterior
- node-gyp – latest version installed globally (npm install -g node-gyp)
- python 2.7.x – para node-gyp (certifique-se de que está no caminho)
- Visual C++ 2010 – a edição Express está disponível gratuitamente na Microsoft
- SQL Server Native Client 11.0 – disponível como Microsoft SQL Server 2012 Native Client encontrado no SQL Server 2012 Feature Pack
É uma sobrecarga adicional instalar esses módulos nas plataformas Windows reais – você precisa ter algumas versões antigas de diferentes bibliotecas e estruturas. Essa é a razão para não recomendar o uso do driver "oficial".
- node-sqlserver-unofficial
Esta é uma distribuição binária não oficial desse driver (node-sqlserver /msnodesql ) usando o mesmo repositório GitHub –https://github.com/Azure/node-sqlserver.
se você planeja usar este driver – não há necessidade de compilar a partir do código-fonte (o que requer o Visual Studio e confunde totalmente algumas pessoas). Ele é executado em x86 e x64 e com as versões de nó 0.8 e 0.10. Você não precisa usar soluções alternativas para executar node-sqlserver-unofficial com sites do Azure.
- tedious
É um driver TDS, para conexão com bancos de dados do Microsoft SQL Server. Tedious é uma implementação do protocolo TDS, que é usado para interagir com instâncias do SQL Server da Microsoft. Destina-se a ser uma implementação bastante pequena do protocolo, sem muitas funcionalidades adicionais. Tedious é JavaScript puro, assim como suas dependências. (a fonte é CoffeeScript.) Portanto, ele deve ser executado sem alterações em qualquer plataforma em que o Node seja suportado. O driver tedioso é compatível com todas as versões do SQL Server de 2000 a 2014. Versões posteriores do protocolo TDS podem ter suporte no futuro, mas é improvável que versões anteriores sejam suportadas. Você pode ficar tedioso como um pacote npm ou no GitHub –ttps://github.com/pekim/tedious
- node-tds
Este é um módulo que permite acessar o Microsoft SQL Server 2005 e posterior. É uma implementação JS pura do protocolo TDS hospedado no GitHub. Node-tds é semelhante ao tedioso . Ele pode ser instalado como pacote tds npm ou é código-fonte do GitHub https://github.com/cretz/node-tds.
- mssqlhelper
É um auxiliar do Microsoft SQL Server. Mssqlhelper é escrito principalmente no módulo JavaScript apenas de um colaborador. 21% de todas as linhas de código-fonte são comentários – em comparação, o mssqlhelper tem apenas 6% do código comentado. Você pode instalar o pacote mssqlhelper npm aqui ou encontrar o código-fonte no GitHub: https://github.com/play175/mssqlhelper
- mssqlx
É uma interface de linha de comando nodejs do microsoft sql server. O Mssqlx deve funcionar muito bem em todas as plataformas, especialmente mac e unix, sem nenhum outro driver, apenas nodejs. Atualmente, isso só funciona na linha de comando, a próxima versão funcionará via API de fluxo. O objetivo deste projeto é criar uma experiência cli incrível para consultar mssql, esperando seguir os passos do futon-cli. Você pode usar este pacote mssqlx npm ou encontrar o código-fonte no GitHub: http://jackhq.tumblr.com/post/27992293043/mssqlx
- Edge.js and edge-sql
Edge.js é um módulo Node.js que permite que o código .NET e os assemblies sejam executados no mesmo processo com o Node.js. Isso potencialmente permite que um desenvolvedor Node.js aproveite tecnologias que tradicionalmente eram muito difíceis ou impossíveis de usar no passado. Você pode criar bibliotecas .NET com toda a lógica de como se conectar ao MS SQL Server, executar consultas, manipular os resultados e usar essas bibliotecas em aplicativos Node.js usando Edge-js.
Criando uma biblioteca de classes .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 é um compilador SQL para edge.js. Ele permite acessar bancos de dados SQL de Node.js usando Edge.js e ADO.NET. Por meio do edge-sql, você pode consultar o SQL Server diretamente usando 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);
Prós e contras

| driver | pros | Contras |
| tedious, node-tds |
Lightweight , |
Funcionalidades limitadas |
| msnodesql, node-sqlserver |
Mais recursos |
Many dependencies |
| node-sqlserver-unofficial |
A mesma base de código como msnodesql, node-sqlserver, | Sem suporte oficial Requires Windows |
| mssqlhelper | É uma implementação JS pura do protocolo TDS | Apenas de um colaborador Funcionalidades limitadas. |
| mssqlx | O Mssqlx funciona muito bem em todas as plataformas, especialmente mac e unix, sem nenhum outro driver Baseado em tedioso | Ele só funciona na linha de comando |
| Edge.js and edge-sql |
pode executar qualquer expressão SQL, pode se conectar usando segurança integrada |
Requires .Net 4.5 Pode ser executado apenas no Windows |
Na próxima parte deste artigo, você pode aprender a usar diferentes módulos Node.js para MS SQL Server. Vamos dar uma olhada nas melhores práticas e cobrir 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
Você pode saber mais sobre o Azure Bootcamp Bulgária se nos seguir no Twitter @mihailmateev e @ Infragistics e manter contato no Facebook, Google+, LinkedIn e Infragistics Grupo de Usuários de Amigos!