Создание web-приложений в Silverlight

Лоран Буньон

Silverlight - новая революционная технология разработки пользовательских веб-интерфейсов, созданная корпорацией Майкрософт на основе Windows Presentation Foundation (WPF). В приложениях Silverlight используется язык разметки XAML при поддержке таких инструментов, как Expression Design и Expression Blend. Это дает возможность реализовывать поразительные эффекты (градиенты, композиции, анимации). Помимо богатого набора элементов управления, Silverlight позволяет использовать не только язык JavaScript, но также С# и VB.

Silverlight предоставляет вам всю мощь .NET на различных платформах (Internet Explorer и Firefox для Windows, Firefox и Safari для Macintosh и Firefox для Linux). Автор на многочисленных примерах помогает очень быстро овладеть основами этой современной технологии.

Издательство: ДМК Пресс, 2012 г.

ISBN 978-5-94074-307-1

Количество страниц: 528.

Содержание книги «Создание web-приложений в Silverlight»:

  • 19 Предисловие
  • 20 Об авторе
  • 21 Посвящение
  • 22 Благодарности
    • 23 В помощь читателям
  • 24 Введение
    • 25 О примерах кода
    • 25 Старше на год
  • 26 Глава 1. Введение в Silverlight
    • 27 Истоки технологии Silverlight
      • 27 Автоматизация веб-страниц с помощью языка JavaScript
      • 28 Каскадные таблицы стилей
      • 29 Переход к DHTML
      • 29 AJAX – более развитый способ коммуникации
    • 30 Использование сторонних надстроек
      • 30 Java-апплеты
      • 31 Элементы управления ActiveX
      • 31 Flash-приложения
    • 32 Работа на разных платформах
    • 33 Веб-приложения и безопасность
    • 34 Знакомство с Silverlight.net
    • 34 Что необходимо для запуска Silverlight?
    • 35 Автоматическое обновление среды исполнения
    • 36 Познакомимся с демонстрационными приложениями Silverlight
      • 36 Поиграем в шахматы против Silverlight
      • 37 Планирование путешествия с помощью приложения Airline
      • 38 Панорамирование харддрокккафе
      • 39 Где найти дополнительные демонстрации
    • 39 Что необходимо для разработки приложений Silverlight?
      • 40 Expression Studio
      • 40 Visual Studio 2008
    • 41 Чтение документации
      • 41 Просмотр онлайновой документации
      • 41 Поиск дополнительной документации
      • 42 Учебные пособия
    • 42 Заглянем в будущее Silverlight
      • 43 Считать ли ASP.NET/HTML/JavaScript покойниками?
    • 43 Резюме
  • 44 Глава 2. Знакомство с XAML
    • 44 Использование XML для представления данных
      • 45 XML и пользовательские интерфейсы
    • 46 Пространства имен в XML
    • 47 Определение дополнительных пространств имен
    • 48 Создание элемента Canvas с дочерними элементами
    • 49 Присоединенные свойства: Canvas.Left и Canvas.Top
    • 49 Документирование разметки с помощью XML-комментариев
    • 50 Тестирование XAML-разметки
      • 50 Использование SilverlightPad
      • 51 Использование KaXaml
    • 52 Задание свойств в XAML
    • 54 Изменение кисти
    • 55 Описание сцен в XAML
    • 57 Меньше вводить, экономить место
    • 57 Резюме
  • 59 Глава 3. Трансформации и анимации в XAML
    • 59 Трансформация визуальных элементов
    • 61 Типы трансформаций
      • 61 Трансформация RotateTransform
      • 61 Трансформация TranslateTransform
      • 62 Трансформация ScaleTransform
      • 63 Трансформация SkewTransform
      • 64 Трансформация MatrixTransform
    • 65 Композиция трансформаций
    • 66 Создание простой анимации
    • 68 Составные элементы анимации
    • 69 Добавление анимации масштабированием
    • 70 Использование других типов анимаций
      • 71 Навигация по пути к свойству
    • 72 Развертывание сцены на веб-странице
    • 72 Резюме
  • 73 Глава 4. Самовыражение с помощью Expression Blend
    • 73 Коротко об Expression Studio
    • 73 Установка Expression Blend
    • 74 Запуск Expression Blend
    • 74 Опции настройки
    • 76 Создание нового проекта
    • 76 Панели
    • 77 Знакомство с файлами
    • 78 Исполнение в веб-браузере
    • 79 Работа с формами
    • 80 Панель свойств
    • 80 Элемент Color Picker
      • 81 Создание кисти LinearGradienBrush
      • 82 Изменение вектора градиента
      • 82 Создание радиально-градиентной кисти
    • 83 Создание эффекта трехмерной границы с помощью радиально-градиентной кисти
    • 83 Восстановление подразумеваемых по умолчанию значений свойств
    • 84 Составление иерархии элементов
    • 85 Резюме
  • 86 Глава 5. Мультимедиа
    • 86 Смешивание цветов
      • 87 Почему FF?
    • 88 Канал прозрачности
    • 89 Свойство Opacity
    • 90 Векторная графика
    • 91 Добавление на сцену мультимедийных элементов
      • 92 Создание макета приложения
      • 93 Добавление картинок
      • 94 Добавление видео
      • 95 Тестирование результата в браузере
      • 95 Уточнение макета
      • 97 Добавление еще одной картинки
    • 97 Управление звуком и видео
      • 97 Отключение автоматического воспроизведения
      • 98 Зацикливание
      • 99 Приостановка и возобновление видео
      • 100 Изменение формы курсора
    • 100 Другие свойства
      • 100 Заполнение пространства
      • 101 Как сделать изображение незаметным при перемещении мыши
    • 101 Использование мультимедийных элементов для вывода
      • 101 Вывод с помощью видео
      • 102 Применение невидимого видеоролика для рисования текста
      • 102 Вывод с помощью изображений
    • 103 Трансформации мультимедийных элементов
    • 103 Использование мультимедийных элементов из веб
    • 105 Резюме
  • 106 Глава 6. Еще об Expression Blend
    • 106 Создание трансформаций
    • 107 Создание маски прозрачности OpacityMask
    • 108 Контуры
      • 108 Создание контура с нуля
      • 109 Использование сплайнов для модификации контура
      • 109 Комбинирование форм
    • 110 Обтравочные контуры
      • 111 Контуры в XAML
    • 112 Группировка элементов управления
      • 112 Группировка элементов
      • 113 Другие панели
      • 113 Прокрутка миниатюр
    • 114 Пользовательские элементы управления
      • 115 Создание пользовательского элемента управления
      • 116 Применение пользовательского элемента управления
    • 117 Продолжаем работу над галереей миниатюр
      • 117 Добавление фрейма отображения
      • 118 Добавление отражений под миниатюрами
      • 120 Отражение видео
      • 120 И последнее
    • 120 Резюме
  • 121 Глава 7. Развертывание на веб-странице
    • 121 Создание тестовой страницы
    • 122 Тег object
      • 122 Атрибуты
      • 123 Параметры
      • 124 Модификация атрибутов и параметров
      • 128 Развертывание с помощью JavaScript
    • 128 Определение версии Silverlight
    • 128 Интеграция Silverlight в существующую веб-страницу
      • 129 Изучение оригинального кода
      • 130 Получение XAP-файла
      • 130 Модификация разметки
      • 131 Тестирование результата
      • 132 Ссылка на XAP-файл на другом веб-сервере
    • 132 Получение места на веб-сервере
      • 133 Требования к веб-серверу
      • 134 Поиск провайдера
    • 134 Знакомство с FTP
      • 135 Настройка FTP-клиента
      • 136 Соединение с сервером
    • 137 Копирование приложения Silverlight
      • 139 Тестирование результата
    • 139 Резюме
  • 140 Глава 8. Программирование Silverlight с помощью JavaScript
    • 140 Основы языка
      • 141 Комментарии
      • 141 Точка с запятой
      • 141 Чувствительность к регистру
      • 142 Переменные
      • 142 Функции
      • 142 Прототипы, this, new
      • 143 Типы
      • 143 Встроенные объекты и библиотеки
      • 144 Функция alert
      • 144 Значение undefined
      • 145 Значение null
      • 146 Обработка событий
    • 147 Знакомство с концепцией объектов
      • 147 Взаимодействие с другими экземплярами
    • 148 Глобальный объект
    • 149 Литеральная нотация JSON
      • 149 Создание объектов с помощью JSON
    • 150 Статические члены
    • 151 Загрузка сценариев на веб-страницу
    • 152 Что такое контекст?
    • 153 Интеграция Silverlight в существующую веб-страницу с помощью JavaScript
      • 154 Где найти файл Silverlight.js
      • 154 Использование файла Silverlight.js
      • 158 Определение версии Silverlight
      • 158 Определение наличия JavaScript
      • 159 Модификация веб-страницы во время выполнения
    • 159 Отладка
    • 159 Резюме
  • 161 Глава 9. Основы .NET
    • 161 История .NET
      • 161 Версии, версии, версии…
      • 163 Управляемый и неуправляемый код
    • 163 Загрузка и установка Visual Studio 2008
    • 164 Создание приложения Silverlight 2 в Visual Studio 2008
      • 165 Сборка и запуск приложения
      • 165 Ошибки компиляции
      • 166 Знакомство с файлами
      • 168 Запуск (пустого) приложения
    • 169 Intellisense
    • 170 Программирование на C#, основные конструкции
      • 171 Типы
      • 171 Целые типы
      • 171 Типы с плавающей точкой
      • 172 Прочие типы
      • 172 Преобразование типов
      • 173 Предложение if then else
      • 174 Цикл for
      • 175 Цикл foreach
      • 175 Цикл while
      • 176 Цикл do… while
      • 177 Предложение switch…case
      • 178 Операторы
    • 180 Резюме
  • 181 Глава 10. Продолжаем изучение .NET
    • 181 Программирование на C# с объектами
      • 181 Разбиение задачи на меньшие подзадачи
      • 182 Пространства имен и директива using
      • 182 Добавление директивы using
      • 183 Видимость
      • 183 Свойства
      • 185 Наследование
    • 186 Добавление интерактивности в приложение Thumbnails
      • 186 Добавление обработчиков событий
      • 187 Отображение увеличенного мультимедийного элемента
    • 190 Перегрузка методов
    • 191 Возбуждение событий и использование делегатов
      • 192 Создание объекта EventArgs
      • 192 Объявление события
      • 194 Подписка на событие
    • 194 Сохранение данных на стороне клиента
      • 194 Ограничения безопасности, налагаемые на изолированное хранилище
      • 195 Создание объектов
      • 198 Чтение из изолированного хранилища
      • 199 Запись в изолированное хранилище
      • 199 Обновление пользовательского интерфейса
      • 200 Совместимость с разными браузерами
    • 201 Резюме
  • 202 Глава 11. И снова анимация
    • 202 Анимирование элементов в Blend
      • 204 Тестирование приложения
      • 205 Изменение свойств анимации
      • 206 Изменение темпа анимации
    • 206 Синхронизация анимаций
      • 207 Об элементах анимации
    • 208 Обращение раскадровки
    • 208 Анимация PointAnimation
    • 210 Запуск и останов анимации
    • 211 Продолжаем работу над галереей миниатюр
      • 211 Составляем план
      • 212 Готовим подмостки
      • 213 Изготавливаем заготовку анимации
      • 214 Изменение темпа анимации параллельным переносом
      • 215 Запуск анимации из программы
      • 219 Программное создание анимации «затухания»
    • 221 Резюме
  • 222 Глава 12. Кодирование видео в Expression Encoder
    • 222 Прежде чем начать…
    • 222 Введение в Expression Encoder
    • 223 Параметры
    • 224 Назначение различных панелей
    • 224 Импорт видео
    • 226 Сохранение изменений
    • 226 Задание типа выходных данных
      • 227 Изменение размера и пропорций видео
      • 229 Дополнительная обработка и параметры кодека
      • 229 Добавление заголовка и хвостовика
    • 230 Тестирование перед началом кодирования
    • 231 Задание метаданных
      • 232 Добавление собственных метаданных
      • 232 Создание глав
      • 233 Создание надписей
    • 234 Кодирование видео для Silverlight
    • 235 Проверка результата
      • 236 Полноэкранное воспроизведение видео
    • 236 Дополнительные параметры
    • 237 Резюме
  • 238 Глава 13. Еще о видео
    • 238 Почему именно потоковое видео?
    • 239 Публикация на собственном сайте
      • 239 Копирование файлов
    • 240 Наложение изображения
      • 240 Добавление картинки или видео
      • 241 Задание дополнительных свойств
      • 242 Наложение XAML-разметки
    • 243 Выбор плеера пользователем
      • 243 Копирование файлов
      • 244 Модификация файлов
      • 246 Создание видео
      • 247 Как это работает?
    • 248 Публикация на потоковых серверах Microsoft Silverlight
      • 248 Регистрация
      • 249 Установка и конфигурирование надстройки, публикация
      • 249 Тестирование результата
    • 250 Включение приложения в существующую веб-страницу
      • 251 Использование iframe
      • 251 Использование JavaScript и Live Control
    • 251 Запуск команд сценария
    • 254 Модификация шаблона плеера в Blend
      • 254 Добавление кнопки Full Screen
      • 255 Обработка события в сценарии
      • 256 Тестирование результата
    • 256 Резюме
  • 257 Глава 14. Взаимодействие .NET и JavaScript
    • 257 Доступ к .NET из JavaScript
      • 257 Атрибут ScriptableMember
      • 258 Регистрация объекта
    • 258 Обработка событий .NET в JavaScript
      • 258 Подготовка класса, доступного из сценария
      • 260 Возбуждение события
      • 260 Подписка на событие в JavaScript-сценарии
      • 262 Тестирование программы
    • 262 Вызов JavaScript-методов из .NET
    • 264 Вызов методов .NET из JavaScript
    • 264 Добавление диалога регистрации в приложение Thumbnails
      • 264 Развитие класса User
      • 265 Дополнительные свойства
      • 268 Учет нескольких пользователей
      • 271 Модификация класса Page
      • 273 Добавление ссылки Login
      • 274 Добавление веб-проекта
      • 275 Проверка мультимедийных файлов во время сборки
      • 276 Добавление HTML-диалога регистрации
      • 277 Комбинирование приложения Silverlight с HTML
      • 277 Перехват событий .NET
      • 279 Связывание сценариев
      • 280 Обработка HTML-событий
    • 280 Резюме
  • 281 Глава 15. Элементы управления в Silverlight
    • 281 Знакомство с иерархией классов
      • 282 Класс Object
      • 282 Класс DependencyObject
      • 282 Класс DependencyProperty
      • 282 Класс UIElement
      • 283 Класс FrameworkElement
    • 283 XAML или застраничный код?
    • 285 Верстка с помощью панелей
      • 286 Композиция элементов
      • 286 Панель Canvas
      • 287 Буксировка элемента по холсту
      • 289 Рядное расположение элементов на панели StackPanel
      • 290 Использование StackPanel для потоковой верстки
      • 290 Использование панели Grid для выравнивания элементов
      • 292 Задание минимального и максимального размеров
      • 293 Добавление элементов в сетку
      • 294 Добавление элементов в застраничном коде
    • 294 Прокрутка и обрамление
      • 294 Использование ScrollViewer для прокрутки больших областей
      • 296 Обрамление элемента
    • 297 Всплывающие элементы
    • 298 Рисование форм
      • 298 Свойство Data
    • 300 Резюме
  • 301 Глава 16. Еще об элементах Silverlight
    • 301 Класс Control
      • 302 Активация и деактивация элементов управления
      • 302 Применение стилей и шаблонов
      • 302 О шрифтах
    • 303 Основные элементы управления
      • 303 Ввод и вывод текста
      • 304 Класс ButtonBase
      • 306 Прокрутка и буксировка
      • 309 Представление мультимедиа
    • 310 Выбор даты с помощью элементов Calendar и DatePicker
      • 310 Элемент Calendar
      • 311 Элемент DatePicker
      • 312 Обработка ошибок
    • 312 Рукописный ввод
    • 313 Разработка простого приложения для рисования
      • 313 Подготовка сцены
      • 315 Обработка событий
      • 319 Запуск приложения
    • 319 Представление данных с помощью элементов ItemsControl
      • 320 Элемент TabControl
    • 321 Подробное рассматривание изображений
      • 321 Как это работает?
      • 321 Создание пирамиды изображений для DeepZoom
      • 323 Элемент управления MultiScaleImage
    • 324 Резюме
  • 325 Глава 17. Ресурсы, стили и шаблоны
    • 325 Сохранение объектов в наборах
      • 326 Реализация интерфейсов
    • 327 Использование словарей ресурсов в Silverlight
      • 327 Хранение ресурсов
      • 328 Использование ресурсов в застраничном коде
      • 328 А зачем такие сложности?
      • 328 Использование ресурсов в XAML
      • 330 Хранение ресурсов в файле App.xaml
    • 331 Стилизация элемента управления
      • 331 Создание объекта Style
      • 331 Использование объекта Style
      • 332 Приоритеты установщиков свойств
      • 333 Создание стилей в Blend
      • 334 Редактирование стиля в Blend
    • 334 Стилизация приложения Thumbnails
      • 334 Стилизация текстовых блоков
      • 335 Стилизация миниатюр
      • 336 Перемещение ресурсов в Blend
    • 337 Внедрение шрифтов в приложение
      • 337 Внедрение шрифта в Blend
      • 338 Внедрение шрифта в Visual Studio
    • 339 Шаблоны
      • 339 Но ведь мы видим элемент управления!
      • 340 Редактирование шаблона
      • 341 Модификация состояний
      • 342 Привязка шаблона к элементу управления
      • 343 Представление содержимого
    • 344 Резюме
  • 345 Глава 18. Привязка к данным и элементы, допускающие связывание
    • 345 Что такое привязка к данным?
      • 345 Создание объекта данных
      • 347 Создание объекта данных в ресурсах
      • 347 Запись в объект данных с помощью механизма привязки
      • 348 Получение уведомлений, поиск ошибок связывания
      • 349 Конвертация значений при связывании
    • 350 Более тесное знакомство с классом Binding
    • 351 Задание контекста данных
    • 352 Использование элементов управления, допускающих связывание
      • 353 Элемент управления ListBox
      • 360 Элемент DataGrid
    • 366 Использование источников XML-данных
    • 366 Резюме
  • 367 Глава 19. Создание пользовательских и нестандартных элементов управления
    • 367 Создание элемента управления для просмотра миниатюр
      • 368 Создание объектов данных
      • 371 Элемент ThumbnailsViewerControl
      • 372 Общение с внешним миром
    • 375 Создание объектов и проектирование шаблона данных
      • 375 Создание экземпляра класса Media в виде XAML
      • 378 Проектирование шаблона данных
      • 379 Удаление тестового источника данных
      • 379 Перемещение мультимедийных файлов
      • 381 Подключение ThumbnailsViewer к реальным данным
      • 381 Возбуждение и обработка события SelectionChanged
    • 383 Создание нестандартного элемента управления MediaInfoDisplay
      • 383 Вырабатываем план
      • 384 Создание «оболочки»
      • 387 Обработка состояний
      • 388 Обработка частей
      • 390 Применение шаблона
    • 391 Резюме
  • 392 Глава 20. Еще один шаг вглубь Silverlight 2
    • 392 Создание шаблона по умолчанию для элемента управления MediaInfoDisplay
    • 394 Использование элемента управления MediaInfoDisplay
      • 394 Добавление тестовых данных
      • 394 Помещение элемента управления на сцену
      • 395 Создание шаблона
      • 396 Создание переходов
      • 397 Удаление тестовых данных
      • 397 Связывание элементов между собой
      • 398 Копнем глубже
    • 399 Прокрутка объектов
    • 401 Создание нового шаблона для RepeatButton
      • 401 Создание шаблона
      • 402 Изменение переходов
      • 403 Привязка шаблона
      • 403 Тестирование новой кнопки
      • 403 Стилизация кнопки RepeatButton
      • 404 Стилизация второй кнопки
    • 405 Перенос классов во внешнюю сборку и рефакторинг
      • 405 Создание библиотеки классов Silverlight
      • 408 Использование внешней библиотеки классов
    • 410 Несколько слов об объекте Application
    • 411 Универсальные типы
    • 412 Резюме
  • 413 Глава 21. Дальше по пути Silverlight 2
    • 413 Регистрация нескольких обработчиков событий в JavaScript
    • 414 Поиск элементов Silverlight из JavaScript-кода
    • 416 Доступ к HTML-странице из .NET
    • 418 Обмен данными между .NET и JavaScript
      • 418 Попытка преобразования
      • 420 Обмен данными в стандартных форматах
      • 421 Преобразование в тип ScriptObject
    • 424 Передача параметров инициализации
      • 424 Задание параметров инициализации
      • 425 Получение параметров инициализации
    • 426 Присоединение .NET-обработчиков к событиям HTML-элементов
      • 427 Использование класса HtmlEventArgs
    • 428 Публикация непосредственно из Visual Studio
    • 429 Отладка приложения Silverlight
      • 429 Сравнение отладочной и выпускной версий
      • 429 Создание выпускной версии
      • 430 Пошаговое выполнение программы
      • 432 Инспекция и модификация переменных
      • 433 Отладка в контексте проекта веб-сайта
      • 434 Отладка JavaScript
      • 434 Отладка уже запущенных приложений
      • 435 Отладка приложений Silverlight на компьютере Macintosh
    • 436 Резюме
  • 437 Глава 22. Соединение с веб
    • 437 Создание и загрузка XML-файла
      • 437 Вынесение информации о мультимедийных файлах из приложения
      • 438 Отображение и сокрытие заставки
      • 439 Загрузка XML-файла с информацией о мультимедийных файлах
      • 440 Отправка запроса
      • 441 Получение ответа
      • 442 Чтение XML-файла с помощью технологии LINQ
      • 445 Разбор перечислений
      • 445 Отправка запроса
      • 446 Обработка результатов
      • 448 Тестирование приложения
    • 448 Загрузка zip-файла и индикация хода загрузки
      • 448 Создание zip-файла
      • 449 Расширение класса MediaEx для хранения потока
      • 449 Загрузка zip-файла
      • 451 Чтение файлов из архива
      • 453 Обновление пользовательского интерфейса
    • 455 Отправка запросов WCF-службам
      • 455 Перемещение классов User и DataFile на сервер
      • 456 Адаптация класса DataFile к работе на сервере
      • 457 Создание WCF-службы
      • 458 Реализация службы
      • 460 Модификация клиентского приложения
    • 463 Еще о сетевых взаимодействиях
    • 463 Резюме
  • 464 Глава 23. Междоменные запросы и обработка исключений
    • 464 Междоменные запросы
      • 465 Использование файла междоменной политики Flash
      • 465 Использование файла междоменной политики Silverlight
      • 466 Ограничения
    • 468 Взаимодействие со сторонними службами
      • 468 Принятие условий обслуживания Flickr
      • 468 Получение ключа для работы с Flickr API
      • 469 Подготовка и отправка запроса
      • 472 Обработка ответа
      • 478 Модификация пользовательского интерфейса
    • 479 Отправка POST-запросов
    • 480 Возбуждение и перехват исключений
      • 481 Распространение исключений
      • 483 Свойства класса Exception
      • 484 Перехват необработанных исключений
      • 485 Создание собственных типов исключений
      • 486 Обработка ошибок Silverlight в JavaScript
    • 487 Резюме
  • 488 Глава 24. Silverlight: путешествие продолжается
    • 488 Обновление ссылки на службу
    • 489 Принудительное завершение процесса
      • 490 Принудительное завершение процесса в отладочном режиме
    • 491 О защите своей интеллектуальной собственности
      • 491 Защитить любой ценой
    • 491 Привязка в особых ситуациях
      • 492 Задание привязки в Blend
      • 493 Обработка ошибок контроля
      • 494 Привязка и свойства Converter, ConverterParameter, ConverterCulture
      • 495 Привязка к объекту, а не к свойству
    • 496 Использование ASP.NET-элементов управления Silverlight и MediaPlayer
      • 497 ASP.NET-элемент Silverlight
      • 498 ASP.NET-элемент MediaPlayer
    • 500 Создание автономных тестов для Silverlight
      • 501 Установка каркаса автономного тестирования для Silverlight
      • 501 Создание нового тестового приложения Silverlight
      • 503 Создание метода расширения TryFindResource
      • 504 Написание правильного класса
      • 505 Реализация рекурсии
      • 507 Еще об автономных тестах
      • 507 Повторное использование автономных тестов Майкрософт
    • 508 Изготовление и покупка XAML-ресурсов
      • 508 Использование Expression Design
      • 509 Поиск XAML-ресурсов в Сети
      • 510 Конвертация других форматов в XAML
    • 511 Сторонние элементы управления и библиотеки
    • 511 Блоги, посвященные Silverlight
    • 512 Резюме
  • 513 Алфавитный указатель

Инструкция как скачать книгу Лоран Буньон: Создание web-приложений в Silverlight в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.
Создание web-приложений в Silverlight
Рейтинг книги:
0 голосов
2085

Поиск книг:




При поиске учитываются только слова, длина которых больше 3-х символов.

Статистика: