Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Windows Azure & NodeJS Microsoft SWIT 2012

1,268 views

Published on

Published in: Technology
  • Be the first to comment

Windows Azure & NodeJS Microsoft SWIT 2012

  1. 1. Дмитрий Миндра, LohikaWEB В РЕАЛЬНОМ ВРЕМЕНИ СWINDOWS AZURE И NODE.JS @dmytromindra #msswit
  2. 2. Для кого этот доклад?Вам нравитсяJavaScriptВы хотите чего-тонового!Вам нравится Web @dmytromindra #msswit
  3. 3. Мустафин ДмитрийRnD Team LeadMicrosoftTechnologies LabMember @dmytromindra #msswit
  4. 4. Нечто Великолепное ПО @dmytromindra #msswit
  5. 5. Посторонись, пресловутый PHP! Долой Java!Старичок Perl, тебе так вообще давно пора на пенсию.И как же вы уже достали, попсовые Ruby и Python!(c) xakep http://www.xakep.ru/post/53583/ @dmytromindra #msswit
  6. 6. МыЖдемПеремен ! @dmytromindra #msswit
  7. 7. @dmytromindra #msswit
  8. 8. &Node.js @dmytromindra 2011 23 июня #msswit
  9. 9. 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 #msswit
  10. 10. ПОЧЕМУ NODE.JS?Цель Node.JS - Event Drivenобеспечение Все асинхроннопростого способасоздания Работает на Google V8масштабируемых Официально поддерживаетсясетевых программ. компанией Microsoft Хорошо параллелится (при работе с вводом/выводом) @dmytromindra #msswit
  11. 11. АСИНХРОННОСТЬПока выполняетсяоперация, которуюнадо ждать,Node.JS занимаетсяполезным делом. @dmytromindra #msswit
  12. 12. СЛАБЫЕ СТОРОНЫУ Node.JS есть Плохо справляется сслабые стороны, о тяжелыми вычислительнымикоторых надо задачамипомнить. Использует только одно ядро процессора (есть утилита Cluster) @dmytromindra #msswit
  13. 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. 14. ХОРОШИЙ ИНСТРУМЕНТДля подходящейзадачи.Важно уметьотличитьподходящуюзадачу отнеподходящей. @dmytromindra #msswit
  15. 15. Есть ли у нас план?1. Привет Node!2. Web Проект3. SPA4. Windows Azure5. Socket.IO @dmytromindra #msswit
  16. 16. Пора делатьПЕРВЫЕ ШАГИ @dmytromindra #msswit
  17. 17. Node Package Manager Управляет установкой модулей, например npm install azure npm install –g express @dmytromindra #msswit
  18. 18. Разработка первогоWEB ПРИЛОЖЕНИЯ @dmytromindra #msswit
  19. 19. Что в меню ?JavaScript везде. И Express (сервер)на сервере, и на Jade (сервер)клиенте. Некоторые Mustache (сервер , клиент)библиотеки Sammy.js (клиент)используются jQuery (клиент)одновременно и насервере и наклиенте. @dmytromindra #msswit
  20. 20. ПРОСТОЕ WEB ПРИЛОЖЕНИЕ Постараемся построить простое веб приложение при помощи Express, Jade и пары заготовок. @dmytromindra #msswit
  21. 21. SPA* – приложение-страница Приложение, состоящее из одной веб страницы и обилия скриптов. Асинхронно общается с сервером. Не перегружается. *http://en.wikipedia.org/wiki/Single_Page_Application @dmytromindra #msswit
  22. 22. Интеграция сWINDOWS AZURE @dmytromindra #msswit
  23. 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. 24. ЕСЛИ КОРОТКО, ТОВыполните командуnpm install azureВ файле «c:nodetasklistWebRole1Web.cloud.config» заменитетестовые данные на данные вашей учетной записи Azure.Вы найдете много полезной информации в файле:«C:nodetasklistWebRole1node_modulesazureREADME.md»Создайте новую переменную в вашем JavaScript файле:var azure = require(azure);Все готово! Поехали ! @dmytromindra #msswit
  25. 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. 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. 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. 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. 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. 30. WEB в реальном времениSOCKET.IO @dmytromindra #msswit
  31. 31. WebSockets Постоянное подключение к серверу. Часть стандарта HTML5 Предназначен для построения Real-Time приложений. @dmytromindra #msswit
  32. 32. Что такое SOCKET.IO?Больше, чем просто Виды транспорта:WebSockets. WebSocketИмеет Flash Socketальтернативные видытранспорта. AJAX long-polling AJAX multipart streamingПоставляется склиентской IFrameбиблиотектой. JSONP polling @dmytromindra #msswit
  33. 33. Время действоватьНапишем В нашем случае этимприложение, приложением будет обменработающее в мгновенными сообщениями.реальном времени. @dmytromindra #msswit
  34. 34. Подводим итогиВ ЗАКЛЮЧЕНИЕ @dmytromindra #msswit
  35. 35. Мои аргументы: 1. JavaScript невероятно популярен. На рынке много программистов. 2. JavaScript будет единым языком и на сервере и на клиенте. Никакого дублирования кода. 3. Асинхронная событийная модель. @dmytromindra #msswit
  36. 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. 37. Это стоит попробовать!СПАСИБО !Dmytro.Mindra@gmail.com @dmytromindra #msswit

×