Welcome to MSDN Blogs Sign in | Join | Help

SDL - теперь для облака и быстрой разработки

sdl-shield-thumb-120

При всё возрастающем количестве бизнес-клиентов, выбирающих для вычислителной среды клиента, облако или оба одновременно, руководство по безопасности должно быть динамичным. Поскольку безопасность и приватность являются ключевыми проблемами, влияющими на выбор вычислительной среды, производители имеют возможность убедить клиента в том, что веб-приложения, работающие в облаке, могут функционировать в безопасно и надежно.

Microsoft предпринял ряд шагов для того, чтобы сделать доступными лучшие наработки в области безопасности широкому кругу разработчиков. Сюда вошли руководство, модель оптимизации SDL, а также Средство моделирования угроз. Всё перечисленное выше, плюс последующие выпуски SDL, инструментов, руководств и технологий позволит разработчикам программного обеспечения и партнерам-производителям обеспечить требуемый уровень безопасности в их приложениях, а также своим пользователям более надежную вычислительную среду.

Недавно на конференции в Берлине, Германия, Microsoft анонсировал два новых документа SDL

Рассмотрение вопросов безопасности для клиентских и облачных приложений (EN). Загрузите доклад команды SDL, в котором обсуждаются вопросы, касающиеся клиентских и облачных приложений, а также шаги, предпринимаемые компанией Microsoft для развития SDL при решении вопросов безопасности.

SDL 4.1a, расширенная версия, включающая процесс быстрой разработки (EN). Загрузите последнее руководство по SDL, включающее главу SDL для быстрой разработки, четкий подход, объединяющий быстрые методы и безопасность. Полное и, кроме того, гибкое руководство SDL для быстрой разработки включает в себя все требования SDL, предоставляя дополнительно руководство по их применению для очень коротких реализ циклов.

Давайте коротко остановимся на каждом из них.

Рассмотрение вопросов безопасности для клиентских и облачных приложений

В то время как производители вычислительной техники обсуждают облако как вычислительную среду, клиенты обеспокоены тем, каким образом будет обеспечена безопасность информации. По итогам проведенного в сентябре 2009 года онлайн опроса IT Pro’s около 51% опрошенных поставили безопасность и сохранность информации в качестве основной преграды для принятии решения об использовании облака.

При рассмотрение вопросов безопасности для клиентских и облачных приложений (EN) Microsoft рассматривает безопасность с точки зрения организации, которая может рассматировать размещение своих приложений в облаке.

security-cloud-stack

Если вы собираетесь хранить ваше приложение в облаке, на высоком уровне, вы должны задаваться вопросами, касающимися двух основных вопросов безопасности:

· Требования и соответствия безопасности. Если у вас имеются требования, что должен сделать провайдер для того, чтобы обеспечить требуемый уровень безопасности вашего ПО при хранении в облаке? Что он сделал для обеспечения этих требований?

· Возможности и уровень безопасности сервисов. Разные провайдеры могут предлагать различные возможности безопасности (например, поддерживающие конкретные типы идентификации), а также различные уровни сервис безопасности в своих SLA. Ознакомьтесь с деталями с тем, чтобы точно знать, какие конкретно услуги, они предоставят вам с точки перспектив безопасности.

Несомненно, разработка программного обеспечение для облака так и для клиентской части нуждается в структурированном процессе разработки с точки зрения безопасности, таком как SDL. Поэтому, убедитесь, что для своих приложений вы используете такой структурированный процесс разработки безопасности, как SDL.

SDL для быстрой разработки

Вы не одиноки, если пользуетесь процессом быстрой разработки. Методы быстрой разработки всё чаще и чаще выбираются производителями по всему миру. Согласно независимому докладу Forrester, 85% профессионалов в области промышленных технологий либо только что выбрали, либо в процессе принятия решения или уже применяют методы быстрой разработки.

Внимание: Если вы ещё не знакомы с быстрой разработкой и хотели бы узнать больше, вы можете прочитать о ней на http://www.agilemanifesto.org. Wikipedia определяет её как:

Быстрая разработка программного обеспечения относится к группе методологий разработки программного обеспечения, основанных на итеративной разработке, где требования и решения раскручиваются через сотрудничество между самоорганизующимися крос-функциональными командами. Термин был установлен в 2001 году при составлении Agile Manifesto.

Также примечательно, ранние методы Быстрой Разработки включают: Scrum (1995), Crystal Clear, Extreme Programming (1996), Adaptive Software Development, Feature Driven Development, и Dynamic Systems Development Method (DSDM) (1995). После опубликования в 2001 году Agile Manifesto они стали относиться к Быстрым Методологиям.

В своем блоге по SDL Брайен Салливан даёт прекрасное описание подхода команды к задаче применения SDL требований и процессов, преобразовывая руководство в пригодную для быстрой разработки структуру, которая может быть гибко применена как к длительным, так и коротким проектам быстрой разработки. Вот короткий обзор его поста.

При взгляде на жизненный цикл разработки безопасности SDL и описании его по фазам, вы видите, что изначально он был разработан для интеграции в процесс спиральной разработки продукта, использованного Microsoft для разработки Windows и других бизнес продуктов. Хотя между спиральными методами и методами быстрой разработки существует много различий, основными для меня являются:

· Методы быстрой разработки не имеют четких фаз

· Релизы быстрой разработки обычно намного короче, в некоторых случаях только на одну или две недели

sdl-agile-transparent

Ввиду данных различий, SDL для быстрой разработки делит SDL (по требованиям) на три категории: требование для каждого быстрого шага, требования настолько важны, что они должны быть завершены при каждом повторении; единовременные требования, требования, которые должны быть завершены один раз за время всего проекта независимо от длительности проекта; и bucket требования, требования, которые необходимо регулярно завершать, но они не настолько важны, чтобы делать это при каждом повторении.

Моделирование угрозы является прекрасным примером: команда может в течение всей недели создавать модель угрозы, но это необязательно будет наиболее рациональным использованием своего времени. SDL для быстрой разработки дает представление о том, каким образом команда может потратить соответствующий отрезок времени, моделирую новые возможности, а также каким образом построить базовую модель под существующую функциональность.

Для получения полного руководства по SDL для быстрой разработки загрузите SDL 4.1a, расширенная версия, включающая процесс Быстрой Разработки (EN) и прочтите новые разделы, касающиеся быстрой разработки.

Заключительные замечания

По мере развития производства вычислительной техники, Microsoft продолжает инвестировать в основы безопасности и приватности, предлагая разработке, лучшие документы и технологии, как для клиентских, так и для облачных приложений. Выпуск SDL для быстрой разработки, а также доклада по безопасности для приложений в облаке подтверждают тот факт, что Microsoft делает всё возможное для того, чтобы идти в ногу со временем, и в конечном итоге сможет создать ещё более надёжную онлайн безопасность.

Posted by Ilya Vorobiev | 0 Comments
Filed under: , , ,

MD5 на Silverlight

Сегодня функции хеширования применяются во многих приложениях, использующих различные технологии, давай те попробуем сделать это и на Silverlight’е. В этом деле нам поможет небольшой кусок кода написанный Рэйдом Борсуком(CLR Team).

Напишем маленький обработчик, который будет возвращать хеш при нажатии на кнопку.

   1: private void bt_Click(object sender, RoutedEventArgs e)
   2:         {
   3:             textBlock.Text = MD5Core.GetHashString(box.Text);
   4:         }

Как мы видим, сделать наше приложение чуть более безопасным не так то и сложно. Пример иллюстрирующий возможность создания md5 хешей на Silverlight можно скачать тут.

sl_hash

Posted by Ilya Vorobiev | 0 Comments
Filed under: , ,

Опубликована книга C# для школьников

Всего 11 месяцев, 7 редакторских правок, включая правки 3х научных редакторов, вовлечение 3х партнеров, одновременной работы 2х детских иллюстраторов и большой помощи коллег понадобилось, чтобы издать нашу первую книгу для детей, учебное пособие “C# для школьников”:

clip_image001[2]

Книга все еще местами содержит опечатки и возможно другие недоработки, но это отличное качественное детское издание, которое поможет любому ребенку в легкой и доступной форме приступить к постижению лучшей профессии программиста. Мы делали данное пособие для детей и поэтому приложили огромное количество усилий и ресурсов, чтобы сделать все наилучшим образом.

Мы постарались также сделать все возможное, чтобы издатели ИНТУИТ и БИНОМ обеспечили максимально доступную стоимость пособия.

Отдельно хочу поблагодарить добровольцев от сообщества:

Светлану Шиблеву

Максима Бовыкина

Руслана Шакирова

Никиту Спирина

Александра Климова

Дмитрия Казарина

Posted by Ilya Vorobiev | 0 Comments
Filed under: , ,

Книги по Windows 7 и Windows Server 2008 R2

 

Добрый вечер, коллеги! 

Мне кажется, эти книги могут быть для вас полезными:

Руководство по развертыванию Windows® 7

Ищите конкретные руководства по развертыванию Windows 7? Выясните, что ведущие эксперты в данной отрасли рекомендуют при развертывании платформы, планировании и тестировании приложений на совместимость.

Введение в Windows Server 2008 R2

Эта книга поможет вам быстро познакомиться с Windows Server R2, с его новыми функциями и возможностями работы, включая виртуализацию, управление, IIS и многие другие новые возможности. Я думаю, это хорошая возможность узнать столько нового всего за один клик, так что не пропустите.

Новая атака на AES-256

Новый тип атаки на AES-256 значительно улучшен! Это не означает, что AES-256 сломленн, но удивительно то, что AES-128 не восприимчив к данной атаке. Не паникуйте, если вы используете AES-256 и прочитайте комментарий Брюса Шнайера внимательно! Обратите внимание, что данная атака идет на 10 раундовый AES-256, в то время как стандартная реализация использует 14 раундов!   

Интересно заметить, что сила AES-256 подорвана новыми нападениями, в то время как AES-128 не страдает от них никак. Это еще один пример, который показывает, что увеличение размера ключа не всегда повышает стойкость!
Posted by Ilya Vorobiev | 0 Comments
Filed under:

Управляемый wrapper для Gesture API

Ron и Alex записали веб-каст, в котором они рассказывают про Gesture API в Windows Mobile 6.5 и управляемый wrapper, который они создали. В первой части они рассказывают про класс GestureRecognizer. Данный веб-каст вы можете посмотреть здесь.

Во второй части они рассказывают про физический движок и функциональность WAG, которые входят в Gesture API. Вторую часть можно посмотреть здесь.  

 

Код упраляемого wrapper’а можно скачать тут.

Определение разрешения экрана на WM устройствах

Оригинал: http://blogs.msdn.com/priozersk/archive/2009/03/31/dimming-the-background.aspx  

Когда вы разрабатываете управляемые приложения для Windows Mobile, обращайте внимание на разрешение экрана вашего мобильного устройства, вам требуется проверять оба разрешения, как VGA (480x640) так и более старые QVGA (240x320). Если в свойстве AutoScaleMode вашей формы установленно значение Dpi, ваши контролы такие как TextBox’ы, Label’ы, кнопки и т.д. будут масштабированны автоматически. Тем не менее, если вы самостоятельно отрисовываете образы или утилизируете ImageList’ы, они не будут масштабированны автоматически. Вовремя выполнения программы вы можете достаточно просто определить разрешение экрана вашего телефона, использую следуший код:

  public static bool IsHighResolution(this Form form)

  {

       SizeF currentScreen = form.CurrentAutoScaleDimensions;

       if (currentScreen.Height == 192)

       {

            return true;

       }

       return false;

  }

Данный метод является расширением, который является частью класса ControlExtension из проекта ListViewDemo, который можно загрузить по следущей ссылке.

Если вы хотите использовать данный метод, это можно сделать следующим образом:

  private void HandleHiRes()

  {

       if (this.IsHighResolution())

       {

             this.imageList1.ImageSize = new Size(32 * 2, 32 * 2);

       }

  }

Используйте... J

Posted by Ilya Vorobiev | 0 Comments
Filed under:

Совместимость приложений: установка и настройка пакета совместимости ACT

Я бы хотел создать серию небольших обучающих роликов, которые помогут вам решить проблему совместимости приложений. В первом ролике я покажу, как можно установить и настроить пакет совместимости ACT (Application Compatibility Toolkit).

Posted by Ilya Vorobiev | 0 Comments
Filed under: ,

Windows 7: Разработка энерго-эффективных приложений

52_med_Battery Life Indicator

Никому из нас не нравится, когда не вовремя садится аккумулятор мобильного телефона или компьютера. Ни для кого не секрет, что новая версия Windows 7, которая недавно стала доступна для скачивания MSDN подписчикам, позволяет создавать энергоэффективные приложения. Статья позволит узнать Windows разработчикам новые полезные методы, техники и средства, которые помогут увеличить время работы мобильных устройств.

Энергопотребление

low_battery_tshirt-p235815927273481359trlf_400

Давайте для начала посмотрим на тенденцию развития современных вычислительных процессоров. Исследователи лаборатории Microsoft Research проанализировали множество параметров современных процессоров (количество транзисторов, мощность, производительность и т.д.). Особое внимание обращалось на потребляемую мощность процессоров. Ниже представлен обзор процессоров Intel за последние 20 лет.

cpu

Как мы видим, согласно исследованиям Microsoft Research, количество потребляемой энергии процессорами стремительно растет. Процессор Intel 80386SX почти не потребляет энергии, но и не обладает высокой производительностью. Если мы посмотрим на топ процессоры последних лет, обладающие высокой производительностью, Core 2 Extreme QX6700 и другие, то становится очевидным, какое большое количество энергии потребляют эти процессоры (около 100Вт). Данная тенденция наблюдается не только у современных процессоров, но и у многих других комплектующих современных компьютеров (GPU, Ethernet и т.д.), что становится серьезной проблемой.

Если изучить проблему глубже, причиной высокого потребления энергии являются не только комплектующие (Процессор, GPU, Ethernet) и операционная система, но и дополнительное программное обеспечения. Команда разработчиков Windows 7 сравнила продолжительность работы компьютера от батареи при чистой установке и с предустановкой программного обеспечения OEM производителей.

cpu2

Налицо большой разброс значений, но в большинстве случаев чистая установка позволяет компьютеру работать от батареи дольше. Отсюда мы можем сделать вывод – разрабатываемые нами приложения оказывают сильное влияние на энергопотребление нашего устройства. Энергоэффективное приложение позволит увеличить время работы мобильного устройства, например, ноутбука, и сократить расходы на электроэнергию в случаи серверной станции.

Разработки в области энергоэффективных решений

Энергопотребление стремительно растет, что вызывает активные разработки в данном направлении. Одна из них концепция “Батарея на весь день”, которая позволит использовать мобильные устройства 6,9 и более часов. Таким образом, мы сегодня говорим о тех возможностях, которые мы можем использовать для увеличения времени работы нашего мобильного устройства от батареи. Многие OEM производители ведут разработки в области энергоэффективных устройств. Мы можем наблюдать тенденции по оптимизации решений не только для мобильных устройств, но и для десктоп, и серверных станций. Компании хотят сократить энергопотребление их офисов и дата центров. Сегодня я хотел поговорить о методах разработки именно таких энергоэффективных приложений и о средствах диагностики решений, которые помогут сделать эти приложения лучше.

Схема разработки энергоэффективного приложения

1) Осознать причины высокого энергопотребления

2) Понизить использование ресурсов

3) Обратить внимание на простой

4) Адаптировать программное обеспечение под системное окружение

5) Использовать правильные средства и технологии

6) Обратить внимание в приложении на изменение состояний ОС (рестарт, завершение работы, сон и т.д.)

7) Проверить с помощью средств диагностики

8) Повторить все заново (вернуться к шагу 2)

Обратим внимание на простой

cpu3

Когда мы говорим о продолжительности работы мобильного устройства от батарейки, важно обратить внимание на тип работы. 2 часа просмотра DVD? 2 часа офисной работы или 2 часа простоя? В каждом из случаев устройство расходует разное количество энергии. Но важно то, что все они связаны с простоем. В режиме простоя процессор расходует малое количество энергии. Поэтому главной задачей является, наибольшее сокращение расхода энергии на базовом слое ”Простое”.

cpu4

Сократить потребление энергии можно, выполняя какие-то операции менее часто или отрисовывая меньшее количество графики. Хорошим примером является цветовая схема в Windows Vista. При переходе в режим “Power saver”, Windows меняет цветовую схему на более простую (не прозрачную), позволяю компьютеру работать чуть дольше. Другим примером является то, как команда оптимизировала проигрывание DVD в Windows 7. Скорость проигрывания была уменьшена с 60fps до 30fps. Для пользователя данное изменение не заметно, но, представьте, насколько меньше потребляет теперь наша система.

Другой метод уменьшения потребления энергии – оптимизация кода, которая позволяет на каждом этапе добавить лишнее время работы от аккумулятора. Все эти техники являются инструментом сокращения количества потребляемой энергии в режиме работы процессора.

power_consum1

Еще одним трюком уменьшения потребления энергии является метод, при котором мы пытаемся выполнить нашу работу, как можно быстрее, тем самым, попадая в состояния простоя на максимально возможное количество времени. Т.е. мы пытаемся находиться в состоянии простоя, как можно чаще и как можно дольше. Порой выгоднее подняться на более высокий уровень потребления энергии, выполнить задачу, как можно быстрее и вернуться в состояние простоя. Хорошим примером является менеджер управления питанием процессора в Windows, который сильно пульсирующий.

Техники оптимизации

power_consum2

Если мы посмотрим на современные мобильные процессоры, то увидим, что они обладают большим динамическим диапазоном потребляемой мощности. Они практически ничего не потребляют в режиме простой, с другой стороны они съедают большое количество энергии при предельной производительности. Поэтому очень важно сфокусироваться на простое!

Использование процессора

Исключите в своих программах опросы, используйте события! В Vista и более новых версиях ОС существует специальный API (RegisterPowerSettingNotification), построенный на событиях, которые позволяют отслеживать состояние питания вашего устройства (См. код ниже). В примере я использую Windows API Code Pack for .Net Framework. Пример работающего приложения можно закачать по ссылке в конце поста.

public partial class Window1 : Window

{

public Window1()

{

InitializeComponent();

PowerManager.PowerSourceChanged += new EventHandler(PowerManager_PowerSourceChanged);

}

private void PowerManager_PowerSourceChanged(object sender, EventArgs e)

{

lab1.Content = PowerManager.PowerSource;

}

}

В случае если опрос в вашей программе всё-таки необходим, постарайтесь делать его, как можно реже. Я рекомендую вам воспользоваться новым Объединяющим программным интерфейсом (Сoalescing API), который позволяет увеличить интервалы простоя.

Когда команда разрабатывала Windows 7, она обратила внимание на то, что многие системные процессы имеют периодический характер. Хорошим примером является Диспетчер питания процессора, который изменяет напряжение на процессоре, тем самым, регулируя вычислительную мощность. Он изменяет напряжение процессора на основании данных о предыдущем состояние, и для этого он использует периодический опрос.

Еще раз повторюсь, современные процессоры потребляют невероятно малое количество энергии в режиме простоя. И нашей главное задачей является – сделать так, чтобы процессор находился в этом состоянии, как можно дольше. Хочу обратить ваше внимание на то, что на смену режима процессор расходует дополнительную энергию. Поэтому не исключен вариант, когда вы потратите больше энергии на переключения, чем сохраните в режиме простоя. В связи с этим нам требуется находиться в режиме простоя, как можно дольше.

Windows timer coalescing API

Идея Сoalescing API в объединении повторяющихся активностей. На графике снизу представлен пример активностей в системе (нереальные данные). Как мы видим, на графике Windows управляется периодическим таймером, который выполняется раз в 15.6 мс +. У нас в системе происходят периодически события по таймеру, этих событий много, и они разбросаны случайным образом по временной оси. Новый API позволяет их группировать, обеспечивая состояние простоя максимально продолжительный период времени.

clip_image018

Вы можете применить данную возможность в приложениях и сервисах, используя функцию пользовательского уровня SetWaitableTimerEx. Тем не менее, я рекомендую использовать события. Если же вы не можете отказаться от периодических таймеров, “Windows timer coalescing API”поможет вам сделать это наиболее эффективно.

Прототип функции SetWaitableTimerEx:

BOOL

WINAPI

SetWaitableTimerEx(

__in HANDLE hTimer,

__in const LARGE_INTEGER *lpDueTime,

__in LONG lPeriod,

__in_opt PTIMERAPCROUTINE pfnCompletionRoutine,

__in_opt LPVOID lpArgToCompletionRoutine,

__in_opt PREASON_CONTEXT WakeContext,

__in ULONG TolerableDelay

);

Функция SetWaitableTimerEx очень похожа на функцию SetWaitableTimer, которая используется для определения периода, за который таймер должен истекать. Во многих ситуациях можно просто заменить функцию SetWaitableTimer на SetWaitableTimerEx. У SetWaitableTimerEx появились два новых параметра: WakeContext и TolerableDelay. Параметр WakeContext нужно использовать только, если вы хотите установить таймер, который может вывести систему из состояния сна. Параметр TolerableDelay определяет допустимое отклонение от заданного временного интервала в мс.

Вы должны использовать значение не меньшее чем 32 мс (2 интервала прерывания platform timer’а) для параметра TolerableDelay. Оптимально, когда значение допустимого отклонения увеличивается вместе со значением интервала. Например, если период между прерываниями равен 1ой секунде, то подходящее значение отклонения будет равно 50 мс. Тем не менее, если длина периода равна 30 секундам, значение отклонения должно быть не менее 1,000 мс.

Таблица требований функции SetWaitableTimerEx.

SetWaitableTimerEx требования

 

Header

Winbase.h

Library

Kernel32.lib

DLL

Kernel32.dll

Поддерживаемые ОС

Windows 7 или Windows Server 2008 R2 или более новые

Практика использования

Вы должны использовать “Windows Timer Coalescing API” для оптимизации энергопотребления ваших приложений и драйверов устройств. Тем не менее, группирование активностей не может заменить разумного использования ресурсов. В первую очередь нужно постараться ограничить периодическую активность в приложении и постараться использовать модель событий.

Когда вы используете “Windows Timer Coalescing API”, обратите внимание:

· Период между прерываниями не гарантирован. Однако он всегда выполняется с учетом погрешности (TolerableDelay).

· Используйте значение параметра TolerableDelay не менее 32 мс, что соответствует двум прерываниям platform таймера, которое происходит каждые 15.6 мс.

· Используйте в качестве значения параметра TolerableDelay значение кратное 50, например 50,100, 250, 500 мс и т.д.

[DllImport("kernel32.dll")]

static extern bool SetWaitableTimerEx(IntPtr hTimer, [In] ref long ft, int lPeriod, TimerCompleteDelegate pfnCompletionRoutine, IntPtr pArgToCompletionRoutine, bool fResume, REASON_CONTEXT wakeContext, ulong tolerableDelay);

Пример, использующий данную технологию, можно скачать в конце поста.

Жесткий диск

powerconsum_hddPNG

Современные жесткие диски потребляют около 8% энергии от общего потребление, и поэтому очень важно обратить внимание на все дисковые активности в вашей системе. Как мы видим на графике, наиболее ресурсоемкими являются операции чтения и записи, для достижения которых диску нужно раскрутиться и потратить много энергии. Используйте жесткий диск только тогда, когда это действительно требуется, постарайтесь исключить все периодические дисковые активности.

Изменение состояния

В Windows 7 команда разработчиков сделал новый API, который позволяет им не только сохранять состояние компьютера (пример Media Center, который позволяет часами проигрывать видео, не уходя в sleep; для этого он постоянно сообщает системе, что ему требуется находиться в рабочем состоянии), но и сообщать, какое приложение, и почему сохраняет или изменяет текущее состояние.

/// Создаем контекст

var powerRequestContext = new POWER_REQUEST_CONTEXT();

powerRequestContext.Version = POWER_REQUEST_CONTEXT_VERSION;

powerRequestContext.Flags = POWER_REQUEST_CONTEXT_SIMPLE_STRING;

powerRequestContext.SimpleReasonString = "App is doing job";

/// Создаем запрос

IntPtr powerRequest = PowerCreateRequest(ref powerRequestContext);

/// Устанавливаем запрос

PowerSetRequest(powerRequest, PowerRequestType.PowerRequestSystemRequired);

/// Выполняем работу

Console.WriteLine("Press any key");

Console.ReadLine();

/// Очищаем запрос

PowerClearRequest(powerRequest, PowerRequestType.PowerRequestSystemRequired);

Средства диагностики

Команда разработчиков Windows 7 включила в новую версию ОС новые средства для диагностики ваших приложение. Одна из таких утилитов PowerCFG, которую можно вызвать из консоли и получить небольшой отчет о текущем состоянии энергопотребления.

energy_report

Давай теперь посмотрим полученный HTML.

energy_report2

Данный документ обеспечивает быстрое получение информации и рекомендации к оптимизации о процессах в системе.

Для более подробного анализа стоит воспользоваться пакетом Windows Performance Tools Kit (XPerf), который позволяет получить полный спектр данных по всем параметрам и процессам.

energy_report3

Резюме

Современное программное обеспечение оказывает огромное влияние на потребляемую электроэнергию. Находясь как можно чаще и дольше в простое, мы можем сохранить значительное количество энергии. Надеюсь, данная короткая статья поможет вам лучше понять техники и методы оптимизации вашего приложения с точки зрения энергопотребления.

Скачать примеры

Posted by Ilya Vorobiev | 0 Comments
Filed under: ,

Центр для начинающих разработчиков от Русского MSDN

clip_image002

Рад представить вашему вниманию центр для начинающих разработчиков от Русского MSDN. На новом сайте начинающие найдут много полезной информации о языках программирования C#, Visual Basic и многое другое.

Центр для начинающих разработчиков от Русского MSDN

Posted by Ilya Vorobiev | 0 Comments

Выбирая между WPF и Silverlight- часть 2 из 3

wpf_logo_2-300x49 SilverlightLogo2

Как вы могли заметить, в прошлой статье, я ни слова не сказал про новые возможности Silverlight 3, и это было сделано специально. Я хотел показать вам, насколько важно понимание текущего положения дел, технологий. Сегодня я хотел бы вам рассказать немного о новых возможностях Silverlight 3, об архитектурных моделях в ваших решениях и проблемах общего плана.

timsl3mock

Что же такое Silverlight 3? Это - прежде всего, новые возможности и традиционная компактность. В данной статье я не буду освещать все новые возможности, о них можно прочитать в этом документе, я остановлюсь на наиболее интересных. Не буду вас искушать и тратить время зря, перейду сразу к самому интересному, к новым возможностям.

Что же нового в Silverlight 3?

Полная поддержка Visual Studio и Expression Blend’ом, множество новых возможностей. Silverlight 3 включает в себя: значительные изменения средств для работы с медиа; режим работы вне браузера; существенно улучшенную модель для работы с 3D графикой; поддержку GPU ускорения; формат видеоH.264 и многие другие возможности, которые позволят сделать разработку ваших RIA приложений более продуктивной. Также, для полной интеграции с разработчискими средствами .NET Framework’а, Visual Studio 2010 будут поддерживать полноценный редактор-дизайнер для Silverlight.

Вне браузерный режим

Silverlight 3 теперь предоставляет возможность запускать приложения вне окна браузера. При этом данное приложение по-прежнему исполняется в песочнице браузера.

Capture

Подробнее узнать о данном сценарии можно здесь

Работа без сети

Также, Silverlight 3 позволяет вашему приложению работать при отсутствии сети. Для проверки наличия сети существуют специально предусмотренные средства. У вас есть возможность сохранить ваши данные в изолированном хранилище, а при возобновлении Интернета синхронизировать их сервером.

Мульти-страничные приложения

Для создания полноценных приложений Silverlight постепенно двигается от предоставления контролов и UX к простым framework’ам. А именно, в Silverlight 3 появился новый framework для работы с мульти-страничными приложениями.

nav_sl

Более полная информация здесь

.Net RIA Services

Microsoft .NETRIA Services упрощает разработку клиент-серверных приложений, соединяя вместе платформы ASP.NET и Silverlight. RIA Services предоставляет шаблоны для написания бизнес логики, которые выполняются на среднем уровне и управляют данными и различными операциями.

Подробную информацию можно получить здесь

Разговоры об архитектуре

Logical_architecture

Основные сценарии и решения

Выбор вашего типа приложения напрямую зависит от используемого сценария.

Толстый клиент подходит для сценариев, где большая часть вычислений выполняется за счет ресурсов клиента и не требует постоянного подключения к сети.

Богатые Интернет приложения (RIA) предоставляют широкий пакет средств для работы с медиа, используя веб распространение.

Модель толстого клиента

Толстый клиент – это высоко производительное интерактивное приложение с богатым пользовательским интерфейсом, которое работает в различных сценариях независимо от наличия Интернета.

rich

 

Уровень представления - отвечает за взаимодействие приложения с пользователем, он формирует, отрисовывает и проверяет введенные пользователям данные.

Уровень бизнес логики - включает бизнес потоки и логику, которые собственно и управляют приложением, также на этом уровне находятся бизнес сущности – элементы, которыми обмениваются компоненты логики.

Уровень данных - содержит модели и провайдеры, которые позволяют получать данные.

Рассматривайте модель толстого клиента, как модель вашего приложения, если:

• Приложение будет загружено на клиентский компьютер.

• Это интерактивное приложение.

• Богатый пользовательский функционал.

• Приложение тесно взаимодействует с ОС.

• Приложение использует много ресурсов клиента.

Модель богатых Интернет приложений (RIA)

Богатые Интернет приложения (RIA) выполняются в песочнице браузера. Преимущество RIA над традиционным вебом в том, что они предоставляют больше возможностей, интерактивность и более эффективное сетевое взаимодействие.

ria

Клиент, как я уже говорил, выполняется в песочнице браузера. Каждое приложение песочницы изолировано, хотя Silverlight 3 предоставляет новые средства для взаимодействия приложений. Существует изолированное хранилище для каждого приложения, которое позволяет сохранять информацию. Важно то, что хранилище изолировано, и доступ к реальной файловой системе пользователя отсутствует. Данный уровень взаимодействует с пользователем (формирует, отрисовывает и проверяет введенные данные).

Веб сервер

1. Уровень сервисов предоставляет интерфейсы клиентской части для взаимодействия с уровнем логики.

2. Уровень бизнес логики идентичен уровню логики толстого клиента.

3. Уровень данных идентичен уровню данных толстого клиента.

Рассматривайте модель богатых Интернет приложений, как модель вашего приложения, если:

• Приложение требует поддержки медиа высокого качества и 3D графики.

• Интерактивное приложение.

• Богатый пользовательский функционал.

• Ограниченное использование клиентских ресурсов.

• Требуется упрощенная модель развертывания.

Толстый клиент vs. RIA

Тип приложения

Преимущества

Проблемы

Толстый клиент

1. Может расходовать клиентские ресурсы

2. Интерактивность, богатый пользовательский функционал

3. Высокая способность к реагированию

4. Поддержка работы без сети

1. Требует установки (Click Once, Windows Installer, Copy)

2. Контроль версий

3. Зависимость от платформы

RIA

1. Тот же богатый пользовательский интерфейс, как и у толстого клиента

2. Поддержка 3Dи медиа высокого качества

3. Простой способ распространения

4. Простой механизм контроля версий

5. Кросс платформенность и кросс браузерность

1. Небольшой размер приложений

2. Ограничения по использованию клиентских ресурсов

3. Требует установленного Silverlight™ Runtime’а

Целевая аудитория

audience

Хочу обратить ваше внимание на необходимость понимания, для кого вы разрабатываете конкретное решение. Следует учитывать специфику рынка, на который вы хотите вывести ваш продукт. Вот некоторый список характеристик, который поможет вам классифицировать целевую аудиторию

1) Операционная система

2) Качество Интернета

3) Браузер

4) Наличие необходимых Runtime’ов (.Net & Silverlight)

5) Мощность компьютера

На основании собранных данных можно сделать предварительную модель вашего решения. Собранные данные сыграют ключевую роль, а рационально выбранная схема определит успешность вашего бизнеса. К примеру, планируемая аудитория использует в 70% случаях Windows, а в 30% MacOSX, в такой ситуации разумнее использовать Silverlight, который позволит вам охватить весь рынок. Другой пример, вы разрабатываете программу, которая должна снимать показания с датчиков и отправлять их на сервер; очевидно, что требуется использовать WPF, который позволяет в полной мере общаться с операционной системой.

Немного о бизнесе

business-school

 

Необходимо также помнить о стоимости оборудования, которое потребуется для создания вашей инфраструктуры. Перенося все вычисления на веб сервер, вам требуется наличие продуманной мощной среды. В некоторых случаях, это может стать причиной для применения другой технологии. Существуют также и гибридные архитектуры, где часть вычислений делает сервер, а часть клиент. При такой архитектуре, выполняя критические операции на стороне сервере, стоит не забивать про безопасность вашего решения.

Резюме

Данной статьей я не хотел показать, что Silverlight можно использовать только для RIA приложений, а WPF для толстых клиентов. Рассмотренные технологии, безусловно, прекрасно подходят для именно таких сценариев. Важно, в ваших приложениях рационально выбирать используемые технологии. Ключевым параметром Silverlight является его компактность. Это не значит, что вы не можете делать вычисления на стороне клиента. С другой стороны, Silverlight содержит меньше готовых компонентов, которые придется реализовывать самостоятельно, увеличивая размер приложения. Стоит задуматься над тем, что при слишком большом размере приложения, на его загрузку будет потрачено пользователем много времени, тем самым возникает опасность потери части клиентов. Таким образом, за счет использования WPF и Silverlight мы можем разгружать наш сервер, перенося вычисления на клиента.

В этих двух частях я постарался коротко рассказать о наиболее распространённых технологиях, созданных корпорацией Microsoft для построения клиентских решение. Также, в статье были затронуты архитектурные модели, которые помогут вам на стадии проектирования. Следует не забывать и про экономический аспект и целевую аудиторию. В заключительной части я бы хотел поговорить о техниках программирования Silverlight и WPF приложений, об их различиях и об общих методах.

Posted by Ilya Vorobiev | 0 Comments

Silverlight Navigation Framework для мульти-страничных приложений

 

Silverlight постепенно двигается от предоставления контролов и UX к простым framework’ам для создания полноценных приложений. Я имею виду, что в Silverlight 3 появился новый framework для работы с мульти-страничными приложениями. Silverlight 3 представляет новый тип приложений “Silverlight Navigation Application”.

SLNav101_5F4B0DE2[1]

Этот шаблон создает в VisualStudio пакет файлов, который позволяет использовать гибкий настраиваемый framework для мульти-страничных приложений. Измененный шаблон изображен на screenshot’е. Хочу обратить внимание на то, что ссылка в браузере и заголовок изменяются при навигации по страницам.

nav_sl

VisualStudio создает обыкновенный “MainPage.xaml/cs”, “App.xaml/cs” и дополнительную папку “Assets”,которая содержит“Styles.xaml”, а также папку с представлениями, содержащую 3 стандартных представления:

  • “Home.xaml”
  • “About.xaml”
  • “ErrorWindow.xaml”

 

nav_sl2

Каждый содержит код позади.

Вы можете заметить, что при переходе по ссылке, обновляется внутренний контент, а не вся страница.

Frame и мапинг ссылок

Если вдаваться в подробности, базовая структура хранится в файле “MainFrame.xaml”, который является экземпляром “System.Windows.Controls.Frame”; его можно найти в пространстве имен “System.Windows.Controls.Navigation”. Frame поддерживает навигацию между страницами и, конечно же, передачу данных между страницами.

Вы можете передавать параметры при навигации. Данный пример изображен на sceenshot’е ниже.

   1: <!-- snippet from the Silverlight Documentation -->
   2: <navigation:Frame.UriMapper>
   3:        <uriMapper:UriMapper>
   4:            <uriMapper:UriMapping 
   5:                Uri="/ProductDetail/{productid}" 
   6:                MappedUri="/Views/ProductDetail.xaml?ProductId={productid}"/>
   7:            <uriMapper:UriMapping 
   8:                Uri="/{pageName}" 
   9:                MappedUri="/Views/{pageName}.xaml"/>
  10:        </uriMapper:UriMapper>
  11:    </navigation:Frame.UriMapper>

У вас может возникнуть и другой вопрос – существует ли возможность передачи данных между страницами. Ответ – “существует, для этого можно воспользоваться DataContext”.

sl_nav3

sl_nav4

Вот такая новая фича появилась в Silverlight 3. Думаю, она вам очень поможет в разработке мульти-страничных приложений.

Posted by Ilya Vorobiev | 0 Comments
Filed under: ,
More Posts Next page »
 
Page view tracker