Ir para o conteúdo
Lidando com Node.js e Microsoft SQL Server: Parte 1

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

8min read

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 ValueT-SQL Type

Numeric values (integer, decimal,
floating point)

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?

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
#120.7%

node-sqlserver

Microsoft Driver for Node.js for SQL Server

( Somente Windows)

#218.0%

tedious

Um driver TDS, para conexão com o MSSQLServer 

#312.3%

node-tds

Cliente TDS para conexão com o Microsoft SQL Server

#41.5%

mssqlhelper

Microsoft SQL Server database helper

#50.4%

mssqlx

NodeJs Microsoft SQL Server Command Line Interface

#60.2%

msnodesql

Microsoft Driver for Node.js for SQL Server

( Somente Windows)

#7N/A

node-sqlserver-unofficial

Microsoft Driver for Node.js for SQL Server – unofficial distribution

#8N/AEnde.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:

  1. Node.js – use a versão mais recente, se possível, mas ela foi testada no nó 0.6.10 e posterior
  2. node-gyp – latest version installed globally (npm install -g node-gyp)
  3. python 2.7.x – para node-gyp (certifique-se de que está no caminho)
  4. Visual C++ 2010 – a edição Express está disponível gratuitamente na Microsoft
  5. 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

 

driverprosContras
tedious, node-tds

Lightweight ,
JS implementation,
no dependencies

Funcionalidades limitadas
Não é possível usar a autenticação integrada.

msnodesql, node-sqlserver

Mais recursos

Many dependencies
No actual builds
Requires custom build
Requires Windows

node-sqlserver-unofficial

A mesma base de código como msnodesql, node-sqlserver,
Mas a maioria dos problemas, relacionados às distribuições oficiais, foram corrigidos

Sem suporte oficial

Requires Windows

mssqlhelperÉ uma implementação JS pura do protocolo TDSApenas de um colaborador
Funcionalidades limitadas.
mssqlxO 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!

Solicite uma demonstração