SlideShare a Scribd company logo
Дмитрий Миндра, Lohika

WEB В РЕАЛЬНОМ ВРЕМЕНИ С
WINDOWS AZURE И NODE.JS
                         @dmytromindra #msswit
Для кого этот доклад?
Вам нравится
JavaScript

Вы хотите чего-то
нового!

Вам нравится Web



                    @dmytromindra #msswit
Мустафин Дмитрий
RnD Team Lead

Microsoft
Technologies Lab
Member




                   @dmytromindra #msswit
Нечто




        Великолепное ПО

                      @dmytromindra #msswit
Посторонись, пресловутый PHP! Долой Java!
Старичок Perl, тебе так вообще давно пора на пенсию.
И как же вы уже достали, попсовые Ruby и Python!

(c) xakep




            http://www.xakep.ru/post/53583/   @dmytromindra #msswit
Мы
Ждем
Перемен !




            @dmytromindra #msswit
@dmytromindra #msswit
&

Node.js



          @dmytromindra 2011
                23 июня #msswit
HELLO WORLD
var http = require('http');

http.createServer(function (req, res) {
     res.writeHead(200, {'Content-Type': 'text/plain'});
     res.end('Hello Worldn');
}).listen(1337, "127.0.0.1");

console.log('Server running at http://127.0.0.1:1337/');

                                          @dmytromindra #msswit
ПОЧЕМУ NODE.JS?
Цель Node.JS -      Event Driven
обеспечение
                    Все асинхронно
простого способа
создания            Работает на Google V8
масштабируемых      Официально поддерживается
сетевых программ.   компанией Microsoft
                    Хорошо параллелится (при работе
                    с вводом/выводом)




                                     @dmytromindra #msswit
АСИНХРОННОСТЬ
Пока выполняется
операция, которую
надо ждать,
Node.JS занимается
полезным делом.




                     @dmytromindra #msswit
СЛАБЫЕ СТОРОНЫ
У Node.JS есть      Плохо справляется с
слабые стороны, о   тяжелыми вычислительными
которых надо        задачами
помнить.
                    Использует только одно ядро
                    процессора (есть утилита
                    Cluster)



                                 @dmytromindra #msswit
Спагетти код
 var fs = require('fs')
   , path = require('path')
   , file1 = "file1.txt“
   , file2 = "file2.txt";

 // Check if file1 exists, write to file2,
 // then display new file2 contents.
 path.exists(file1, function (exists) {
    if (!exists) throw new Error("No file!");
    fs.readFile(file1, function (err, data) {
        if (err) throw err; fs.writeFile(file2, data, function (err) {
           if (err) throw err; fs.readFile(file2, function (err, data) {
               if (err) throw err; console.log(data.toString());
               ...
           });
        });
    });
 });

                                                                           @dmytromindra #msswit
ХОРОШИЙ ИНСТРУМЕНТ
Для подходящей
задачи.

Важно уметь
отличить
подходящую
задачу от
неподходящей.


                 @dmytromindra #msswit
Есть ли у нас план?
1.   Привет Node!
2.   Web Проект
3.   SPA
4.   Windows Azure
5.   Socket.IO




                      @dmytromindra #msswit
Пора делать

ПЕРВЫЕ ШАГИ




              @dmytromindra #msswit
Node Package Manager
           Управляет установкой
           модулей, например

           npm install azure

           npm install –g express




                      @dmytromindra #msswit
Разработка первого

WEB ПРИЛОЖЕНИЯ




                     @dmytromindra #msswit
Что в меню ?
JavaScript везде. И   Express    (сервер)
на сервере, и на      Jade       (сервер)
клиенте. Некоторые    Mustache   (сервер , клиент)
библиотеки            Sammy.js   (клиент)
используются          jQuery     (клиент)
одновременно и на
сервере и на
клиенте.



                                   @dmytromindra #msswit
ПРОСТОЕ WEB ПРИЛОЖЕНИЕ
          Постараемся построить простое
          веб приложение при помощи
          Express, Jade и пары заготовок.




                           @dmytromindra #msswit
SPA* – приложение-страница
             Приложение, состоящее из одной
             веб страницы и обилия скриптов.

             Асинхронно общается с сервером.
             Не перегружается.




             *http://en.wikipedia.org/wiki/Single_Page_Application




                                            @dmytromindra #msswit
Интеграция с

WINDOWS AZURE




               @dmytromindra #msswit
ПРИСТУПАЕМ К РАБОТЕ
Мы кратко расскажем как:
 создать новое Windows Azure Node.js приложение
  используя инструменты Windows PowerShell
 запустить Node приложение локально, используя
  Windows Azure compute emulator
 опубликовать ваше приложение а Windows Azure

Дополнительная информация:
https://www.windowsazure.com/en-us/develop/nodejs/tutorials/getting-started/
https://www.windowsazure.com/en-us/develop/nodejs/tutorials/web-app-with-storage/

                                                                    @dmytromindra #msswit
ЕСЛИ КОРОТКО, ТО
Выполните команду
npm install azure

В файле «c:nodetasklistWebRole1Web.cloud.config» замените
тестовые данные на данные вашей учетной записи Azure.

Вы найдете много полезной информации в файле:
«C:nodetasklistWebRole1node_modulesazureREADME.md»

Создайте новую переменную в вашем JavaScript файле:
var azure = require('azure');

Все готово! Поехали !
                                                  @dmytromindra #msswit
СЕРВИС ТАБЛИЦ
Создаем сервис:
var tableService = azure.createTableService();

Назначаем имя таблице:
var myTableName = “MyTable”;

Создаем таблицу:
tableService.createTableIfNotExists(myTableName,
OnCreatedFunc);

Где OnCreatedFunc является функцией, которая выполнится после
создания таблицы (Callback)
function OnCreatedFunc(errorObject, createdBoolFlag) {…}
Больше информации по адресу:
http://www.windowsazure.com/en-us/develop/nodejs/how-to-guides/table-services/


                                                                                 @dmytromindra #msswit
ДОБАВЛЯЕМ ЗАПИСЬ В ТАБЛИЦУ
Таблица Azure является контейнером для любого объекта. “PK” является
комбинацией Partition и Row ключей.

Объявляем объект:
var myObj = {
  PartitionKey: “MyPartition“, RowKey: “myRowKey“,
  myProp1: “Dima+", myProp2: “Luba=“, myProp3: “Misha”};

Добавляем объект в таблицу:
tableService.insertEntity(
       myTableName, myObj, OnMyObjInserted);

Где функция OnMyObjInserted является callback-ом
function OnMyObjInserted(error, serverEntity) {…}

                                                 @dmytromindra #msswit
ОБНОВЛЯЕМ ЗАПИСЬ
Объявляем объект с обновленными данными:
var myObjUpd = { PartitionKey: “MyPartition“,
RowKey: “myRowKey", myProp1: “Dima+", myProp2:
“Luba=”, myProp3: “Misha and Margo" };

Обновляем существующую сущность:
tableService.updateEntity( myTableName, myObjUpd,
OnMyObjUpdated);
Функция OnMyObjUpdated – это, как всегда, callback:
function OnMyObjUpdated(error, serverEntity) {…}

Подводный камень: вы должны заполнить все поля своего
объекта, либо воспользоваться объектом ServerEntity и изменить
только необходимые поля!
                                            @dmytromindra #msswit
ЗАПРАШИВАЕМ ЗАПИСЬ
Одиночный объект:
tableService.queryEntity(myTableName, myPartition,
myRowKey, OnEntityQueried);

callback:
function OnEntityQueried(error, serverEntity) {…}

Набор объектов:
var query = azure.TableQuery.select().from(myTableName)
               .where(“PartitionKey eq ?”, “MyPartition”);
tableService.queryEntities(query, OnEntitiesQueried);

сallback:
function OnEntitiesQueried(error, serverEntities) {…}

                                         @dmytromindra #msswit
КАК НАСЧЕТ BLOB?
Все работает точно так же, как и в таблицах:
    var azure = require('azure');
    var blobService = azure.createBlobService();
    blobService.createContainerIfNotExists(…);
    blobService.createBlockBlobFromStream(…);
    blobService.listBlobs(…);
    blobService.getBlobToStream(…);
    blobService.deleteBlob(…);

Подробнее
http://www.windowsazure.com/en-us/develop/nodejs/how-to-guides/blob-storage/



                                                                   @dmytromindra #msswit
WEB в реальном времени
SOCKET.IO




                 @dmytromindra #msswit
WebSockets
             Постоянное подключение к
             серверу.
             Часть стандарта HTML5
             Предназначен для
             построения Real-Time
             приложений.



                          @dmytromindra #msswit
Что такое SOCKET.IO?
Больше, чем просто    Виды транспорта:
WebSockets.           WebSocket
Имеет                 Flash Socket
альтернативные виды
транспорта.
                      AJAX long-polling
                      AJAX multipart streaming
Поставляется с
клиентской            IFrame
библиотектой.         JSONP polling


                                     @dmytromindra #msswit
Время действовать
Напишем             В нашем случае этим
приложение,         приложением будет обмен
работающее в        мгновенными сообщениями.
реальном времени.




                                @dmytromindra #msswit
Подводим итоги

В ЗАКЛЮЧЕНИЕ




                 @dmytromindra #msswit
Мои аргументы:
 1. JavaScript невероятно популярен. На рынке много
    программистов.

 2. JavaScript будет единым языком и на сервере и
    на клиенте. Никакого дублирования кода.

 3. Асинхронная событийная модель.




                                      @dmytromindra #msswit
Внеклассное чтение
Как убедить босса?
http://nodeguide.com/convincing_the_boss.html


Выбор правильного стиля
http://stackoverflow.com/questions/5495984/coding-style-guide-for-node-js-apps



Что такое Node?
http://stackoverflow.com/questions/1884724/what-is-node-js



                                                             @dmytromindra #msswit
Это стоит попробовать!

СПАСИБО !
Dmytro.Mindra@gmail.com

                          @dmytromindra #msswit

More Related Content

PPTX
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
PDF
«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов
PDF
Внутреннее устройство и оптимизация бандла webpack
PDF
Компонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
PDF
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
PDF
ДАМП 2015 Екатеринбург
PPT
Attacking MongoDB
PDF
JavaScript Базовый. Занятие 07.
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов
Внутреннее устройство и оптимизация бандла webpack
Компонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
ДАМП 2015 Екатеринбург
Attacking MongoDB
JavaScript Базовый. Занятие 07.

What's hot (20)

PPT
Арсений Заречнев и Федор Шумов - Одностраничные приложения
PDF
JavaScript Базовый. Занятие 11.
PDF
DOM-шаблонизаторы – не только "быстро"
PDF
Быстро о быстром
PPTX
What do you MEAN? или введение в Fullstack JavaScript
PPTX
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
PDF
Арсений Заречнев и Федор Шумов - Одностраничные приложения
PDF
Как построить DOM
PDF
Суперсилы Chrome developer tools
PDF
Favicon на стероидах
PDF
"Favicon на стероидах" Александр Амосов (Avito)
PDF
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
PDF
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
PDF
Опыт разработки эффективного SPA
ODP
Top10 доводов против языка Ruby
PPT
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
PDF
Михаил Давыдов "Масштабируемые JavaScript-приложения"
PPTX
Опыт эксплуатации большого проекта на Ruby
PPTX
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
PDF
Хайлоад и безопасность в мире DevOps: совместимы ли? / Юрий Колесов (security...
Арсений Заречнев и Федор Шумов - Одностраничные приложения
JavaScript Базовый. Занятие 11.
DOM-шаблонизаторы – не только "быстро"
Быстро о быстром
What do you MEAN? или введение в Fullstack JavaScript
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Арсений Заречнев и Федор Шумов - Одностраничные приложения
Как построить DOM
Суперсилы Chrome developer tools
Favicon на стероидах
"Favicon на стероидах" Александр Амосов (Avito)
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
Опыт разработки эффективного SPA
Top10 доводов против языка Ruby
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Опыт эксплуатации большого проекта на Ruby
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
Хайлоад и безопасность в мире DevOps: совместимы ли? / Юрий Колесов (security...
Ad

Viewers also liked (9)

PDF
Enterprise Agile
PDF
Проектирование интернет-сайтов и систем в Redsoft
PDF
Timothy N. Tsvetkov, Rails 3.1
PDF
new JavaScript
PDF
Серверный JavaScript: NodeJS и CouchDB
PPTX
Повышаем отказоустойчивость без дорогих решений
PDF
«Мой сосед Легаси», Сергей Федоров, Evil Martians
PPT
Гибкость и Структурированность Oбъектно Oриентированноя CSS
PDF
Study: The Future of VR, AR and Self-Driving Cars
Enterprise Agile
Проектирование интернет-сайтов и систем в Redsoft
Timothy N. Tsvetkov, Rails 3.1
new JavaScript
Серверный JavaScript: NodeJS и CouchDB
Повышаем отказоустойчивость без дорогих решений
«Мой сосед Легаси», Сергей Федоров, Evil Martians
Гибкость и Структурированность Oбъектно Oриентированноя CSS
Study: The Future of VR, AR and Self-Driving Cars
Ad

Similar to Windows Azure & NodeJS Microsoft SWIT 2012 (20)

PPTX
Windows Azure and node js
PDF
2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js
PDF
Introduction in Node.js (in russian)
PPTX
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
PPTX
Convert this: peculiarities of cross-platform mobile game development at Vizor
PDF
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
PPTX
Open source technologies in Microsoft cloud - MS SWIT 2014
PPTX
Alexei Sintsov - "Between error and vulerability - one step"
PDF
Desktop app based on node js and html5
PPT
SmartOS/Solaris app tuning tools/technologies on HL++ 2013
PPT
Git in Sky presentation @ HighLoad++ 2013
PPTX
Nikita Galkin "5 production Node.js stories"
PDF
Сергей Житинский, Александр Чистяков (Git in Sky)
PDF
Сергей Перескоков "JS API Яндекс.Карт 2.0: что нового и как это работает"
PDF
МРТ для данных / Анастасия Горячева (Avito)
PDF
МРТ для данных, Frontend Conf 2016
PDF
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDB
PDF
Zabbix в badoo, от lld к super discovery
PDF
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft
Windows Azure and node js
2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js
Introduction in Node.js (in russian)
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Convert this: peculiarities of cross-platform mobile game development at Vizor
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
Open source technologies in Microsoft cloud - MS SWIT 2014
Alexei Sintsov - "Between error and vulerability - one step"
Desktop app based on node js and html5
SmartOS/Solaris app tuning tools/technologies on HL++ 2013
Git in Sky presentation @ HighLoad++ 2013
Nikita Galkin "5 production Node.js stories"
Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Перескоков "JS API Яндекс.Карт 2.0: что нового и как это работает"
МРТ для данных / Анастасия Горячева (Avito)
МРТ для данных, Frontend Conf 2016
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDB
Zabbix в badoo, от lld к super discovery
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft

More from Dmytro Mindra (20)

PDF
Introduction to Value Planning for iHUB
PDF
Mastering public speaking skills
PPTX
XP Days Ukraine 2014 - Refactoring legacy code
PPTX
Odessa .NET User Group - Kinect v2
PDF
Building Windows Phone 8 Games With Unity3d
PDF
IT Brunch - SpecFlow and Gherkin by Example
PDF
Odessa Pluralsight Study Group 28.11.2012
PDF
Тестируем код с Visual Studio 2012 - XP Days Ukraine 2012
PDF
Compilable Specifications - XPDays Ukraine 2012
PPTX
NetworkUA - 2012 - Introduction TypeScript
PPTX
Ciklum .NET Saturday - Introduction to TypeScript
PPTX
Lean Lego Game for Agileee 2012
PPTX
Lohika .Net Day - What's new in Windows Azure
PPTX
Web В РЕАЛЬНОМ ВРЕМЕНИ С Node.js - AgileBaseCamp - 2012
PPTX
Lean Software Development
PPTX
Craftsmanship - XP Days 2011
PDF
Agile architecture
PPTX
PDF
Odessa .NET User Group - 10.11.2011 - Applied Code Generation
PDF
IT Brunch - 12.11.2011 - Myths about Design
Introduction to Value Planning for iHUB
Mastering public speaking skills
XP Days Ukraine 2014 - Refactoring legacy code
Odessa .NET User Group - Kinect v2
Building Windows Phone 8 Games With Unity3d
IT Brunch - SpecFlow and Gherkin by Example
Odessa Pluralsight Study Group 28.11.2012
Тестируем код с Visual Studio 2012 - XP Days Ukraine 2012
Compilable Specifications - XPDays Ukraine 2012
NetworkUA - 2012 - Introduction TypeScript
Ciklum .NET Saturday - Introduction to TypeScript
Lean Lego Game for Agileee 2012
Lohika .Net Day - What's new in Windows Azure
Web В РЕАЛЬНОМ ВРЕМЕНИ С Node.js - AgileBaseCamp - 2012
Lean Software Development
Craftsmanship - XP Days 2011
Agile architecture
Odessa .NET User Group - 10.11.2011 - Applied Code Generation
IT Brunch - 12.11.2011 - Myths about Design

Windows Azure & NodeJS Microsoft SWIT 2012

  • 1. Дмитрий Миндра, Lohika WEB В РЕАЛЬНОМ ВРЕМЕНИ С WINDOWS AZURE И NODE.JS @dmytromindra #msswit
  • 2. Для кого этот доклад? Вам нравится JavaScript Вы хотите чего-то нового! Вам нравится Web @dmytromindra #msswit
  • 3. Мустафин Дмитрий RnD Team Lead Microsoft Technologies Lab Member @dmytromindra #msswit
  • 4. Нечто Великолепное ПО @dmytromindra #msswit
  • 5. Посторонись, пресловутый PHP! Долой Java! Старичок Perl, тебе так вообще давно пора на пенсию. И как же вы уже достали, попсовые Ruby и Python! (c) xakep http://www.xakep.ru/post/53583/ @dmytromindra #msswit
  • 6. Мы Ждем Перемен ! @dmytromindra #msswit
  • 8. & Node.js @dmytromindra 2011 23 июня #msswit
  • 9. HELLO WORLD var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello Worldn'); }).listen(1337, "127.0.0.1"); console.log('Server running at http://127.0.0.1:1337/'); @dmytromindra #msswit
  • 10. ПОЧЕМУ NODE.JS? Цель Node.JS - Event Driven обеспечение Все асинхронно простого способа создания Работает на Google V8 масштабируемых Официально поддерживается сетевых программ. компанией Microsoft Хорошо параллелится (при работе с вводом/выводом) @dmytromindra #msswit
  • 11. АСИНХРОННОСТЬ Пока выполняется операция, которую надо ждать, Node.JS занимается полезным делом. @dmytromindra #msswit
  • 12. СЛАБЫЕ СТОРОНЫ У Node.JS есть Плохо справляется с слабые стороны, о тяжелыми вычислительными которых надо задачами помнить. Использует только одно ядро процессора (есть утилита Cluster) @dmytromindra #msswit
  • 13. Спагетти код var fs = require('fs') , path = require('path') , file1 = "file1.txt“ , file2 = "file2.txt"; // Check if file1 exists, write to file2, // then display new file2 contents. path.exists(file1, function (exists) { if (!exists) throw new Error("No file!"); fs.readFile(file1, function (err, data) { if (err) throw err; fs.writeFile(file2, data, function (err) { if (err) throw err; fs.readFile(file2, function (err, data) { if (err) throw err; console.log(data.toString()); ... }); }); }); }); @dmytromindra #msswit
  • 14. ХОРОШИЙ ИНСТРУМЕНТ Для подходящей задачи. Важно уметь отличить подходящую задачу от неподходящей. @dmytromindra #msswit
  • 15. Есть ли у нас план? 1. Привет Node! 2. Web Проект 3. SPA 4. Windows Azure 5. Socket.IO @dmytromindra #msswit
  • 17. Node Package Manager Управляет установкой модулей, например npm install azure npm install –g express @dmytromindra #msswit
  • 19. Что в меню ? JavaScript везде. И Express (сервер) на сервере, и на Jade (сервер) клиенте. Некоторые Mustache (сервер , клиент) библиотеки Sammy.js (клиент) используются jQuery (клиент) одновременно и на сервере и на клиенте. @dmytromindra #msswit
  • 20. ПРОСТОЕ WEB ПРИЛОЖЕНИЕ Постараемся построить простое веб приложение при помощи Express, Jade и пары заготовок. @dmytromindra #msswit
  • 21. SPA* – приложение-страница Приложение, состоящее из одной веб страницы и обилия скриптов. Асинхронно общается с сервером. Не перегружается. *http://en.wikipedia.org/wiki/Single_Page_Application @dmytromindra #msswit
  • 22. Интеграция с WINDOWS AZURE @dmytromindra #msswit
  • 23. ПРИСТУПАЕМ К РАБОТЕ Мы кратко расскажем как:  создать новое Windows Azure Node.js приложение используя инструменты Windows PowerShell  запустить Node приложение локально, используя Windows Azure compute emulator  опубликовать ваше приложение а Windows Azure Дополнительная информация: https://www.windowsazure.com/en-us/develop/nodejs/tutorials/getting-started/ https://www.windowsazure.com/en-us/develop/nodejs/tutorials/web-app-with-storage/ @dmytromindra #msswit
  • 24. ЕСЛИ КОРОТКО, ТО Выполните команду npm install azure В файле «c:nodetasklistWebRole1Web.cloud.config» замените тестовые данные на данные вашей учетной записи Azure. Вы найдете много полезной информации в файле: «C:nodetasklistWebRole1node_modulesazureREADME.md» Создайте новую переменную в вашем JavaScript файле: var azure = require('azure'); Все готово! Поехали ! @dmytromindra #msswit
  • 25. СЕРВИС ТАБЛИЦ Создаем сервис: var tableService = azure.createTableService(); Назначаем имя таблице: var myTableName = “MyTable”; Создаем таблицу: tableService.createTableIfNotExists(myTableName, OnCreatedFunc); Где OnCreatedFunc является функцией, которая выполнится после создания таблицы (Callback) function OnCreatedFunc(errorObject, createdBoolFlag) {…} Больше информации по адресу: http://www.windowsazure.com/en-us/develop/nodejs/how-to-guides/table-services/ @dmytromindra #msswit
  • 26. ДОБАВЛЯЕМ ЗАПИСЬ В ТАБЛИЦУ Таблица Azure является контейнером для любого объекта. “PK” является комбинацией Partition и Row ключей. Объявляем объект: var myObj = { PartitionKey: “MyPartition“, RowKey: “myRowKey“, myProp1: “Dima+", myProp2: “Luba=“, myProp3: “Misha”}; Добавляем объект в таблицу: tableService.insertEntity( myTableName, myObj, OnMyObjInserted); Где функция OnMyObjInserted является callback-ом function OnMyObjInserted(error, serverEntity) {…} @dmytromindra #msswit
  • 27. ОБНОВЛЯЕМ ЗАПИСЬ Объявляем объект с обновленными данными: var myObjUpd = { PartitionKey: “MyPartition“, RowKey: “myRowKey", myProp1: “Dima+", myProp2: “Luba=”, myProp3: “Misha and Margo" }; Обновляем существующую сущность: tableService.updateEntity( myTableName, myObjUpd, OnMyObjUpdated); Функция OnMyObjUpdated – это, как всегда, callback: function OnMyObjUpdated(error, serverEntity) {…} Подводный камень: вы должны заполнить все поля своего объекта, либо воспользоваться объектом ServerEntity и изменить только необходимые поля! @dmytromindra #msswit
  • 28. ЗАПРАШИВАЕМ ЗАПИСЬ Одиночный объект: tableService.queryEntity(myTableName, myPartition, myRowKey, OnEntityQueried); callback: function OnEntityQueried(error, serverEntity) {…} Набор объектов: var query = azure.TableQuery.select().from(myTableName) .where(“PartitionKey eq ?”, “MyPartition”); tableService.queryEntities(query, OnEntitiesQueried); сallback: function OnEntitiesQueried(error, serverEntities) {…} @dmytromindra #msswit
  • 29. КАК НАСЧЕТ BLOB? Все работает точно так же, как и в таблицах: var azure = require('azure'); var blobService = azure.createBlobService(); blobService.createContainerIfNotExists(…); blobService.createBlockBlobFromStream(…); blobService.listBlobs(…); blobService.getBlobToStream(…); blobService.deleteBlob(…); Подробнее http://www.windowsazure.com/en-us/develop/nodejs/how-to-guides/blob-storage/ @dmytromindra #msswit
  • 30. WEB в реальном времени SOCKET.IO @dmytromindra #msswit
  • 31. WebSockets Постоянное подключение к серверу. Часть стандарта HTML5 Предназначен для построения Real-Time приложений. @dmytromindra #msswit
  • 32. Что такое SOCKET.IO? Больше, чем просто Виды транспорта: WebSockets. WebSocket Имеет Flash Socket альтернативные виды транспорта. AJAX long-polling AJAX multipart streaming Поставляется с клиентской IFrame библиотектой. JSONP polling @dmytromindra #msswit
  • 33. Время действовать Напишем В нашем случае этим приложение, приложением будет обмен работающее в мгновенными сообщениями. реальном времени. @dmytromindra #msswit
  • 35. Мои аргументы: 1. JavaScript невероятно популярен. На рынке много программистов. 2. JavaScript будет единым языком и на сервере и на клиенте. Никакого дублирования кода. 3. Асинхронная событийная модель. @dmytromindra #msswit
  • 36. Внеклассное чтение Как убедить босса? http://nodeguide.com/convincing_the_boss.html Выбор правильного стиля http://stackoverflow.com/questions/5495984/coding-style-guide-for-node-js-apps Что такое Node? http://stackoverflow.com/questions/1884724/what-is-node-js @dmytromindra #msswit
  • 37. Это стоит попробовать! СПАСИБО ! Dmytro.Mindra@gmail.com @dmytromindra #msswit