1 / 38

Web В РЕАЛЬНОМ ВРЕМЕНИ С Windows Azure И Node.js

http://www.slideshare.net/dmytromindra. Дмитрий Миндра, Lohika. Web В РЕАЛЬНОМ ВРЕМЕНИ С Windows Azure И Node.js. Вы замечательные !. Для кого этот доклад?. Вам нравится JavaScript Вы хотите чего-то нового! Вам нравится Web. Мустафин Дмитрий. RnD Team Lead

caron
Download Presentation

Web В РЕАЛЬНОМ ВРЕМЕНИ С Windows Azure И Node.js

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. http://www.slideshare.net/dmytromindra Дмитрий Миндра, Lohika Web В РЕАЛЬНОМ ВРЕМЕНИ С Windows Azure ИNode.js

  2. Вы замечательные !

  3. Для кого этот доклад? Вам нравится JavaScript Вы хотите чего-то нового! Вам нравится Web

  4. Мустафин Дмитрий RnD Team Lead Microsoft Technologies Lab Member

  5. Нечто Великолепное ПО

  6. Посторонись, пресловутый PHP! Долой Java! • Старичок Perl, тебе так вообще давно пора на пенсию. • И как же вы уже достали, попсовые Ruby и Python! • (c) xakep • http://www.xakep.ru/post/53583/

  7. Мы • Ждем • Перемен !

  8. & Node.js 23 июня 2011

  9. HELLO WORLD var http = require('http'); http.createServer(function(req, res){ res.writeHead(200,{'Content-Type':'text/plain'}); res.end('Hello World\n'); }).listen(1337,"127.0.0.1"); console.log('Server running at http://127.0.0.1:1337/');

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

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

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

  13. Спагетти код varfs = 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) thrownew 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()); ... }); }); }); });

  14. ХОРОШИЙ ИНСТРУМЕНТ Для подходящей задачи. Важно уметь отличить подходящую задачу от неподходящей.

  15. Есть ли у нас план? ПриветNode! Web Проект SPA Windows Azure Socket.IO

  16. Пора делать ПЕРВЫЕ ШАГИ

  17. Node Package Manager Управляет установкой модулей, например npm install azure npminstall –g express

  18. Разработка первого WEB приложения

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

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

  21. SPA* – приложение-страница Приложение, состоящее из одной веб страницы и обилия скриптов. Асинхронно общается с сервером. Не перегружается. *http://en.wikipedia.org/wiki/Single_Page_Application

  22. Интеграция с Windows Azure

  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/

  24. ЕСЛИ КОРОТКО, ТО Выполните команду npm install azure В файле «c:\node\tasklist\WebRole1\Web.cloud.config»замените тестовые данные на данные вашей учетной записи Azure. Вы найдете много полезной информации в файле: «C:\node\tasklist\WebRole1\node_modules\azure\README.md» Создайте новую переменную в вашем JavaScript файле: var azure = require('azure'); Все готово! Поехали !

  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/

  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) {…}

  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 и изменить только необходимые поля!

  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) {…}

  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/

  30. WEB в реальном времени Socket.IO

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

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

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

  34. Подводим итоги В ЗАКЛЮЧЕНИЕ

  35. Мои аргументы: JavaScript невероятно популярен. На рынке много программистов. JavaScript будет единым языком и на сервере и на клиенте. Никакого дублирования кода. Асинхронная событийная модель.

  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

  37. Это стоит попробовать! Спасибо ! Dmytro.Mindra@gmail.com

More Related