6/13/2008

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

Вывод графики на веб-страницу можно организовать с помощью Silverlight. Например, надо вывести черный квадрат. Ниже приводится код страницы с встроенной графикой:

<html>
<body>
<script type="'text/xaml'" id="'scene'"><?xml version='1.0'?>
<canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" x="http://schemas.microsoft.com/winfx/2006/xaml">
<rectangle width="50" height="50" stretch="Fill" fill="Black">
</canvas>
</script>
<object type="application/ag-plugin" classid="clsid:DFEAF541-F3E1-4C24-ACAC-99C30715084A"
style="border: 0px; width: 100px; height: 100px;">
<param name="source" value="#scene">
</object>
</body>
</html>

Если установлен Silverlight (версия 2.0 - весит чуть больше 4Mb), то можно код примера сохранить в текстовом файле с расширением .htm и открыть в IE.

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

<html>
<body>
<script>
function showDlg()
{
alert(1);
}
</script>

<script type='text/xaml' id='scene'><?xml version='1.0'?>
<Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Rectangle Width="50" Height="50" Stretch="Fill" Fill="Red" />
<TextBlock Text="Hello" MouseLeftButtonDown="showDlg" />
</Canvas>
</script>
<object type="application/ag-plugin" classid="clsid:DFEAF541-F3E1-4C24-ACAC-99C30715084A"
style="border: 0px; width: 100px; height: 100px;">
<param name="source" value="#scene" />
</object>
</body>
</html>

P.S.
Кстати, в Silverlight есть множество контролов, которые поддерживают связывание данных и т.д. А обработчики можно создавать на C# в бесплатной Visual Studio.
Так что же выбрать для реализации интранет сайта: Silverlight или флеш (Adobe Flash)? ;)

7 Comments:

Constantiner said...

Хм. А Вы пробовали ставить аддон для Silverlight на Visual Studio Express Edition? Работает? Просто с анонсом Silverlight 2 (после альфы Silverlight 1.1) Скотт Гатри обещал, что VS Express будет поддерживаться. Но при выходе beta 1 этой поддержки не было. И ничего пока не слышал про поддержку VS Express в beta 2.

Mindberg said...

>> А Вы пробовали ставить аддон для Silverlight на Visual Studio Express Edition?

Нет, не пробовал и скорее всего не буду. Приложение лучше строить на основе MVC-паттерна, т.е. надо максимально отделять код от внешнего вида (графики).
Visual Studio - это для написания и отладки кода разработчиками, а Expression Design - это полнофункциональная среда для создания xaml-графики дизайнерами.

Constantiner said...

Я о другом. Я о Вашем утверждении:

>> А обработчики можно создавать на C# в бесплатной Visual Studio.

Насколько мне известно, аддон к VS для разработки Silverlight-приложений идет начиная с VS Standard Edition, которая далеко не бесплатна.

Mindberg said...

> Я о другом. Я о Вашем утверждении:
>> А обработчики можно создавать на >>C# в бесплатной Visual Studio.

Аддон не требуется, если разработкой дизайна занимается дизайнер в Expression Design.
А разработкой кода занимается разработчик в Visual Studio (пусть Express версии). Когда код готов (и написан в соответствии с MVC-паттерном), то его очень легко подключить к xaml-файлу (результату работы дизайнера).
Что касается VS Standard Edition, то она входит в коробку с Expression Studio (раздавался на remix.ru).
Кстати, если вступить в ug (см. http://ineta.ru), то возможно (зависит от лидера ug) получить VS 2008 и не только (а еще Windows Server 2008, SQL Server 2008, учебные материалы и т.п.).

Constantiner said...

Что-то мы на разных языках общаемся. Причем тут designer/developer workflow? И при чем тут Expression Blend? В люом случае разработчику придется иметь дело с кодом как C#(VB/DLR), так и с XAML в Visual Studio (неважно, кто придает разметке приемлемый внешний вид; тем более, найчить графического дизайнера нестандартному темплейтингу не обучив основам программирования, - невозможно). Далее, концепция взаимодействия разработчика и дизайнера в рамках предлагаемого MS инструментария предполагает не только редактирование XAML-файлов в Blend'е, а работу с общими проектами, причем в формате Visual Studio. Так или иначе, но при Silverlight-разработке (по краней мере на базе CLR) без использования Visual Studio шансы значительно снижаются.

Далее, MVC тоже не имеет никакого отношения к концептуальному вопросу совместного использования общих проектов дизайнером и разработчикам. Это не избавляет их от использования общих проектов. Также как не избавляет разработчика вовсе от работы с XAML-файлами.

Вопрос разработки Silverlight-приложений в Visual Studio без использования Microsoft Silverlight Tools Beta 2 for Visual Studio 2008, думаю, тоже не обсуждается.

Далее, по концептуальному вопросу вхождения VS Standard Edition в пакет Expression могу согласиться. И даже могу согласиться, что этот пакет раздавался на ReMIX и на РИТ. Только, если быть в курсе, в этот пакет входит VS 2005, а не 2008. Продажи же Expression Studio 2 в России еще не начались. Но это принципиально не меняет сути дела, как не меняет сути дела то, что при большом желании посещая мероприятия от MS можно получить бесплатно VS 2008 Standard.

После того, как я ответил на все Ваши вопросы, я вернусь к своему вопросу, на который прошу Вас ответить согласно текста Вашего поста (ну или исправить этот текст). В Вашей статье утверждается следующее:

>> А обработчики можно создавать на C# в бесплатной Visual Studio.

Там еще приведена гиперссылка на страницу VS Express Edition.

Ну и мой вопрос: а Вы реально пробовали ставить Microsoft Silverlight Tools Beta 2 for Visual Studio 2008 на VS 2008 Express Edition или нет? Или владеете точной информацией, что оно туда встает?

Может, лучше в статье написать:

А обработчики можно создавать на C# в Visual Studio 2008 начиная от Standard Edition, которую при желании можно получить бесплатно посещая мероприятия от Microsoft.

Тогда, вроде, читатели блога не будут дезинформированы.

Mindberg said...

> Что-то мы на разных языках общаемся. Причем тут designer/developer workflow? И при чем тут Expression Blend?

Про Expression Blend я не говорил! Да, он входит в Expression Studio, также как и Expression Design.
Так вот, я утверждаю, что Expression Design - это удобная полнофункциональная среда для создания векторной графики (и xaml-кода); предназначена для графических дизайнеров, которые раньше для создания графики использовали CoreDraw или Photoshop. Кстати, Expression Design умеет работать с .psd-файлами (Adobe Photoshop).

> найчить графического дизайнера нестандартному темплейтингу не обучив основам программирования, - невозможно

Не вполне понятно что имеется ввиду под словами "нестандартный темплейтинг". Но думаю, что большинство дизайнеров сможет понять и запомнить синтаксис xaml-тегов, т.е. смогут подключить обработчик (например, вызов веб-службы, написанный разработчиком). И уверен, что разработчик сможет понять дизайнера; и результат правильно запишет в xaml-тег, указанный дизайнером.

> Вопрос разработки Silverlight-приложений в Visual Studio без использования Microsoft Silverlight Tools Beta 2 for Visual Studio 2008, думаю, тоже не обсуждается.

Silverlight Tools - это удобство, но не необходимость.
Дело в том, что Silverlight приложение - это xaml и обработчики, например, нажатий мыши. Так вот обработчики можно писать на JScript или на C#. Хостить Silverlight-приложение можно в WinForms приложении. Это работает и для Silverlight 1.0 и выше.

> а Вы реально пробовали ставить Microsoft Silverlight Tools Beta 2 for Visual Studio 2008 на VS 2008 Express Edition или нет?

Нет, не пробовал. И это к теме не относится.

> Может, лучше в статье написать:
А обработчики можно создавать на C# в Visual Studio 2008 начиная от Standard Edition, ...

Обработчики можно создавать на JScript в notepad, как показано в выше в посте.
При желании обработчики можно писать на C# (в notepad или любом другом редакторе). Компилировать код из командной строки.
Но для удобства можно использовать бесплатный Visual Studio Express. А для тестирования кода использовать разные mock'и и софт для unit-тестирования, например, NUnit (http://www.nunit.org/).
Т.е. логику можно создавать отдельно от графики.

Mindberg said...

Constantiner> Продажи же Expression Studio 2 в России еще не начались.

Продажи начались:
Microsoft Expression Studio 2.0 Mac/Win English DVD - 22 193.70 руб. (за 1 коробку) на Софткей