Windows Azure and node js
Upcoming SlideShare
Loading in...5
×
 

Windows Azure and node js

on

  • 1,249 views

Windows Azure and NodeJS by Dmytro Mindra

Windows Azure and NodeJS by Dmytro Mindra

Statistics

Views

Total Views
1,249
Views on SlideShare
1,248
Embed Views
1

Actions

Likes
0
Downloads
0
Comments
0

1 Embed 1

http://nodeslide.herokuapp.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Windows Azure and node js Windows Azure and node js Presentation Transcript

  • Дмитрий Миндра, Lohika WEB В РЕАЛЬНОМ ВРЕМЕНИ С WINDOWS AZURE И NODE.JShttp://www.slideshare.net/dmytromindra @dmytromindra #msugodua
  • Вы замечательные ! @dmytromindra #msugodua
  • Для кого этот доклад?Вам нравитсяJavaScriptВы хотите чего-тонового!Вам нравится Web @dmytromindra #msugodua
  • Мустафин ДмитрийRnD Team LeadMicrosoftTechnologies LabMember @dmytromindra #msugodua
  • Нечто Великолепное ПО @dmytromindra #msugodua
  • Посторонись, пресловутый PHP! Долой Java!Старичок Perl, тебе так вообще давно пора на пенсию.И как же вы уже достали, попсовые Ruby и Python!(c) xakep http://www.xakep.ru/post/53583/ @dmytromindra #msugodua
  • МыЖдемПеремен ! @dmytromindra #msugodua
  • @dmytromindra #msugodua
  • &Node.js 23 июня 2011 @dmytromindra #msugodua
  • HELLO WORLDvar 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 #msugodua
  • ПОЧЕМУ NODE.JS?Цель Node.JS - Event Drivenобеспечение Все асинхроннопростого способасоздания Работает на Google V8масштабируемых Официально поддерживаетсясетевых программ. компанией Microsoft Хорошо параллелится (при работе с вводом/выводом) @dmytromindra #msugodua
  • АСИНХРОННОСТЬПока выполняетсяоперация, которуюнадождать, Node.JSзанимаетсяполезным делом. @dmytromindra #msugodua
  • СЛАБЫЕ СТОРОНЫУ Node.JS есть Плохо справляется сслабые стороны, о тяжелыми вычислительнымикоторых надо задачамипомнить. Использует только одно ядро процессора (есть утилита Cluster) @dmytromindra #msugodua
  • Спагетти код 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 #msugodua
  • ХОРОШИЙ ИНСТРУМЕНТДля подходящейзадачи.Важно уметьотличитьподходящуюзадачу отнеподходящей. @dmytromindra #msugodua
  • Есть ли у нас план?1. Привет Node!2. Web Проект3. SPA4. Windows Azure5. Socket.IO @dmytromindra #msugodua
  • Пора делатьПЕРВЫЕ ШАГИ @dmytromindra #msugodua
  • Node Package Manager Управляет установкой модулей, например npm install azure npm install –g express @dmytromindra #msugodua
  • Разработка первогоWEB ПРИЛОЖЕНИЯ @dmytromindra #msugodua
  • Что в меню ?JavaScript везде. И Express (сервер)на сервере, и на Jade (сервер)клиенте. Некоторые Mustache (сервер , клиент)библиотеки Sammy.js (клиент)используются jQuery (клиент)одновременно и насервере и наклиенте. @dmytromindra #msugodua
  • ПРОСТОЕ WEB ПРИЛОЖЕНИЕ Постараемся построить простое веб приложение при помощи Express, Jade и пары заготовок. @dmytromindra #msugodua
  • SPA* – приложение-страница Приложение, состоящее из одной веб страницы и обилия скриптов. Асинхронно общается с сервером. Не перегружается. *http://en.wikipedia.org/wiki/Single_Page_Application @dmytromindra #msugodua
  • Интеграция сWINDOWS AZURE @dmytromindra #msugodua
  • ПРИСТУПАЕМ К РАБОТЕМы кратко расскажем как: создать новое 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 #msugodua
  • ЕСЛИ КОРОТКО, ТОВыполните командуnpm install azureВ файле «c:nodetasklistWebRole1Web.cloud.config» заменитетестовые данные на данные вашей учетной записи Azure.Вы найдете много полезной информации в файле:«C:nodetasklistWebRole1node_modulesazureREADME.md»Создайте новую переменную в вашем JavaScript файле:var azure = require(azure);Все готово! Поехали ! @dmytromindra #msugodua
  • СЕРВИС ТАБЛИЦСоздаем сервис: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 #msugodua
  • ДОБАВЛЯЕМ ЗАПИСЬ В ТАБЛИЦУТаблица 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 #msugodua
  • ОБНОВЛЯЕМ ЗАПИСЬОбъявляем объект с обновленными данными:var myObjUpd = { PartitionKey:“MyPartition“, RowKey: “myRowKey", myProp1:“Dima+", myProp2: “Luba=”, myProp3: “Misha andMargo" };Обновляем существующую сущность:tableService.updateEntity(myTableName, myObjUpd, OnMyObjUpdated);Функция OnMyObjUpdated – это, как всегда, callback:function OnMyObjUpdated(error, serverEntity) {…}Подводный камень: вы должны заполнить все поля своегообъекта, либо воспользоваться объектом ServerEntity и изменитьтолько необходимые поля! @dmytromindra #msugodua
  • ЗАПРАШИВАЕМ ЗАПИСЬОдиночный объект: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 #msugodua
  • КАК НАСЧЕТ 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 #msugodua
  • WEB в реальном времениSOCKET.IO @dmytromindra #msugodua
  • WebSockets Постоянное подключение к серверу. Часть стандарта HTML5 Предназначен для построения Real-Time приложений.http://tools.ietf.org/html/rfc6455 @dmytromindra #msugodua
  • Что такое SOCKET.IO?Больше, чем просто Виды транспорта:WebSockets. WebSocketИмеет Flash Socketальтернативные видытранспорта. AJAX long-polling AJAX multipart streamingПоставляется склиентской IFrameбиблиотектой. JSONP polling @dmytromindra #msugodua
  • Время действоватьНапишем В нашем случае этимприложение, работа приложением будет обменющее в реальном мгновенными сообщениями.времени. @dmytromindra #msugodua
  • Подводим итогиВ ЗАКЛЮЧЕНИЕ @dmytromindra #msugodua
  • Мои аргументы: 1. JavaScript невероятно популярен. На рынке много программистов. 2. JavaScript будет единым языком и на сервере и на клиенте. Никакого дублирования кода. 3. Асинхронная событийная модель. @dmytromindra #msugodua
  • Внеклассное чтениеКак убедить босса?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 #msugodua
  • Это стоит попробовать!СПАСИБО !Dmytro.Mindra@gmail.com @dmytromindra #msugodua