20425

Компоненты NET

Доклад

Информатика, кибернетика и программирование

Использовать методы службы NET Romoting . Однако WCF содержит и другой тип сериализатора NetDataContractSerializer который является полной копией стандартного сериализатора однако помимо всего прочего он добавляет полное имя типа в сериализованный поток байтов. Хостинг IIS Internet Information Server WPF Приложения WPF строятся на основе языка XAML и языка реализации логики C.

Русский

2013-07-25

231.5 KB

1 чел.

Компоненты NET

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

Компонентная модель – набор правил, определяющих поведение компонента. Компонентная модель  определяет форму взаимодействия клиента с компонентом.

В среде .Net компонентная модель поддерживается с помощью интерфейса System.ComponentModel.IComponent.

Для создания компонента в среде .Net, удовлетворяющих компонентной модели среды .Net, необходимо:

  1.  создать проект типа Class Library
  2.  включить пространство имен System.ComponentModel, используя оператор using
  3.  определить класс как наследник класса System.ComponentModel.Component или интерфейса System.ComponentModel.IComponent, который необходимо будет реализовать.
  4.  написать пользовательские методы компонента.
  5.  после построения будет сформирована DLL.

Для того чтобы использовать компонент .Net необходимо выполнить следующие действия:

  1.  добавить в проект ссылку на компонент, пользуясь командой Добавить ссылку, выбирая сформированную dll нужного компонента.
  2.  в коде приложения, которое использует компонент, необходимо включить пространство имен, в котором объявлен класс компонента, используя оператор using.
  3.  создать объект компонента, используя оператор new.
  4.    использовать методы компонента.

Компонент отличается от обычного класса тем, что класс компонента реализует интерфейс System.ComponentModel.IComponent компонентной модели. Таким образом, созданный класс следует компонентной модели, определенной средой .NET Framework. Также можно наследовать класс компонента от класса System.ComponentModel.Component, который в свою очередь реализует интерфейс System.ComponentModel.IComponent.

Компоненты, написанные для платформы .NET на одном из .NET языков (С#, F# и другие),могут быть использованы на другом .NET языке. И для того, чтобы использовать компонент не нужно ничего кроме как добавить ссылку на dll компонента. В этом и заключается отличие обычных библиотек от библиотек компонентов.   

using System.ComponentModel;

namespace CipherLib

{

   public class CipherComp : Component

   {

       // Шифруем строку.

       public string Encode(string msg)

       {

       }

       // Дешифруем строку,

       public string Decode(string msg)

       {

       }

   }

}

using System;

using CipherLib;

namespace CipherCompClient

{

   class Program

   {

       static void Main(string[] args)

       {

           CipherComp cc = new CipherComp();

           string text = "Это простой тест";

           string ciphertext = cc.Encode(text);

           Console.WriteLine(ciphertext);

           string plaintext = cc.Decode(ciphertext);

           Console.WriteLine(plaintext);

           Console.ReadLine();

           cc.Dispose(); // Освобождаем ресурсы.

       }

   }

}

XML

  1.  основные отличия хml от html
  2.  назначение и область применения
  3.  описание классов xmlresder
  4.  описание созданного файла xml
  5.  назначение схемы xml
  6.  XML  не является заменой HTML. XML предназначен для структурированного хранения и описания данных, а HTML для их форматирования и отображения. XML не имеет готовых тэгов, они создаются разработчиком. В отличие от HTML XML тэги всегда должны быть закрыты, все атрибуты должны быть написаны на нижнем регистре, а их значения заключены в двойные кавычки. XML требует жесткого соблюдения последовательности вложенности одних элементов в другие.
  7.  XML позволяет отделить данные на HTML страницах в отдельные файлы XML. XML позволяет обмениваться данными между различными системами через сеть. Благодаря XML различные системы могут понимать друг друга.  XML используется для создания новых языков.  XML применяется во многих технологиях (XLink, XSQL и др.), применяемых в разных сферах, а также в конфигурационных файлах.
  8.  Класс XmlReader (System.Xml) представляет средство чтения, обеспечивающее быстрый прямой доступ к данным XML. Для чтения данных используется метод Read, который считывает следующий узел и возвращает false в случае, если данных больше нет. С помощью свойства Value можно получить текстовое значение текущего узла. Перечисление типа XmlNodeType определяет тип узла xml файла.
  9.  Созданный xml документ имеет сложный элемент books, который имеет вложенные элементы book для описания книги. Book имеет вложенные элементы title, author, price для описания реквизитов книги. Элемент book имеет атрибуты genre, publicationdate, ISBN для описания жанра книги, года издания и кода ISBN. Элемент author имеет два вложенных элемента first-name и last-name для описания имени и фамилии автора книги.
  10.  Xml-схемы используются для описания структуры документа xml. Xml-схема определяет, какие элементы могут использоваться в xml-документе, в какой последовательности вложены элементы друг в друга, число дочерних элементов, описывает типы данных используемые в элементах,  определяет атрибуты элементов, определяет может ли элемент содержать текст, другие элементы или должен оставаться пустым. С помощью xml-схем производится проверка xml-документа.

Веб-служба

Веб-служба, веб-сервис (англ. web service) — программная система, идентифицируемая строкой URI, чьи общедоступные интерфейсы определены на языке XML. Описание этой программной системы может быть найдено другими программными системами, которые могут взаимодействовать с ней согласно этому описанию посредством сообщений, основанных на XML, и передаваемых с помощью интернет-протоколов. Веб-служба является единицей модульности при использовании сервис-ориентированной архитектуры приложения.

Используемые стандарты

  •  XML: Расширяемый язык разметки, предназначенный для хранения и передачи структурированных данных;
  •  SOAP: Протокол обмена сообщениями на базе XML;
  •  WSDL: Язык описания внешних интерфейсов веб-службы на базе XML;
  •  UDDI: Универсальный интерфейс распознавания, описания и интеграции (Universal Discovery, Description and Integration). Каталог веб-служб и сведений о компаниях, предоставляющих веб-службы во всеобщее пользование или конкретным компаниям.

Достоинства веб-служб

  •  Веб-службы обеспечивают взаимодействие программных систем независимо от платформы
  •  Веб-службы основаны на базе открытых стандартов и протоколов. Благодаря использованию XML достигается простота разработки и отладки веб-служб
  •  Использование интернет-протокола обеспечивает HTTP-взаимодействие программных систем через межсетевой экран

Недостатки веб-служб

Меньшая производительность и больший размер сетевого трафика по сравнению с технологиями RMI, CORBA, DCOM за счёт использования текстовых XML-сообщений. Однако на некоторых веб-серверах возможна настройка сжатия сетевого трафика.

Для создания службы надо в среде MS Web Developer создать проект типа Пустое веб-приложение. Далее добавить в решение элемент Веб-служба. Далее добавить необходимые методы, собрать проект (будет получена dll службы).

Для того чтобы выложить службу на сервер надо:

  1.  Выполнить команду Проект Пакет/Параметры публикации
  2.  Выбрать закладку Веб
  3.  Установить переключатель в Использовать локальный веб-сервер
  4.  Прописать имя виртуального каталога
  5.  Нажать на кнопку Создать виртуальный каталог

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

  1.  Выполнить команду контекстного меню решения Добавить ссылку на службу.
  2.  Нажать кнопку Дополнительно.
  3.  Нажать кнопку Добавить веб-ссылку.
  4.  Выбрать web-службы на локальном компьютере
  5.  Выбрать нужную опубликованную службу
  6.  Указать имя ссылки на службу
  7.  Нажать Добавить ссылку
  8.  Создать объект класса службы посредством имени созданной ссылки.
  9.  Использовать методы службы

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

  1.  Выполнить команду контекстного меню решения Добавить ссылку на службу.
  2.  Нажать кнопку Дополнительно.
  3.  Нажать кнопку Добавить веб-ссылку.
  4.  Прописать целевую службу в поле URL вида http://имя компьютера/виртуальный каталог/имя файла службы (.asmx).
  5.  Указать имя ссылки на службу
  6.  Нажать Добавить ссылку
  7.  Создать объект класса службы посредством имени созданной ссылки.
  8.  Использовать методы службы

NET Romoting

.NET Remoting — компонент, созданный компанией Microsoft. API для межпроцессного взаимодействия. Реализация от Microsoft протокола SOAP (веб-сервисы). Выпущен в 2002 году вместе с версией 1.0 пакета .NET Framework. Это одна из серии технологий от Microsoft, начатой в 1990 году первой версией OLE для 16-разрядной Windows. Промежуточными шагами в разработке подобных технологий были COM, выпущенная в 1993 году и доработанная в 1995 году под названием COM-95, DCOM, выпущенная в 1997 году (и переименованная в ActiveX), и COM+ с её Microsoft Transaction Server (MTS), выпущенная в 2000 году.[1] В данный момент на смену .NET Remoting пришёл WCF, являющийся частью .NET Framework 3.0.

Так же, как и все члены данного семейства и подобные технологии, например CORBA и RMI, функция .NET Remoting заключается в следующем: при поддержке со стороны инфраструктуры .NET Remoting, клиентский процесс отправляет сообщение серверному процессу и получает ответ.[2][3]

Краткий обзор

.NET Remoting позволяет приложению создать объект (именуемый remotable object) доступный в рамках remoting boundaries и расположенный в домене приложения внутри одного процесса, другом процессе, исполняющемся на этом компьютере, или даже на другом компьютере, соединённом сетью.[4] Процесс .NET Remoting содержит приёмник запросов к объекту в домене серверного приложения. На стороне клиента любые запросы к удалённому объекту направляются средой выполнения .NET Remoting через объекты Channel, являющиеся обёрткой для средств транспортного уровня, таких как потоки TCP, потоки HTTP и именованные каналы. В результате, запросы к удаленным объектам для клиентского кода ничем не отличаются от локальных вызовов, а созданием экземпляра нужного Channel-объекта, приложение .NET Remoting можно без перекомпиляции перевести на другой коммуникационный протокол. Среда выполнения сама по себе выполняет этапы сериализации и маршалинга объектов в среде между клиентским и серверным доменами приложения.[4]

.NET Remoting делает ссылку на удалённый (remotable) объект доступной клиентскому приложению, которое затем направляет запросы к экземпляру удалённого объекта так, как если бы это был локальный объект.[4] Однако, фактическое исполнение кода происходит на серверной стороне. Удалённый объект имеет идентификаторы в форме URL активации. В зависимости от конфигурации серверного процесса, экземпляр удаленного объекта создаётся при подключении по данным URL,[5] в момент создания ссылки на удалённый объект или в момент первого обращения к удалённому объекту. Прослушивающий приёмник (listener) для объекта создаётся исполняющей средой .NET Remoting в момент, когда сервер регистрирует канал, который будет использоваться для подключения к удалённому объекту. На клиентской стороне инфраструктура .NET Remoting создаёт объект-заместитель (proxy), который является псевдоэкземпляром замещаемого объекта. Он не реализует функциональность удалённого объекта, но предоставляет похожий интерфейс, перенаправляя все запросы серверному объекту и возвращая результаты от него клиенту . Как следствие, инфраструктуре .NET Remoting для создания заместителя нужно обладать метаданными, описывающими публичный интерфейс удалённого объекта. Это можно обеспечить статическим связыванием со сборкой, содержащей метаданные, во время компиляции или динамическим получением метаданных в виде WSDL или проприетарного формата, разработанного фирмой Microsoft.

В процессе выполнения запросов любые вызовы методов, направленные объекту, включая идентификатор метода и любые передаваемые параметры, сериализуются в байтовый поток и передаются посредством канала связи, реализованного для конкретного протокола, принимающему прокси-объекту на серверной стороне («маршализируются»). Передача происходит путём записи данных в транспортный ввод канала.[5] На серверной стороне прокси читает поток данных из вывода канала и выполняет вызов удалённого компонента от лица клиента. Результаты сериализуются и передаются через канал клиенту, где прокси читает результат и передаёт его вызывающему приложению.[5] Если удалённому объекту нужно обеспечить обратный вызов (callback) клиентскому объекту, клиентский объект обратного вызова должен быть помечен как remotable, а инфраструктура .NET Remoting должна быть сконфигурирована на создание прослушивателя для него.[5] Сервер может подключиться к нему по другому каналу, или по уже существующему если соединение, на котором он основан, поддерживает двунаправленный обмен данными.[5] Канал может быть составлен из нескольких канальных объектов, возможно, даже с разными транспортными механизмами. Таким образом, система, основанная на .NET Remoting, может состоять из нескольких подсистем, связанных подключёнными друг к другу гетерогенными сетями, включая Интернет.[5]

WCF

Если в двух словах, то WCF (a.k.a. Windows Communication Foundation) — это очередной фреймворк для построения распределенных приложений и межпроцессного взаимодействия, который является логическим развитием предыдущих подобных технологий компании Майкрософт, в частности Веб-сервисов, .Net Remoting и DCOM. И если предшественники были заточены на выполнение какого-то конкретного круга задач, то WCF - это скорее мультипарадигменная технология, вобравшая в себе все лучшее от своих предшественников, добавив при этом, конечно же, кое-каких собственных проблем.

Существенным отличием WCF от .Net Remoting является то, что WCF — это, прежде всего, технология для построения сервис-ориентированной архитектуры приложений (SOA — Service-Oriented Architecture), что позволяет абстрагироваться от конкретной технологи, на которой этот сервис реализован и пользоваться им из других приложений, написанных на любой другой платформе, языке, технологии; главное, чтобы реализация клиента отвечала определенным правилам. Кроме того, логика самого сервиса и его реализация полностью отделена от коммуникационной составляющей, и мы можем декларативно изменять способ взаимодействия с сервисом путем изменения конфигурационного файла. Мы можем изменить протокол взаимодействия, адрес, настроить максимальное количество подключений, ограничить размер пакетов и тайм-аут подключения к сервису, тайм-аут выполнения операции, надежность доставки и многое другое.

Нужно отметить, что подобное декларативная настройка присутствовала и в .Net Remoting, там мы тоже могли без перекомпиляции приложения изменить протокол взаимодействия и многие другие параметры. Главное отличие WCF от своего главного предшественника (да, я все о том же .Net Remoting) заключается в том, что WCF «не выносит свой сор из избы» и не показывает наружу никакие платформенно зависимые детали реализации сервиса, такие как сборки, конкретные классы сервиса, типы аргументов или исключения. Вместо этого сервис представляет собой группу операций, определенных в некотором интерфейсе, которые получают некоторые абстрактные входные/выходные параметры; все это дело описывается с помощью WSDL (Web Service Description Language) и может быть выставлено наружу через, так называемые mex-endpoints (Metadata Exchange Endpoints). Это позволяет получить «метаданные» сервиса подключившись к этому интерфейсу, получить описание сервиса и всех его операций и сгенерировать соответствующий прокси класс для заданного языка или платформы. Именно это позволяет написать сервис с помощью WCF, а использовать его из Java/Python/Ruby и чего угодно еще.

Именно эта сервис-ориентированность делает WCF во многих вопросах не похожей на обыкновенный механизм RPC, привычный многим по использованию .Net Remoting. Поскольку все описание сервиса мы можем получить через WSDL (включая типы, используемые для параметров метода), в WCF существует такое понятие как эквивалентность типов: два типа являются эквивалентными и могут использоваться в одной и той же операции сервиса, если они содержат одинаковое представление на уровне канала передачи данных. Таким образом, если речь идет о взаимодействии WCF-WCF, то на стороне клиента мы можем использовать тип Point с двумя свойствами X и Y, а на стороне сервиса использовать другой тип, определенный в другой сборке, с аналогичным именем, и аналогичными именами и типами свойств. При этом мы можем спокойно передавать на стороне клиента экземпляр одного типа, а на стороне сервиса получить экземпляр другого типа (и это совершенно естественно, помните, наш клиент и сервис могут быть написаны на разных платформах, так что, здесь главное, чтобы сервис и клиент могли понимать друг друга на уровне сообщений).

Прозрачность местоположения

В девяностых и начале двухтысячных годов была безумная мысль создать инфраструктуру, которая бы скрыла тот факт, что объект является удаленным. Так в DCOM и .Net Remoting было такое понятие как «прозрачность местоположения» (location transparency), которое означало, что вам, как разработчику, не стоит задумываться над тем, является ли объект, с которым вы работаете, локальным или удаленным. Поэтому при создании экземпляра объекта мы не знали, является ли этот объект прокси к удаленному объекту или он полностью «сидит» в памяти нашего процесса (на самом деле в .Net Remoting это можно было узнать, вызвав RemotingServices.IsTransparentProxy, но думаю, что идея понятна). Тогда это казалось отличной идеей, но практика показала, что пользовательский код должен четко знать, что он работает с удаленным объектом, поскольку это упрощает разделение коммуникационных ошибок от ошибок бизнес-логики, генерируемых сервисом или клиентом. WCF не скрывает тот факт, что вы работаете с прокси, и вы можете спокойно отделить коммуникационные ошибки (Communication Exceptions), от ошибок бизнес-логики, произошедших в сервисе/клиенте. Все некоммуникационные ошибки также являются частью протокола взаимодействия между клиентом и сервисом (такая себе спецификация исключений), они четко описываются в виде Fault Contract-ов и также «выставляются наружу» через WSDL (ведь мы можем работать с платформой, у которой исключений может не быть вообще).

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

Очень важным являются различия использования интерфейсов обратного вызова с протоколом TCP. Все дело в том, что хотя протокол TCP по своей природе является двусторонним (клиент и сервер могут отправлять данные друг другу независимо), этот факт ремоутингом не поддерживается; ремоутинг для обратных вызовов устанавливает еще одно TCP соединение, а это значит, что вы не сможете использовать клиентов, расположенным за NAT-ом. Еще одной проблемой ремоутинга является то, что для создания двусторонней связи вам нужно отнаследовать класс клиента от MarshalByRefObject-а (это же условие справедливо и для сервера) и явно подписаться на события сервера или передать себя же в качестве параметра в одном из методов сервера, чтобы он вас «запомнил». Но проблема в том, что ремоутинг «втихую» старается восстановить соединение от клиента к серверу, в случае потери связи, однако после потери связи необходимо восстановить «обратную» связь от сервера к клиенту. В общем, это всегда вызывало массу головной боли, большая часть из которой ушла при использовании WCF (опять таки, благодаря четкой сигнализации инфраструктурой WCF о коммуникационных ошибках между клиентом и сервисом).

Использование WCF в виде RPC

WCF – это отличная технология для построения сервис-ориентированных приложений, что накладывает ряд ограничений на ее использование. Так, например, WCF (точнее сервисы) не поддерживают перегрузку методов (вы не можете использовать два метода с одинаковыми именами, но разным набором параметров), а также вы не можете использовать полиморфизм: нельзя определить метод сервиса, который принимает (или возвращает) переменную базового типа и передавать в него (или возвращать из него) экземпляры производных типов. Обойти это ограничение можно указав перечень «известных типов» (Known Types) (*), которые также могут быть получены через WSDL. Все это делает WCF не лучшим кандидатом, если вам нужен старый добрый RPC, к которому вы могли привыкнуть при работе с ремоутингом.

Проблемы с известными типами связаны с тем, что сериализатор, используемый в WCF по умолчанию (он называется DataContractSerializer) не добавляет в выходной поток информации о CLR типе и это естественно, поскольку «с другой стороны» может находиться система, которая об этой самой CLR не имеет ни малейшего понятия. Однако WCF содержит и другой тип сериализатора, NetDataContractSerializer, который является полной копией стандартного сериализатора, однако помимо всего прочего он добавляет полное имя типа в сериализованный поток байтов. Это сводит на нет всю сервис-ориентированную кросс-платформенность, но позволяет использовать любые сериализируемые классы в виде аргументов и возвращаемых значений и не заботиться ни о каких известных типах. (Если типы аргументов и возвращаемых значений использовались в ремоутинге и были помечены атрибутом Serializable, то их можно будет использовать и в WCF без изменений, так что переход от одной технологии к другой будет весьма безболезненным). Это позволяет использовать WCF в виде RPC, причем сменить сериализатор можно, опять таки декларативно, из конфигурационного файла приложения (**).

Выводы

Что можно сказать в заключении? Если на платформе .Net вам понадобиться некоторый вид распределенного или межпроцессного взаимодействия, то первое на что стоит посмотреть — это WCF. Даже из коробки эта штука поддерживает большую часть функционала, который вам может понадобиться, а если же этого не произойдет, то вы всегда сможете его расширить по мере необходимости.

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

Windows Communication Foundation (WCF) — программный фреймворк, используемый для обмена данными между приложениями и входящий в состав .NET Framework. До своего выпуска в декабре 2006 года в составе .NET Framework 3.0, WCF был известен под кодовым именем Indigo.

WCF делает возможным построение безопасных и надёжных транзакционных систем через упрощённую унифицированную программную модель межплатформенного взаимодействия. Комбинируя функциональность существующих технологий .NET по разработке распределённых приложений (ASP.NET XML Web Services — ASMX, WSE 3.0, .NET Remoting, .NET Enterprise Services и System.Messaging), WCF предоставляет единую инфраструктуру разработки, при умелом применении повышающую производительность и снижающую затраты на создание безопасных, надёжных и транзакционных Web-служб нового поколения. Заложенные в неё принципы интероперабельности позволяют организовать работу с другими платформами, для чего используются технологии взаимодействия платформ, например WSIT [1] разрабатываемые на базе открытого исходного кода.

Хостинг

Класс службы WCF не может существовать самостоятельно. Каждая служба WCF должна находиться под управлением некоторого процесса Windows, называемого хостовым процессом. Существует различные варианты хостинга:

  •  Автохостинг
  •  Хостинг в одном из Windows service
  •  Хостинг WAS (Windows Activation Services) (англ.)
  •  Хостинг IIS (Internet Information Server)

WPF

Приложения WPF строятся на основе языка XAML и языка реализации логики (C#). XAML основан на XML. На языке XAML реализуется описание пользовательского интерфейса приложения. XAML детально описывает свойства компонентов, расположенных на форме в формате XML. При реализации логики приложения могут использоваться следующие языки программирования: VB, C#. Среда разработки Visual Studio предоставляет всю мощь платформы .NET для разработки. В результате построения приложения будет получена динамическая библиотека (dll).

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

Windows Presentation Foundation (WPF, кодовое название — Avalon) — система для построения клиентских приложений Windows с визуально привлекательными возможностями взаимодействия с пользователем, графическая (презентационная) подсистема в составе .NET Framework (начиная с версии 3.0), имеющая прямое отношение к XAML.

WPF вместе с .NET Framework 3.0 предустановлена в Windows Vista и Windows 7(.NET Framework 3.5 SP1). С помощью WPF можно создавать широкий спектр как автономных, так и запускаемых в браузере приложений[1].

Особенности технологии

В основе WPF лежит векторная система визуализации, не зависящая от разрешения и созданная с расчетом на возможности современного графического оборудования. WPF предоставляет средства для создания визуального интерфейса, включая Язык XAML (Extensible Application Markup Language), элементы управления, привязку данных, макеты, двухмерную и трехмерную графику, анимацию, стили, шаблоны, документы, текст, мультимедиа и оформление [1].

Графической технологией, лежащей в основе WPF является DirectX, в отличие от Windows Forms, где используется GDI/GDI+[2]. Производительность WPF выше, чем у GDI+ за счёт использования аппаратного ускорения графики через DirectX.

Также существует урезанная версия CLR, называющаяся WPF/E, она же известна как Silverlight.

Использование разметки XAML

XAML представляет собой XML, в котором фактически реализованы классы .NET Framework. Так же реализована модель разделения кода и дизайна, позволяющая кооперироваться программисту и дизайнеру. Кроме того, есть встроенная поддержка стилей элементов, а сами элементы легко разделить на элементы управления второго уровня, которые в свою очередь разлагаются до уровня векторных фигур и свойств/действий. Это позволяет легко задать стиль для любого элемента, например, того же Button (кнопка).

Средства разработки

Для работы с WPF требуется любой .NET-совместимый язык. В этот список входит множество языков: C#, VB, C++, Ruby, Python, Delphi (Prism), Lua и многие другие. Для полноценной работы может быть использована как Visual Studio, так и Expression Blend. Впрочем, первая ориентирована на программирование, а вторая — на дизайн и позволяет делать многие вещи, не прибегая к ручному редактированию XAML. Примеры этому — анимация, стилизация, состояния, создание элементов управления и так далее.

Windows Presentation Foundation (WPF) ― это система следующего поколения для построения клиентских приложений Windows с визуально привлекательными возможностями взаимодействия с пользователем. WPFМожно создавать широкий спектр как автономных, так и приложений, размещенных в веб-обозревателе. Например, Contoso здравоохранение образца приложения, показанное на следующем рисунке. 

В основе WPF лежит векторная система визуализации, не зависящая от разрешения и созданная с расчетом на возможности современного графического оборудования. WPF расширяет базовую систему полным набором функций разработки приложений, в том числе Extensible Application Markup Language (XAML), элементами управления, привязкой данных, макетом, 2-D- и 3-D-графикой, анимацией, стилями, шаблонами, документами, мультимедиа, текстом и оформлением. WPF входит в состав Microsoft .NET Framework и позволяет создавать приложения, включающие другие элементы библиотеки классов .NET Framework.

XAML (англ. eXtensible Application Markup Language — расширяемый язык разметки приложений; произносится [зэмл] или [замл]) — основанный на XML язык разметки для декларативного программирования приложений, разработанный Microsoft.

Модель приложений Vista включает объект Application. Его набор свойств, методов и событий позволяет объединить веб-документы в связанное приложение. Объект Application контролирует выполнение программы и генерирует события для пользовательского кода. Документы приложения пишутся на XAML. Впрочем, с помощью XAML описывается, прежде всего, пользовательский интерфейс. Логика приложения по-прежнему управляется процедурным кодом (С#, VB и т. д.). XAML может использоваться как для браузер-базированных приложений, так и для локальных настольных приложений.

XAML включает основные четыре категории элементов: панели, элементы управления, элементы, связанные с документом и графические фигуры. Заявлено 7 классов панелей, которые задают принципы отображения вложенных в них элементов. Для задания положения элементов относительно границ родительской панели используются атрибуты на манер свойств в объектно-ориентированных языках. Подобный синтаксис не очень вяжется с рекомендациями CSS, но будет привычен программистам настольных приложений.

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

Краткий обзор

XAML широко используется в .NET Framework 3.0, в особенности в Windows Presentation Foundation (WPF) и Windows Workflow Foundation (WF). В WPF XAML используется как язык разметки пользовательского интерфейса, для определения элементов пользовательского интерфейса, привязки данных, поддержки событий и др. свойств. В WF, при помощи XAML можно определять последовательности выполняемых действий (workflows).

XAML файлы можно создавать и редактировать при помощи инструментов визуального конструирования, таких как: Microsoft Expression Blend, Microsoft Visual Studio, WPF visual designer. Также, их можно создавать при помощи стандартного текстового редактора, редактора кода такого как: XAMLPad, или графического редактора, такого как Vectropy.

Все созданное или реализованное в XAML может быть выражено при помощи более традиционных .NET языков, таких как: C# или Visual Basic.NET. Однако, ключевым аспектом технологии является уменьшение сложности используемых для обработки XAML инструментов, так как XAML основан на XML. В результате чего, появляется множество продуктов, создающих основанные на XAML приложения. Поскольку XAML базируется на XML, у разработчиков и дизайнеров появилась возможность одновременно работать над содержимым без необходимости компиляции.

Silverlight

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

Microsoft Silverlight — это программная платформа, включающая в себя плагин для браузера, который позволяет запускать приложения, содержащие анимацию, векторную графику и аудио-видео ролики, что характерно для RIA (Rich Internet application). Версия 2.0, выпущенная в октябре 2008, добавила поддержку для языков .NET[1][2] и интеграцию с IDE. 10 июля 2009 в 18:00 по московскому времени Microsoft выпустила Silverlight 3 и Microsoft Expression Studio 3, в Интернете велась прямая трансляция мероприятия на сайте See the Light.

Silverlight реализована для ОС Windows 2000[3], Windows XP, Windows Server 2003, Windows Vista, Windows 7, Mac OS X 10.4, Mac OS X 10.5, Mac OS X 10.6 и браузеров Internet Explorer 6.0/7.0/8.0, Opera 9.50, Mozilla Firefox 1.5/2.0/3, Safari 3.1, Google Chrome 3.0 [4]Silverlight включена в Windows Phone 7[5], а в будущем также планируется поддержка мобильных устройств, начиная с Windows Mobile 6 и Symbian (Series 60), и, возможно, других платформ[6].

Silverlight предоставляет графическую систему, схожую с Windows Presentation Foundation, и объединяет мультимедиа, графику, анимацию и интерактивность в одной программной платформе. Он был разработан, чтобы работать с XAML и с языками Microsoft .NET. XAML используется для разметки страниц, использующих векторную графику и анимацию. Текст, содержащийся в приложениях Silverlight, доступен для поисковых систем, так как он не компилируется, а доступен в виде XAML. Silverlight также можно использовать для того, чтобы создавать виджеты для Windows Sidebar в Windows Vista[7].

Silverlight может воспроизводить WMV, WMA и MP3[8] для всех поддерживаемых браузеров, не требуя при этом дополнительных компонентов, таких как Windows Media Player. Так как Windows Media Video 9 является реализацией стандарта SMPTE VC-1, Silverlight поддерживает видео VC-1, только внутри контейнера ASF. Кроме того, лицензионное соглашение говорит, что VC-1 разрешено использовать только в личных, некоммерческих целях («personal and non-commercial use of a consumer»)[9]. Silverlight позволяет динамически загружать XML и использовать DOM для взаимодействия с ним так же, как это делается в Ajax. Silverlight содержит объект Downloader, благодаря которому можно скачивать скрипты, медиа файлы и т. д., если это необходимо приложению[10]. Начиная с версии 2.0, логика программы может быть описана в любом из языков .NET, включая динамические языки программирования такие как Iron Ruby и Iron Python, которые в свою очередь исполняются в DLR (Dynamic Language Runtime), а не CLR (Common Language Runtime).

История

Silverlight 1.0 Beta

Первая бета-версия Silverlight была выпущена в декабре 2006 года. Microsoft рассчитывала выпустить стабильную версию в середине 2007 года. Ходили слухи что в Microsoft планируется частичное открытие исходного кода Silverlight[11], однако они были опровергнуты Сэмом Рамджи (Sam Ramji) директором Microsoft по стратегии технологической платформы[12]. Тем не менее часть Dynamic Language Runtime включённая в Silverlight, доступна на портале Microsoft для хостинга открытых и проприетарных проектов CodePlex[13] под Apache 2.

Silverlight 1.0

 Архитектура Silverlight 1.0 приложения

Silverlight v.1.0 является подключаемым модулем обозревателя для обработки XAML плюс кодеки, для воспроизведения мультимедийного содержимого в форматах WMV, WMA и MP3. Он представляет обозревателю внутреннюю модель DOM, управляемую из JavaScript кода. Язык XAML основан на XML, поэтому документ, определяющий загружаемый клиенту пользовательский интерфейс — текстовый и вполне пригоден для индексирования поисковыми системами. Используя представленную модель DOM, JavaScript может динамически обновлять содержимое Silverlight, аналогично DHTML. Также можно вызывать методы управления презентацией (запуска анимации или приостановки воспроизведения видео, например).

Silverlight приложение начинается с вызова объекта Silverlight из HTML страницы, загружающего XAML файл. XAML файл содержит объект Canvas, выступающий подложкой для других элементов. Объекты XAML способны генерировать события, перехватываемые из JavaScript.

В комплекте к Visual Studio 2005 SP1 прилагаются «Silverlight Tools for VS 2005».

Версия для других платформ

Участники проекта Mono 16 мая 2008 года выпустили реализацию плагина Silverlight, работающую на других платформах[14][15] (таких, как Linux) — Moonlight, однако ни открытым, ни свободным ПО она считаться не может, так как разрешение на использование патентов предоставляется только получателям кода от Novell, и только для создания плагинов[16]. Moonlight 2.0 находится в состоянии Preview 3[17]. Впрочем, Microsoft поддерживает создание альтернативных реализаций Silverlight, этому может свидетельствовать договор между Microsoft и Novell. Однако, заинтересованность сообщества в реализации спецификаций Silverlight не слишком высока, поэтому Moonlight до сих пор не поддерживает всех возможностей Silverlight 2.

Silverlight 2.0

Архитектура SilverLight 2

Версия Silverlight 2.0 была выпущена 14 октября 2008 года и включала в себя подмножество библиотек .NET Framework.

Кроме этого, доступны для скачивания Microsoft Silverlight Tools for Visual Studio 2008, которые включают в себя:

  •  Шаблоны для проектов Visual Basic и C#
  •  Интеллисенс и генераторы кода для XAML
  •  Отладку приложений Silverlight
  •  Поддержку Web reference
  •  Интеграцию с Expression Blend

Silverlight 3.0

18 марта 2009 года на конференции MIX09 в Лас-Вегасе Microsoft продемонстрировала бета-версию. 10 июля 2009 года в ходе мероприятия See the Light Microsoft объявила об официальном выпуске RTM версии. В настоящее время последняя доступна для загрузки на сайте Microsoft.

Среди особенностей новой версии:

  •  Поддержка устройств с multitouch-интерфейсом
  •  Поддержка форматов H.264, AAC и MPEG-4
  •  Поддержка аппаратного ускорения при работе с трехмерной графикой. Это позволяет задействовать потенциал графического процессора и снизить нагрузку на центральный процессор

В целом Silverlight представляет собой урезанный вариант Windows Presentation Foundation, не требующий наличия .NET Framework[18]. При этом возможности приложений Silverlight почти безграничны, весь недостающий функционал можно реализовать в виде модулей, используя Silverlight SDK. Любой желающий может бесплатно разрабатывать приложения на Silverlight/WPF. Для этого не обязательно покупать Visual Studio и Microsoft Expression — Express-версии для некоммерческого использования доступны на сайте Microsoft.

Silverlight 4.0

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


 

А также другие работы, которые могут Вас заинтересовать

41174. ПОВЕРОЧНЫЙ РАСЧЕТ РЕКУПЕРАТИВНЫХ АППАРАТОВ 815 KB
  Во времени изменяется как температура насадки так и температура теплоносителей. температура поверхности насадки в начале периода нагрева; температура поверхности насадки в конце периода нагрева. Изменение температуры по толщине насадки характеризуется таким графиком Рассмотрим некоторый фиксированный участок на поверхности насадки и покажем для него изменение температур поверхности насадки и других температур во времени. температура горячего теплоносителя период нагрева; средняя температура горячего теплоносителя за период...
41175. Культура речи как часть культуры в целом 101.5 KB
  Культура речи является частью культуры общения и культуры в целом потому что культура речи обладает теми же свойствами признаками что и культура в целом и подчиняется законам культуры. Культура речи – это область лингвистики которая изучает осознанную речевую деятельность по созданию целенаправленной и целесообразной этически корректной эффективной речи в заданных или смоделированных условиях общения.Культура речи как часть культуры в целом и культуры общения в частности – это речь данного общества и конкретного человека которая...
41176. ПРИЗНАНИЕ И ОЦЕНКА ОСНОВНЫХ СРЕДСТВ 92 KB
  Порядок признания оценки основных средств начисления их амортизации списания с баланса и раскрытие информации о них в финансовой отчетности определяется МСБУ 16 Основные средства. Согласно МСБУ 16 основные средства Property Plnt nd Equiрment это материальные активы которые предприятие удерживает с целью использования их в процессе производства или поставки товаров и предоставления услуг сдачи в аренду другим лицам или для административных целей и которые как ожидается будут использоваться в...
41177. Электрические цепи периодического синусоидального тока и напряжения 113 KB
  Электрические цепи периодического синусоидального тока и напряжения. Если форма кривой переменного тока и напряжения повторяется через равные промежутки времени то их называют периодическими. Наименьшее время через которое повторяется форма переменного тока и напряжения называют периодом обозначают Т и измеряют в с. Число периодов Т в 1 секунду называют частотой f переменного тока и напряжения и дана размерность герц Гц.
41178. Технологические процессы обслуживания аэродромов 69.5 KB
  Классификация и общая характеристика аэродромных покрытий. Влияние различных факторов на состояние аеродромных покрытий. Оценка эксплуатационной пригодности аэродромных покрытий. Маркировка аэродромных покрытий.
41179. Гидромеханический расчет теплообменных аппаратов 361 KB
  При течении жидкости через теплообменный аппарат возникает гидравлическое сопротивление и давление на входе в аппарат всегда больше чем давление на выходе. Подбор нагнетателя осуществляется по расходу жидкости и гидравлическому сопротивлению теплообменника . Мощность на валу нагнетателя определяется по формуле 1554 где V объемный расход жидкости [м3 с]; ΔР – гидродинамическое сопротивление; η – к. а Гидравлическое сопротивление трения имеет место только когда реализуется безотрывное течение жидкости в канале.
41180. Маркетинговые решения по коммуникации 3.22 MB
  Оценка экономической эффективности рекламы. Оценка коммуникативной эффективности рекламы. Характерной чертой современной рекламы является приобретение ею новой роли в результате вовлечения в процесс управления производственносбытовой деятельности промышленных и сервисных фирм. Суть новой рекламы в том что она стала неотъемлемой и активной частью комплексной системы маркетинга и эффективность рекламноинформационной деятельности производителя и ее соответствие новым требованиям мирового рынка4.
41181. Электрические цепи периодического синусоидального тока и напряжения 154 KB
  Электрические цепи периодического синусоидального тока и напряжениячасть Как и на индуктивности на емкости активная мощность PС=0 а реактивная QС= UI = I2XС Если токи и напряжения на R L и С изобразить в виде векторов то можно видеть: R = 0 L = 90 С = –90 Наша задача – рассчитать электрическую цепь т. определить токи в ветвях и напряжения между узлами и на элементах при действии периодических синусоидальных токов и напряжений. Используя тригонометрию можно видеть: ; где назвали – полное сопротивление Если изобразить...
41182. Внутренние характеристики процесса пузырькового кипения 718 KB
  Внутренние характеристики процесса пузырькового кипения Возникающие в центрах парообразования зародыши пара могут быть жизнеспособными и нежизнеспособными. Как установлено на основе опытных данных для процессов пузырькового кипения существенной является величина которая имеет размерность скорости м с и представляет собой среднюю скорость роста паровых пузырьков Данная величина остается постоянной в широком диапазоне изменения тепловых нагрузок. Величины являются внутренними характеристиками процесса...