Statuses

Node.js Windows környezetben

In Kurrens/ajánlott on 2011. október 31. hétfő by Nacsa Sándor Címkézve: , , , , , , ,

A Magyarországi Web Konferencia 2011-en (2011. október 8.) elhangzott egy ezzel kapcsolatos előadás, amihez az alábbi lényegi összefoglalót, jegyzeteket és kiegészítő anyag mutatókat gyüjtöttem össze:

A Node.js bemutatása ——————————-Galiba Péter Kiegészítő anyagok:
az előadás slide-jai (alaposak)
Node.js alapok (2 cikk a Weblabor.hu-n)
Galiba Péter: blogmotor építés Node.js-sel (másfél óra, a 2011. januári budapest.js Meetup előadás felvétele) + az előadás slide-jai
Az előadó másfél éves tapasztalattal rendelkezik ebben a két éves, szerver oldali JavaScript rendszerben (nem semmi), miközben az első stabil változat (0.2.0) mindössze 14 hónapos (a jelenlegi 0.4.12-es). Webszervert is ebben írunk. Felkészítették erre, ezért egyszerű (két példán is láttuk). Nagyfokú skálázhatósággal rendelkező hálózati szerver programok céljából fejlesztették/fejlesztik. UNIX/POSIX kapcsolat is említve van. Weben utólag rákérdezve ezt találtam: “Node does not run natively on Windows. It does run fine under Cygwin, which is an easily installed, self-contained POSIX environment that runs on top of Windows. Or you can always install Node inside a Linux virtual machine.”
Windows-on kb. 10-szer lassabb (aha, ld. a Cygwin nélküli “nem natív” futást). (Bár őszintén szólva ezt nem értem, mert a Windows-hoz jó ideje van Services for UNIX, az utolsó SUA SDK a Win7-hez és a WS08 R2-höz jött. A legfejlettebb funkcionalitás az SFU 3.5. Persze mindegy, mert a Cygwin szabad, nyílt forrású szoftver.) Igazán jól a Debian-okon fut. Nem blokkolt (aszinkron I/O), eseményvezéreltség és egy szálon (core-on) futás alapozzta meg kimagasló hatékonyságát, skálázhatóságát (több példány elindításával több core-on). Fejlesztői segédalkalmazásoktól kezdve, stream serveren és CDN-en át, egészen widget, reklám és API kiszolgálásra szokták használni (ő maga is). CPU igényes alkalmazásokra, … Node.js alatt nem elérhető szolgáltatások használatára viszont ne hasznéljuk. A socket-es, “élő” (a következő előadásban “valós idejüként” is nevezett) alkalmazások igen érdekesek.

Volt egy kis időm az eltelt három hétben még jobban utána nézni ennek az egész Node.js Windows környezetben kérdésnek, és bizony azt találtam, hogy a Node.js ma már semmivel sem rosszabb a Windows-on, mint másutt. Az alábbi források erről mindenkit meggyőzhetnek:

Porting Node to Windows With Microsoft’s Help [Ryan Dahl, June 23, 2011]

I’m pleased to announce that Microsoft is partnering with Joyent in formally contributing resources towards porting Node to Windows. As you may have heard in a talk we gave earlier this year, we have started the undertaking of a native port to Windows – targeting the high-performance IOCP API.

This requires a rather large modification of the core structure, and we’re very happy to have official guidance and engineering resources from Microsoft. Rackspace is also contributing Bert Belder‘s time to this undertaking.

The result will be an official binary node.exe releases on nodejs.org, which will work on Windows Azure and other Windows versions as far back as Server 2003.

Interview de Ryan Dahl, créateur de Node.js [June 15, 2011]

Web Tambouille : Node.JS is in perpetual improvment. What are you working on ? What is the roadmap until the end of the year and what is the biggest features to come ?

Ryan Dahl : The biggest change is the port to Windows. We’re attempting to do a fully native port using the best facilities available for asynchronousI/O in the Window operating system. I/O completion ports are Windows’s high-performance counter part to Linux’s epoll or BSD’s kqueue. ThoughI/O completion ports are a rather different take on the concept – it’s difficult to target both Unix and IOCP. For this reason we’re spending significant time writing and testing an async-only platform library called libuv (http://github.com/joyent/libuv) which we will use to build Node on top of.

További részletes információ erről: Node v0.5 Roadmap [Ryan Dahl, May 5, 2011]

The main goal of v.05 is reworking the plumbing for
Windows compatibility

Today Node runs on Windows via Cygwin.

This is an unacceptable port. Cygwin is slow, old, buggy. Users hate it.

Végül az aktuális helyzetet roppant jól összefoglalja a következő Microsoft forrás (mely egyben minden eddigi, ezzel a témával kapcsolatos forrásra is hivatkozik):

Using Node.js in an ASP.NET MVC application with iisnode [John Galloway, Oct 26, 2011]

Node.js is an event-driven I/O server-side JavaScript environment based on the open-source V8 Javascript engine. It’s really easy to run it on Windows now, and if you run it under iisnode, it’s actually running under a standard IIS Handler, which means you can integrate it directly into ASP.NET applications.

libuv

Node previously ran on top of libev, which is Unix-only. That’s now changed to use the new libuv platform library.

    • libuv‘s purpose is to abstract platform-dependent code in Node into one place where it can be tested for correctness and performance before bindings to V8 are added. Since Node is totally non-blocking, libuv turns out to be a rather useful library itself: a BSD-licensed, minimal, high-performance, cross-platform networking library.

It’s nice to see that this is paying off already – from the number of cross-platform applications listed in Ryan’s post to examples like this Leveraging Node’ libuv in Windows Azure example on MSDN.

Wrapping Up

This is just scratching the surface here, and the example’s trivial. As I mentioned earlier, I think the real power of Node is in taking advantage of its event-driven, asynchronous model, and I’m interested to see how smart people like you will take advantage of the fact that you can now get it up and running – inside your ASP.NET applications, even, if you want – in just a few minutes.

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s

%d blogger ezt kedveli: