Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методические материалы

.pdf
Скачиваний:
10
Добавлен:
07.02.2016
Размер:
606.53 Кб
Скачать

Новые возможности Visual Studio 2008

21

Помимо того, что в WPF/E входит лишь малая часть элементов управления WPF, приложения Slverlight не могут включать в себя исполняемый код C# или VB, что конечно очень сильно ограничивает область применения этой технологии. Однако есть утешительная новость: в следующей версии Silverlight будет работать практически все, что есть в WPF и в приложениях можно будет использовать код C# и VB. С Sliverlight 2 можно ознакомиться уже сейчас, а выход окончательной версии ожидается в конце лета.

Связывание с данными

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

Windows Communication Foundation

Библиотека Windows Communication Foundation предназначена для создания распределенных приложений. WCF позволяет создать два приложения – клиент и сервер и создать канал передачи информации между ними.

В состав .Net Framework входят несколько компонентов, позволяющих решать сходные задачи. Remoting позволяет передавать данные и вызывать методы объектов, расположенных на удаленной машине. Это довольно таки удобно, но у Remoting есть существенный недостаток: это вещь в себе. И клиент и сервер обязательно должны быть написаны на VB или C# (теоретически годится и другой язык для которого есть компилятор .Net).

Другой способ создания распределенных приложений – Web-службы, использующие протокол SOAP. Поскольку SOAP стандартизован, web-службы поддерживаются множеством различных библиотек, и не составляет труда написать серверное приложение на C#, а клиента к нему на Java или php. Однако вебслужбы довольно-таки сложно создавать, и протокол SOAP обладает значительными недостатками – например по нему неудобно передавать большие объемы информации.

Библиотека WCF лишена большей части этих недостатков. Основное преимущество WCF состоит в том, что эта библиотека позволяет использовать множество различных протоколов. Вам требуется совместимость java-клиентом? Используйте SOAP. Вам нужна высокая производительность? Используйте собственный протокол WCF.

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

[ServiceContract(SessionMode=SessionMode.Required)] public interface ICustomAuthentificationService

{

[OperationContract]

bool LogIn(string login, string password);

[OperationContract] void LogOff();

}

22 Новые возможности Visual Studio 2008

Этот интерфейс определяет так называемый контракт службы. В данном случае мы хотим создать службу, реализующую авторизацию пользователей, поэтому мы определяем два метода – LogIn и LogOff. Каждый из методов отмечен атрибутом [OperationContract], а интерфейс

ICustomAuthentificationService – атрибутом [ServiceContract]. С помощью этих атрибутов программист информирует WCF о том, что методы этого интерфейса можно будет вызывать удаленно с другой машины. Как видно здесь мы ничего не сообщаем о том, по какому протоколу будет происходить удаленный вызов. Мы требуем только, чтобы этот протокол поддерживал сессии (для этого используется SessionMode = SessionMode.Required) а это несколько ограничивает выбор протоколов.

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

WCF позволяет создавать три типа серверов: Во-первых сервер может быть реализован в виде консольного приложения. Как правило такой сервер используется только для тестирования. Более реалистичный вариант – реализация сервера в виде службы windows. В тех случаях, когда службу необходимо запустить на машине, на которой есть IIS, можно реализовать ее в виде специальной сборки и возложить ответственность за управление службой на плечи IIS.

Создание клиентского приложения WCF происходит еще более автоматизировано. Специальная утилита подключается к запущенной службе, извлекает из нее всю необходимую информацию и генерирует необходимые исходные файлы C# или VB а также конфигурационный файл, в котором определяется протокол.

Обновление Visual Studio

Дизайнер LINQ to SQL

LINQ to SQL – одна из частей библиотеки LINQ, предназначенная для создания запросов к базам данных MS SQL Server. LINQ to SQL не умеет выполнять произвольные запросы к произвольным таблицам в базе данных. Для того, чтобы LINQ «увидел» таблицу на сервере, необходимо вначале создать специальный класс, который будет представлять строки из этой таблицы в запросах LINQ и в кортом будет определена привязка запроса к таблице.

Теоретически такие классы можно создавать вручную, однако значительно удобнее использовать для этого инструментальные средства. Существует два способа генерации этих классов: утилита sqlmetal, генерирующая их в автоматическом режиме и дизайнер классов LINQ to SQL встроенный в Visual Studio.

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

Новые возможности Visual Studio 2008

23

Дизайнер LINQ to SQL позволяет создавать необходимые классы перетаскиванием таблиц из панели ServerExplorer в рабочую область. При этом автоматически создаются связи между таблицами на основе информации о первичных ключах. Разработчик может добавлять и удалять столбцы таблицы, отображаемые на класс, изменять тип столбца, название свойства, разрешать или запрещать запись значения null; иными словами дизайнер позволяет редактировать все, что требуется для корректного отображения таблицы в класс.

Новый стиль разработки интерфейса с помощью WPF

Использование XAML для описания пользовательского интерфейса WPF открывает замечательную возможность для сотрудничества дизайнеров и программистов. Дело в том, что Visual Studio – не единственный продукт Microsoft, позволяющий редактировать файлы XAML. В дополнение к Visual Studio Microsoft создала пакет Expresion Blend. По сути это еще один редактор XAML.

24 Новые возможности Visual Studio 2008

Но между Visual Studio и Expression Blend существует одно важное различие: Visual Studio

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

ASP.Net 3.5

С выходом новой версии .Net Framework обновился и ASP.Net, а с выходом Visual Studio обновился редактор ASP.Net входящий в ее состав. Какие изменения произошли здесь? Прежде всего, AJAX наконец-то вошел в состав стандартных серверных элементов управления. Больше не нужно ставить расширения и настраивать конфигурационные файлы. Теперь в любом проекте есть набор серверных элементов управления AJAX:

Вместе с AJAX разработчики получили полноценную поддержку IntelliSense для Java Script.

ASP.Net 3.5 полностью поддерживает LINQ. Специальный класс LinqDataSource позволяет внедрить запрос LINQ непосредственно в страницу и использовать его в качестве источника данных.

Новые возможности Visual Studio 2008

25

Практическая работа 1. Использование LINQ

В среде Microsoft .Net доступ к журналу событий Windows осуществляется с помощью класса EventLog. К сожалению, он не содержит специальных методов для фильтрации и поиска записей в журнале. LINQ позволяет компенсировать этот недостаток.

За основу всех заданий можно взять следующий код:

private static void WriteEventLog()

{

using (EventLog log = new EventLog("Application"))

{

foreach (EventLogEntry entry in log.Entries)

{

Console.WriteLine( "{0} {1} {2}",

entry.TimeGenerated,

entry.Source,

entry.Message);

}

}

}

Этот метод выводит на консоль все содержимое журнала Application. Для каждого события он приводит дату создания, источник события и текст сообщения.

Задание 1. Фильтрация по времени.

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

Для фильтрации необходимо использовать приведенное ниже выражение LINQ:

var entries = from EventLogEntry e in log.Entries

where e.TimeGenerated > start && e.TimeGenerated > end select e;

Предполагается, что start и end – переменные типа DateTime, объявленные ранее.

Задание 2. Фильтрация по типу

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

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

Указание: Тип события можно узнать через свойство EntryType класса EventLogEntry.

Задание 3.

Переделайте запрос LINQ так чтобы записи в журнале выводились отсортированные по источнику (свойство Source) а не по дате создания.

26

Новые возможности Visual Studio 2008

Практическая работа 2. Разработка приложения WPF

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

Создать проект WPF

Создайте в Visual Studio новый проект WPF Application. В этот проект автоматически будет добавлено одно окно (Window1.xaml). Откройте это окно в визуальном редакторе WPF. При этом вы увидите как внешний вид окна, так и соответствующую ему разметку XAML. Обратите внимание, что внутри окна находится контейнер Grid:

<Window x:Class="WpfExcercise.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300">

<Grid>

</Grid>

</Window>

Разделить окно на два столбца

Создайте в контейнере два столбца. Для этого достаточно щелкнуть мышью по верхнему краю окна. При этом внутри тега <grid> должны появиться следующие теги (цифры могут различаться):

<Grid.ColumnDefinitions> <ColumnDefinition Width="134*" /> <ColumnDefinition Width="144*" />

</Grid.ColumnDefinitions>

Добавить список

Перетащите на поверхность окна элемент управления ListBox (если список элементов управления не отображается, вам нужно щелкнуть мышью по поверхности окна). Растяните список так, чтобы он занимал весь левый столбец целиком. У вас должна получиться следующая разметка XAML:

<ListBox Name="listBox1" />

Добавьте в список элементы. Проще всего сделать это непосредственно редактируя разметку XAML. Замените созданный тег на набор тегов:

<ListBox Name="listBox1" > <ListBoxItem>

<Image Source="C:\WINDOWS\Blue Lace 16.bmp"></Image> </ListBoxItem>

<ListBoxItem>Строка 1</ListBoxItem> <ListBoxItem>Строка 2</ListBoxItem>

</ListBox>

Примечание: в русифицированной версии Windows файл с рисунком называется

Голубые Кружева 16.bmp

Новые возможности Visual Studio 2008

27

Добавить обработчик события

Выполните двойной щелчок по списку для того, чтобы добавить обработчик события SelectionChanged. При этом Visual Studio автоматически переключится на редактор исходного кода C#.

Обработчик должен выполнять следующий код:

private void listBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)

{

MessageBox.Show(string.Format(

"Вы выбрали {0} пункт в списке", listBox1.SelectedIndex));

}

Запустить приложение

Нажмите F5 для запуска приложения.

Попробуйте изменить размер окна. Что при этом происходит со списком? Щелкните по рисунку в списке. Что произошло?

28

Новые возможности Visual Studio 2008

Ссылки и книги

Language Integrated Query

http://msdn2.microsoft.com/en-us/vcsharp/aa336746.aspx

http://www.gotdotnet.ru/LearnDotNet/DotNet30/441508.aspx

http://www.realcoding.net/article/view/3188

Windows Presentation Foundation

Мэтью Мак-Дональд WPF: Windows Presentation Foundation в .NET 3.0 для профессионалов — М.: «Вильямс», 2007. — ISBN 978-5-8459-1344-9

http://www.gotdotnet.ru/LearnDotNet/DotNet30/438446.aspx

http://blogs.gotdotnet.ru/personal/e-zolotko/

Windows Communication Foundation

http://www.gotdotnet.ru/LearnDotNet/DotNet30/445109.aspx

http://stump-workshop.blogspot.com/2006/10/msdn-windows-communication-foundation.html

ASP.Net 3.5 и AJAX

http://asp.net/ajax/

Мэтью Мак-Дональд, Марио Шпушта Microsoft ASP.NET 3.5 с примерами на C# 2008 для профессионалов, второе издание — М.: «Вильямс», 2008. — ISBN 978-5-8459-1403-3, 978-1-59- 059893-1