czwartek, 11 kwietnia 2013

Node.js + Edge.js (1)

Wiele osób mówi, że świat zmierza ku JavaScript. Jednak czy zawsze jest to taki optymalny wybór? A co z dotychczasowym naszym kodem w innych językach? Nie będziemy chyba że wszystkiego przepisywali na JavaScript –;)  Ponadto czy kod JavaScript jest wydajny tak samo jak .NET czy C++? Owszem pojawiają się już pewne sposoby jego optymalizacji, a czasami odbywa się prekompilacja,  ale weźmy pod uwagę przeciętną sytuację. A co jeśli bedziemy chcieli skorzystać z natywnych funkcjonalności Windows albo dotychczasowych komponentów napisanych w .NET?  To wszystko wymaga współdziałania innych języków z JavaScript. Jednak do tej pory z reguły nie było to takie wygodne. Przed podobnym problemem stali z pewnością twórcy WinRT, którzy wymyślili projekcję. Ale dziś skupmy się na serwerze node.js.

Integracja aplikacji serwerowej node.js z kodem natywnym jest jak najbardziej możliwa, aczkolwiek do wygodnych i prostych nie należy. Z wielką pomocą przychodzi projekt Edge.js, który sprawadza się do hostowania CLR .NET 4.5 w procesie node.js. Ogromnie to upraszcza interoperabilność JavaScript z .NET (C#, F#, Python, w zasadzie każdy język CLR), a także korzystanie z natywnego API Windows czy komponentów COM. Co ciekawe C# możemy używać w postaci kompilowanych dll-ek, ale także w postaci skryptowej,  kojarzącej mi się z przyszłościowym projektem “Roslyn”, ale także… ze zwyczajnym ASP.NET Web Forms i MVC.

Poniżej prosty przykład wyciągający informacje z bazy Microsoft SQL Server. Tak wiem, teraz jest modny no-SQL i on jest typowy dla node.js, ale przecież relacyjne bazy danych nadal są popularne, w niektórych zastosowaniach są lepsze, a bardzo często nowe projekty muszą opierać się o istniejące rozwiązania.

Stosunkowo niedawno został wydany Microsoft Driver for Node.JS for SQL Server Preview (WindowsAzure / node-sqlserver).  Aczkolwiek są zgłoszone różne bugi, nie wszystko jest w nim zaimplementowane i potrzebny jest natywny klient do SQL Server 2012… Czy jest jakieś inne rozwiązanie? 

Tak, jeśli skorzystamy z hostowania kodu .NET. Zresztą autor Edge.js w przykładach daje prostą obsługę podstawowych operacji select, add, update, delete za pomocą ADO.NET (poniższy screen).  Bardziej złożone przypadki możemy oprogramować sobie w C# sami, przecież to już znamy. Jeśli bierzemy przykład autora to pamiętajmy ustawić zmienną środowiskową “OWIN_SQL_CONNECTION_STRING” na connection string do naszej bazy. Oczywiście instalujemy też pakiet “edge” na node.js.

sn4

Dysponując już takim API do danych wywołujemy go z poziomu JavaScript, co jak widać jest bardzo naturalne i proste.

sn1

Odpalamy serwer…

sn2

Sprawdzamy, co nam wypluje serwer REST-owy… Jak widzimy otrzymujemy na wyjściu JSON-a z danymi zwracanymi wprost z bazy danych.

sn3

Na razie tyle. Kolejne informacje wkrótce.

Brak komentarzy: