Проектирование и разработка веб-приложений на основе технологий Microsoft

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

Разбить на страницы
Показывать лекцию целиком

Установка инструментов Silverlight для Visual Studio

Перед тем как устанавливать Silverlight 3 SDK, рекомендуемо установить SP1 для Visual Studio 2008 (http://www.microsoft.com/downloads/details.aspx?FamilyId=FBEE1648-7106-44A7-9649-6D9F6D58056Edisplaylang=en или http://www.microsoft.com/downloads/details.aspx?familyid=27673C47-B3B5-4C67-BD99-84E525B5CE61displaylang=en). После чего можно устанавливать Silverlight 3 SDK

(http://www.microsoft.com/downloads/details.aspx?familyid=9442B0F2-7465-417A-88F3-5E7B5409E9DDdisplaylang=en или http://www.microsoft.com/downloads/details.aspx?FamilyID=1ea49236-0de7-41b1-81c8-a126ff39975bdisplaylang=en ), по первой ссылке доступен Microsoft $$\text{\textregistered}$$ Silverlight $$\text{\texttrademark}$$ 3 Tools for Visual Studio 2008 SP1, включающий в себя дополнения и исправления для VS2008, а так же Silverlight 3 SDK, поэтому рекомендую устанавливать именно его.

(рис 19.1) Установка Microsoft Silverlight 3 Tools(рис 19.2) Установка Microsoft Silverlight 3 Tools

После того как Installation Wizard, закончит установку Silverlight 3 SDK, можно переходить к созданию проектов Silverlight на VS2008.

Создание Silverlight-приложения в Visual Studio 2008

(рис 19.3) Создание Silverlight проекта

При создании Silverlight проекта (рис. 19.3) можно выбрать один из трех шаблонов:

  • Silverlight Application - обычное приложение Silverlight.
  • Silverlight Class Library - библиотека классов Silverlight.
  • Silverlight Navigation Application - приложение Silverlight, поддерживающее навигацию.
  • Проект элемента управления Silverlight

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

    (рис 19.4) Структура проекта Silverlight

    Описание структуры проекта.

    Файлы свойств (Properties)

    Первой папкой проекта является папка Properties, состоящая из файлов свойств:

  • AppManifest.xml
  • AssemblyInfo.cs
  • AppManifest.xml создается при компиляции проекта. Если проект имеет какие-либо зависимости во время выполнения, такие как внешние элементы управления, ссылки на них размещаются в этом файле.

    Файл Assemblyinfo.cs содержит метаданные, которые должны быть скомпилированы в вашу DLL, заданную в диалоговом окне Assembly Information. Код в этом файле можно редактировать вручную, но рекомендуется использовать для этого диалоговое окно (Правой кнопкой мыши на вкладке Properties и далее open или открыть).

    (рис 19.5) Диалоговое окно Project Properties Silverlight

    Опции Assembly Name (Имя сборки) по умолчанию присваивается имя проекта. Это имя будет использоваться при компиляции приложения в DLL.

    Опции Default Namespace (Пространство имен по умолчанию) по умолчанию также присваивается имя проекта. Если вы ссылаетесь на классы из этого проекта, их имена начинаются с имени этого пространства имен.

    Опции Startup Object (Объект, с которого начинается запуск проекта) по умолчанию присваивается имя проекта с .App в конце (т.е. SlidingBlocks3.App ). Это класс в приложении, который будет выполняться первым. Шаблон определяет этот класс в App.xaml и связанный с ним файл выделенного кода App.xaml.cs, который рассматривается в данной главе позже.

    По щелчку кнопки Assembly Information (Сведения о сборке) будет вызван диалог Assembly Information. В нем можно определить метаданные своей сборки, включая Title (Название), Description (Описание), Copyright (Авторское право) и Trademark (Торговая марка). Вся эта информация хранится в файле AssemblyInfo.cs и компилируется в приложение Silverlight.

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

    Ссылки

    Папка References содержит ссылки на ряд сборок. Это основные сборки Silverlight, которые необходимы для запуска приложения.

  • mscorlib В сборку mscorlib входят основные типы, используемые приложениями Silverlight.
  • System В сборку system входят многие высокоуровневые типы, используемые для разработки и отладки приложений Silverlight, такие как компилятор и классы для отладки и диагностики.
  • System.Core Сборка System.Core включает основные элементы управления и классы Silverlight.
  • System.Net Сборка System.Net включает библиотеки .NET, необходимые для сетевого взаимодействия.
  • System.Xml В сборку System.Xml входят библиотеки Silverlight для обработки XML.
  • System.Windows В сборку System.Windows входят основные функциональные возможности Windows и Silverlight, включая элементы управления Silverlight.
  • System.Windows.Browser В сборку System.Windows.Browser входят библиотеки, используемые для взаимодействия с браузером.
  • В Silverlight также имеется ряд сборок, не входящих в стандартную поставку, которые можно добавлять для обеспечения необходимой функциональности. Некоторые из них будут рассмотрены в данной книге. Примером такой функциональности является Dynamic Language Runtime (Динамическая среда выполнения).

    Файлы App.xaml и App.xaml.cs

    Файл App.xaml создается интегрированной средой разработки (IDE) при создании проекта Silverlight по шаблону. Обычно он используется для хранения общей информации всего приложения.

    App.xaml содержит объявления, определяющие поведение приложения. Вот пример App.xaml, создаваемого шаблоном по умолчанию:

    <Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
                 x:Class="SilverlightApplication1.App"
                 >
        <Application.Resources>
            
        </Application.Resources>
    </Application>

    Первое, на что следует обратить внимание, – атрибут x:Class, который определяет имя класса, в который будет скомпилирован этот XAML и связанный с ним файл выделенного кода. Как видите, в данном случае это SilverlightApplication1.App, который, создается на странице Project Properties(рис. 19.5), как объект запуска для этого приложения. Таким образом, функциональность запуска проекта Silverlight находится в этом классе.

    Содержание файла App.xaml.cs, после создания проекта:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    
    namespace SilverlightApplication1
    {
      public partial class App : Application
      {
        public App()
        {
          this.Startup += this.Application_Startup;
          this.Exit += this.Application_Exit;
          this.UnhandledException += this.Application_UnhandledException;
    
          InitializeComponent();
        }
    
        private void Application_Startup(object sender, StartupEventArgs e)
        {
          this.RootVisual = new MainPage();
        }
    
        private void Application_Exit(object sender, EventArgs e)
        {
    
        }
        private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
        {
          if (!System.Diagnostics.Debugger.IsAttached)
          {
    
              e.Handled = true;
              Deployment.Current.Dispatcher.BeginInvoke(delegate { ReportErrorToDOM(e); });
          }
        }
        private void ReportErrorToDOM(ApplicationUnhandledExceptionEventArgs e)
        {
          try
          {
            string errorMsg = e.ExceptionObject.Message + e.ExceptionObject.StackTrace;
            errorMsg = errorMsg.Replace('"', '\'').Replace("\r\n", @"\n");
    
            System.Windows.Browser.HtmlPage.Window.Eval(
               "throw new Error(\"Unhandled Error in Silverlight Application " + errorMsg + "\");");
          }
          catch (Exception)
          {
          }
        }
      }
    }

    Конструктор(это функция с именем, аналогичным имени модуля кода, в данном случае это App() ).

    Он используется для подключения методов Application_Startup и Application_Exit, которые принимают два параметра: объект, формирующий событие, и объект аргументов. Это уже было сделано в файле XAML, поэтому нет необходимости делать это в коде. Однако это демонстрирует замечательную гибкость модели XAML/выделенный код, которая позволяет подключать события во время разработки (задавая их в XAML) или во время выполнения (объявляя их в коде).

    В методе Application_Startup происходит присвоение свойству RootVisual (Корневой визуальный элемент) приложения нового объекта MainPage (Главная страница). Тем самым объявляется, что UI объекта Page является первым экраном UI, который должно создать это приложение. Если предполагается использовать другие экраны UI, объявленные в XAML, они будут запускаться уже из объекта MainPage.

    Объект MainPage является XAML-объектом по умолчанию, создаваемым шаблоном для размещения UI вашего приложения.

    Файлы MainPage.xaml и MainPage.xaml.cs

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

    Сгенерированный код Xaml в MainPage.xaml:

    <UserControl x:Class="SilverlightApplication1.MainPage"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">
      <Grid x:Name="LayoutRoot">
    
      </Grid>
    </UserControl>

    В данном случае, экземпляр UserControl называется SilverlightApplication1.MainPage.

    SilverlightApplication1 – это пространство имен (вернитесь к свойствам проекта), и MainPage – имя класса из этого пространства имен.

    Объявления xmlns и xmlns:x задают пространство имен по умолчанию и дополнительное пространство имен, соответственно, которые должны использоваться для проверки корректности XAML. Ранее был рассмотрен атрибут x:Class, используемый для описания класса этого элемента управления, который также является примером применения дополнительного пространства имен, запись которого начинается с префикса x:.

    Наконец, ширине и высоте присвоены значения по умолчанию: 640 x 480.

    Далее идет корневой Grid. В Silverlight 3 корневым элементом должен быть Container (Контейнер), которым в данном случае является Grid под именем LayoutRoot. Соответственно, все элементы дизайна UI будут дочерними элементами этого узла.

    MainPage.xaml.cs буде выглядеть следующим образом:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    
    namespace SilverlightApplication1
    {
      public partial class MainPage : UserControl
      {
        public MainPage()
        {
          InitializeComponent();
        }
      }
    }

    Cтандартный класс MainPage, унаследованный от типа UserControl. В конструкторе класса выполняется общая настройка с помощью вызова метода InitializeComponent().

    Веб-проект

    Кроме проекта элемента управления, шаблон создает Веб-проект, в котором размещается ваше приложение Silverlight. Этот Веб-проект включает два ASPX-файла: Default.aspx, являющийся пустой Веб-формой, на базе которой можно построить свое приложение; и тестовую страницу <ИмяПриложения>TestPage.aspx (например, SilverlightApplication1TestPage.aspx ), которая содержит все необходимое для запуска Silverlight из ASP.NET.

    Хотя Silverlight не имеет никаких зависимостей на стороне сервера, ASP.NET предлагает элементы управления, обеспечивающие возможность создания JavaScript и HTML на стороне клиента, необходимых для размещения Silverlight в браузере.

  • http://silverlighter.ru/
  • http://silverlightru.net/
  • http://silverlight.net/
  • Страницы:

    Установка инструментов Silverlight для Visual Studio

    Перед тем как устанавливать Silverlight 3 SDK, рекомендуемо установить SP1 для Visual Studio 2008 (http://www.microsoft.com/downloads/details.aspx?FamilyId=FBEE1648-7106-44A7-9649-6D9F6D58056Edisplaylang=en или http://www.microsoft.com/downloads/details.aspx?familyid=27673C47-B3B5-4C67-BD99-84E525B5CE61displaylang=en). После чего можно устанавливать Silverlight 3 SDK

    (http://www.microsoft.com/downloads/details.aspx?familyid=9442B0F2-7465-417A-88F3-5E7B5409E9DDdisplaylang=en или http://www.microsoft.com/downloads/details.aspx?FamilyID=1ea49236-0de7-41b1-81c8-a126ff39975bdisplaylang=en ), по первой ссылке доступен Microsoft $$\text{\textregistered}$$ Silverlight $$\text{\texttrademark}$$ 3 Tools for Visual Studio 2008 SP1, включающий в себя дополнения и исправления для VS2008, а так же Silverlight 3 SDK, поэтому рекомендую устанавливать именно его.

    (рис 19.1) Установка Microsoft Silverlight 3 Tools(рис 19.2) Установка Microsoft Silverlight 3 Tools

    После того как Installation Wizard, закончит установку Silverlight 3 SDK, можно переходить к созданию проектов Silverlight на VS2008.

    Создание Silverlight-приложения в Visual Studio 2008

    (рис 19.3) Создание Silverlight проекта

    При создании Silverlight проекта (рис. 19.3) можно выбрать один из трех шаблонов:

  • Silverlight Application - обычное приложение Silverlight.
  • Silverlight Class Library - библиотека классов Silverlight.
  • Silverlight Navigation Application - приложение Silverlight, поддерживающее навигацию.
  • Проект элемента управления Silverlight

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

    (рис 19.4) Структура проекта Silverlight

    Описание структуры проекта.

    Файлы свойств (Properties)

    Первой папкой проекта является папка Properties, состоящая из файлов свойств:

  • AppManifest.xml
  • AssemblyInfo.cs
  • AppManifest.xml создается при компиляции проекта. Если проект имеет какие-либо зависимости во время выполнения, такие как внешние элементы управления, ссылки на них размещаются в этом файле.

    Файл Assemblyinfo.cs содержит метаданные, которые должны быть скомпилированы в вашу DLL, заданную в диалоговом окне Assembly Information. Код в этом файле можно редактировать вручную, но рекомендуется использовать для этого диалоговое окно (Правой кнопкой мыши на вкладке Properties и далее open или открыть).

    (рис 19.5) Диалоговое окно Project Properties Silverlight

    Опции Assembly Name (Имя сборки) по умолчанию присваивается имя проекта. Это имя будет использоваться при компиляции приложения в DLL.

    Опции Default Namespace (Пространство имен по умолчанию) по умолчанию также присваивается имя проекта. Если вы ссылаетесь на классы из этого проекта, их имена начинаются с имени этого пространства имен.

    Опции Startup Object (Объект, с которого начинается запуск проекта) по умолчанию присваивается имя проекта с .App в конце (т.е. SlidingBlocks3.App ). Это класс в приложении, который будет выполняться первым. Шаблон определяет этот класс в App.xaml и связанный с ним файл выделенного кода App.xaml.cs, который рассматривается в данной главе позже.

    По щелчку кнопки Assembly Information (Сведения о сборке) будет вызван диалог Assembly Information. В нем можно определить метаданные своей сборки, включая Title (Название), Description (Описание), Copyright (Авторское право) и Trademark (Торговая марка). Вся эта информация хранится в файле AssemblyInfo.cs и компилируется в приложение Silverlight.

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

    Ссылки

    Папка References содержит ссылки на ряд сборок. Это основные сборки Silverlight, которые необходимы для запуска приложения.

  • mscorlib В сборку mscorlib входят основные типы, используемые приложениями Silverlight.
  • System В сборку system входят многие высокоуровневые типы, используемые для разработки и отладки приложений Silverlight, такие как компилятор и классы для отладки и диагностики.
  • System.Core Сборка System.Core включает основные элементы управления и классы Silverlight.
  • System.Net Сборка System.Net включает библиотеки .NET, необходимые для сетевого взаимодействия.
  • System.Xml В сборку System.Xml входят библиотеки Silverlight для обработки XML.
  • System.Windows В сборку System.Windows входят основные функциональные возможности Windows и Silverlight, включая элементы управления Silverlight.
  • System.Windows.Browser В сборку System.Windows.Browser входят библиотеки, используемые для взаимодействия с браузером.
  • В Silverlight также имеется ряд сборок, не входящих в стандартную поставку, которые можно добавлять для обеспечения необходимой функциональности. Некоторые из них будут рассмотрены в данной книге. Примером такой функциональности является Dynamic Language Runtime (Динамическая среда выполнения).

    Файлы App.xaml и App.xaml.cs

    Файл App.xaml создается интегрированной средой разработки (IDE) при создании проекта Silverlight по шаблону. Обычно он используется для хранения общей информации всего приложения.

    App.xaml содержит объявления, определяющие поведение приложения. Вот пример App.xaml, создаваемого шаблоном по умолчанию:

    <Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
                 x:Class="SilverlightApplication1.App"
                 >
        <Application.Resources>
            
        </Application.Resources>
    </Application>

    Первое, на что следует обратить внимание, – атрибут x:Class, который определяет имя класса, в который будет скомпилирован этот XAML и связанный с ним файл выделенного кода. Как видите, в данном случае это SilverlightApplication1.App, который, создается на странице Project Properties(рис. 19.5), как объект запуска для этого приложения. Таким образом, функциональность запуска проекта Silverlight находится в этом классе.

    Содержание файла App.xaml.cs, после создания проекта:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    
    namespace SilverlightApplication1
    {
      public partial class App : Application
      {
        public App()
        {
          this.Startup += this.Application_Startup;
          this.Exit += this.Application_Exit;
          this.UnhandledException += this.Application_UnhandledException;
    
          InitializeComponent();
        }
    
        private void Application_Startup(object sender, StartupEventArgs e)
        {
          this.RootVisual = new MainPage();
        }
    
        private void Application_Exit(object sender, EventArgs e)
        {
    
        }
        private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
        {
          if (!System.Diagnostics.Debugger.IsAttached)
          {
    
              e.Handled = true;
              Deployment.Current.Dispatcher.BeginInvoke(delegate { ReportErrorToDOM(e); });
          }
        }
        private void ReportErrorToDOM(ApplicationUnhandledExceptionEventArgs e)
        {
          try
          {
            string errorMsg = e.ExceptionObject.Message + e.ExceptionObject.StackTrace;
            errorMsg = errorMsg.Replace('"', '\'').Replace("\r\n", @"\n");
    
            System.Windows.Browser.HtmlPage.Window.Eval(
               "throw new Error(\"Unhandled Error in Silverlight Application " + errorMsg + "\");");
          }
          catch (Exception)
          {
          }
        }
      }
    }

    Конструктор(это функция с именем, аналогичным имени модуля кода, в данном случае это App() ).

    Он используется для подключения методов Application_Startup и Application_Exit, которые принимают два параметра: объект, формирующий событие, и объект аргументов. Это уже было сделано в файле XAML, поэтому нет необходимости делать это в коде. Однако это демонстрирует замечательную гибкость модели XAML/выделенный код, которая позволяет подключать события во время разработки (задавая их в XAML) или во время выполнения (объявляя их в коде).

    В методе Application_Startup происходит присвоение свойству RootVisual (Корневой визуальный элемент) приложения нового объекта MainPage (Главная страница). Тем самым объявляется, что UI объекта Page является первым экраном UI, который должно создать это приложение. Если предполагается использовать другие экраны UI, объявленные в XAML, они будут запускаться уже из объекта MainPage.

    Объект MainPage является XAML-объектом по умолчанию, создаваемым шаблоном для размещения UI вашего приложения.

    Файлы MainPage.xaml и MainPage.xaml.cs

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

    Сгенерированный код Xaml в MainPage.xaml:

    <UserControl x:Class="SilverlightApplication1.MainPage"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">
      <Grid x:Name="LayoutRoot">
    
      </Grid>
    </UserControl>

    В данном случае, экземпляр UserControl называется SilverlightApplication1.MainPage.

    SilverlightApplication1 – это пространство имен (вернитесь к свойствам проекта), и MainPage – имя класса из этого пространства имен.

    Объявления xmlns и xmlns:x задают пространство имен по умолчанию и дополнительное пространство имен, соответственно, которые должны использоваться для проверки корректности XAML. Ранее был рассмотрен атрибут x:Class, используемый для описания класса этого элемента управления, который также является примером применения дополнительного пространства имен, запись которого начинается с префикса x:.

    Наконец, ширине и высоте присвоены значения по умолчанию: 640 x 480.

    Далее идет корневой Grid. В Silverlight 3 корневым элементом должен быть Container (Контейнер), которым в данном случае является Grid под именем LayoutRoot. Соответственно, все элементы дизайна UI будут дочерними элементами этого узла.

    MainPage.xaml.cs буде выглядеть следующим образом:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    
    namespace SilverlightApplication1
    {
      public partial class MainPage : UserControl
      {
        public MainPage()
        {
          InitializeComponent();
        }
      }
    }

    Cтандартный класс MainPage, унаследованный от типа UserControl. В конструкторе класса выполняется общая настройка с помощью вызова метода InitializeComponent().

    Веб-проект

    Кроме проекта элемента управления, шаблон создает Веб-проект, в котором размещается ваше приложение Silverlight. Этот Веб-проект включает два ASPX-файла: Default.aspx, являющийся пустой Веб-формой, на базе которой можно построить свое приложение; и тестовую страницу <ИмяПриложения>TestPage.aspx (например, SilverlightApplication1TestPage.aspx ), которая содержит все необходимое для запуска Silverlight из ASP.NET.

    Хотя Silverlight не имеет никаких зависимостей на стороне сервера, ASP.NET предлагает элементы управления, обеспечивающие возможность создания JavaScript и HTML на стороне клиента, необходимых для размещения Silverlight в браузере.

  • http://silverlighter.ru/
  • http://silverlightru.net/
  • http://silverlight.net/
  • Вернуться к учебному плану