Создание приложения веб-чата на Silverlight 2

ОГЛАВЛЕНИЕ

Silverlight 2 сейчас доступен всем, и лучший способ его изучить – создать маленькое веб-приложение с помощью этой чудесной технологии. Именно это и будет сделано здесь. Будет создан веб-чат с помощью Silverlight 2. Также будут рассказаны некоторые вещи, выясненные о данной новой технологии. Ниже показан снимок приложения веб-чата на Silverlight 2, которое будет создано.

•    Скачать исходники - 595 KB

Требования

Будет с нуля создано очень простое приложение веб-чата с помощью Silverlight 2 из спортивного интереса. Приложение чата будет содержать два пользовательских управляющих элемента XAML: управляющий элемент входа в чат и управляющий элемент раздела чата. Большая часть руководства посвящена странице раздела чата. Надо достичь следующего:
•    Чат должен быть доступен везде и без необходимости скачивать и устанавливать компоненты. Поэтому будет создан веб-чат.
•    Веб-чат не должен мерцать. Вы узнаете, что вся обработка в Silverlight производится асинхронно.
•    Должна быть возможность контролировать разговоры в чате с помощью базы данных. MS SQL Server будет использоваться для хранения разговоров и информации о пользователе.
•    Использование динамического SQL с помощью LINQ-для-SQL вместо хранимых процедур для очень быстрого программирования.

Веселье начинается

1.    Сначала надо создать базу данных с помощью MS SQL Server 2005/2008. Для простоты используется следующая база данных:

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

2.    В Visual Studio создайте новый проект приложения Silverlight. Чтобы сделать это, перейдите в меню «Файл», выберите «Новый», затем щелкните по «Проекту». В поле «Новый проект» щелкните по Silverlight в «Типах проекта», затем выберите «Приложение Silverlight» в «Шаблонах», введите имя приложения. Затем щелкните по OK.

В следующем окне выберите "Добавить новый веб-проект ASP.NET...." и нажмите OK. В проводнике решений появятся созданные приложение Silverlight и веб-проект ASP.NET Web Project. В сгенерированном веб-проекте будет размещаться приложение чата Silverlight 2.

3.    При создании приложения Silverlight были сгенерированы некоторые вещи. В приложении Silverlight есть два файла XAML, App.xaml и Page.xaml. Файлы XAML, в отличие от веб-форм ASP.NET, являются пользовательскими управляющими элементами, размещаемыми в веб-форме ASP.NET или на странице HTML. Все файлы XAML по умолчанию размещаются на одной веб-странице. Также можно размещать файл или пользовательский управляющий элемент XAML на каждой веб-странице, что не рекомендуется.
      o    App.xaml: Работает подобно Global.asax в ASP.NET. Это самый первый управляющий элемент, которого достигает приложение Silverlight. Поскольку Silverlight является клиентской технологией, то не имеет сессий и не позволяет осуществить Response.Redirect для следующего пользовательского управляющего элемента. Тут хранятся переменные и свойства, доступные другим пользовательским управляющим элементам. Это возможно только при размещении других пользовательских управляющих элементов на одной и той же странице ASP.NET.
      o    Page.xaml: По умолчанию, без изменения кода, это пользовательский управляющий элемент, размещаемый в сгенерированной веб-странице ASP.NET при создании проекта. В данном руководстве этот пользовательский управляющий элемент не применяется. Зато будет создан собственный пользовательский управляющий элемент и назван в соответствии с использованием.

На стороне веб-приложения имеются следующие файлы:
      o    Default.aspx: Этот файл вообще не применяется, поэтому удаляется из проекта.
      o    Chatroom.aspx: Фактическая страница, в которой будет размещаться пользовательский управляющий элемент Silverlight. Ее можно назначить начальной страницей. Этот файл ссылается на файл ".xap", расположенный в папке ClientBin. Сразу после создания проекта в папке ClientBin нет файла .xap. После сборки веб-проекта .xap будет в папке ClientBin. Сгенерированный файл .xap является скомпилированным приложением Silverlight.
      o    Silverlight2ChatTestPage.html: Ловушка для ошибочной страницы Silverlight. Когда происходит ошибка Silverlight, на экране показывается эта страница.
Ниже приведен снимок проекта чата Silverlight 2:

Теперь, когда вы знаете приложение Silverlight, размещаемое в веб-странице ASP.NET, продолжается руководство по веб-чату.
4.    Были созданы два пользовательских управляющих элемента: Login.xaml и Chatroom.xaml, чтобы показать, как перейти от одного пользовательского управляющего элемента к другому и обратно. Также показано, как помнить пользователя между пользовательскими управляющими элементами наподобие сессии. Эти пользовательские управляющие элементы служат для входа в чат и для общения.

5.    Надо войти в чат, прежде чем начать общаться. Пользователи должны существовать в таблице пользователей чата LinqChat User. Раздел тоже должен существовать в таблице разделов чата LinqChat Room. Этот раздел должен иметь идентификатор RoomID = 1, жёстко заданный в Chatroom.xaml.cs. Конечно, может быть несколько разделов, но в руководстве используется всего один.