Agenda
.NET Framework & Visual Studio Roadmap
Visual Studio 2008 – цели создания
Что нового и зачем
.NET Framework 3.5
.NET Framework 3.0 + SP1
.NET Framework 2.0 + SP1
Версии...
Visual Studio 2008
2006 2007 2008
Осн
овн
ые
рел
изы
Допол
нен
ия
• VS Extensions for WF
• VS Extensions for
WCF/WPF CTP
ASP.NET
AJAX 1.0
SQL Server 2008
ADO.NET Entity
Framework
•VS 2008 Beta 2
•.NET Framework 3.5
Beta 2
3.0RTM
3.5 RTM
Windows Server 2008
Fresh Install
• .NET Framework 2.0 w/SP1
App Server Role
• .NET Framework 3.0 w/SP1
Windows Update
• .NET Framework 3.5
Следующая версия Windows Server
Что включает Windows Server 2008?
Visual Studio 2008 цели создания
Лучший набор инструментов для Windows Server 2008, Windows Vista & Microsoft Office 2007 Поддерживает .NET Framework 3.5
Поддерживает Office 2007 включая ClickOnce и VSTO
MFC поддержка для Vista common controls
Улучшения для Web Developers Сильно измененный HTML / CSS designer
Интегрированная поддержка AJAX и JavaScript
Языковые преимущества Поддержка .NET Framework multi-targeting
Новые версии VB / C#
Вокруг VS 2008 & .NET 3.5
Lifecycle Tools,
.NET Framework,
& languages
Сервисы
Windows
приложения
Web приложения
Office приложения
Mobile
Visual Studio улучшения
Multi-targeting 3 версии .Net Framework и 1 инструмент - Visual Studio 2008
Поддерживаются версии .Net Framework 2.0, 3.0 и 3.5
Включаются только возможности выбранного Framework Toolbox, Project types, References, Intellisense, …
Перейти на Visual Studio 2008 легко
Unit Testing Доступно во всех редакциях Visual Studio Professional
3x-уровневая архитектура
Представление
Бизнес-логика
Доступ к данным
Компоненты UI
Компоненты обработки UI
Интерфейсы сервисов
Бизнес
потоки
Бизнес
компоненты
Бизнес
сущности
Компоненты
доступа к даннымАгенты сервисов
Бе
зо
па
сн
ос
ть
Оп
ер
ац
ио
нн
ое у
пр
ав
лен
ие
Вза
им
од
ей
ств
ие
Источники данных Сервисы
Данные
Работа с данными
Всегда было актуально
Форматы менялись, но потребности сохранялись
USE empl
REPLACE ALL salary WITH (salary * 1.1) FOR
supervises > 0
LIST ALL fname, lname, salary FOR Supervises > 0
Data Access
(DBASE 1980s)
• Работа с данными в основе системы
• Были ограничения, но пользы тоже было много
SqlCommand cmd = new SqlCommand(
@"SELECT fname, lname, salaryFROM Empl
WHERE supervises > @p0"
);
cmd.Parameters.AddWithValue("@po", 0);
SqlConnection c = new SqlConnection(…);
c.Open(); DataReader people = c.Execute(cmd);
while (people.Read()) {
string fname = (string) people[“fname”];
string lname = (string) people[“lname”];double salary = (double) people[“salary”];
}dr.Close();
Data Access APIs
(конец 1990-x начало 2000-x)
Object / Relational Mapping
(последние годы)public class Employee {
public string FirstName;public string LastName;
public double Salaray;
}
IList employees = session.CreateCriteria(typeof(Employee)) .Add(Expression.Gt(“supervises", 0)
.List();
foreach(Employee employee in employees) {
string fname = employee.FirstName;string lname = employee.LastName;
double salary = employee.Salary;
}
• Отображение реляционных данных на объекты
• Интеграция бизнес правил и проверок
Но проблемы остались…
Что делать с нереляционными данными? XML, RSS, Web Services, REST, AD, Files, и т.д.
Как работать с объектами в памяти?
Как трансформировать данные?
Как получить понятный типизированный код одновременно с динамическими запросами?
Language INtegrated Query (LINQ) Новая программная модель доступа к данным, которая
интегрирует поддержку запросов непосредственно в язык программирования .NET
Призвана упростить работу с данными
Что получаем Работаем с разными по представлению данными одинаково
Взаимодействуем с данными, как с объектами
Лучшая интеграция с языками программирования
Улучшенная производительность труда с IntelliSense в Visual Studio
LINQ Architecture & Components
Objects
<book>
<title/>
<author/>
<year/>
<price/>
</book>
XML
.NET Language Integrated Query
C# 3.0 VB 9.0 Others…
Relational
LINQ to
Objects
LINQ to
SQL
LINQ to
XML
LINQ to
DataSets
//LINQ == Language Integrated Query
int[] myarray = new int[]
{ 17, 42, 37, 137, 1984, 12345};
var query = from val in myarray
where val % 2 == 1
orderby val descending
select val;
foreach (int i in query)
Console.WriteLine(i);
LINQ to SQL
Поддерживает сопоставление объектных и реляционных данных внутри .NET Framework для Microsoft SQL Server
Доступ к реляционным данным как к типизированным объектам с использованием выражений LINQ
Основан на ADO.NET и .NET Transactions
Персистентность Автоматическое отслеживание изменений
Updates через SQL или хранимые процедуры
LINQ To XML
Language integrated query for XML Позволяет использовать XML без изучения XPath/XSLT
Создание и запросы к XML в несколько строчек кода
Построен на основе стандартных команд LINQ
Microsoft Confidential
Производительность
XMLMark – transactions per second
0
200
400
600
800
load + query load + query + update
load + query + update +
save
474409
312
656614
465
DOM
LINQ to XML
Microsoft Confidential
LINQ – сценарии использования
Единый механизм доступа к разным источникам данных (отсоединенный режим)
Создание данных
Генерация бизнес сущностей
Где место LINQ?
Представление
Бизнес-логика
Доступ к данным
Компоненты UI
Компоненты обработки UI
Интерфейсы сервисов
Бизнес
потоки
Бизнес
Компоненты
Бизнес
сущности
Компоненты
доступа к даннымАгенты сервисов
Бе
зо
па
сн
ос
ть
Оп
ер
ац
ио
нн
ое у
пр
ав
лен
ие
Вза
им
од
ей
ств
ие
Источники данных Сервисы
Данные
Чем LINQ не является
Заменой 3-х звенной архитектуры
Заменой уровня бизнес логики
Полноценным ORM механизмом
CLR Add-ins
Основа хостинга расширений
Адресует типичные проблемы: Загрузка/выгрузка, sandboxing, изоляция, активация,
совместимость и т.д.
http://msdn.microsoft.com/msdnmag/issues/07/02/CLRInsideOut/default.aspx
HostHost
View
Add-In
ViewAdd-In
Host S
ide
Adapte
rA
dd-n
Sid
e
Adapte
r
Contract
Communication
Pipeline
Вокруг VS 2008 & .NET 3.5
Lifecycle Tools,
.NET Framework,
& languages
Сервисы
Windows
приложения
Web приложения
Office приложения
Mobile
Где место сервисам?
Представление
Бизнес-логика
Доступ к данным
Компоненты UI
Компоненты обработки UI
Интерфейсы сервисов
Бизнес
потоки
Бизнес
Компоненты
Бизнес
сущности
Компоненты
доступа к даннымАгенты сервисов
Бе
зо
па
сн
ос
ть
Оп
ер
ац
ио
нн
ое у
пр
ав
лен
ие
Вза
им
од
ей
ств
ие
Источники данных Сервисы
Данные
Microsof t Conf idential
Взаимодействие со внешними системами на уровне бизнес логики
Публикация API и прием передача данных
Гетерогенные приложения
Взаимодействие между уровнями приложения
Взаимодействие между компонентами приложения
Публикация данных из приложения
Для других приложений
RSS, ATOM
Microsof t Conf idential
ASMX
.Net Remoting
Enterprise Services
WSE
System Messaging
System.Net
Microsof t Conf idential
ASMX
Взаимодействие с
Web Services x
Бинарно
.NET –.NET
Поддержка WS-*
спецификацийx
.NET
Remoting
xОчереди
сообщений
Распределенные
транзакцииx
Enterprise
Services WSESystem.
Messaging WCF
x
x
x
x
x
x
REST
System.
Net
x x
Microsof t Conf idential
User Code User Code
Typed Proxy Dispatcher
Protocol Protocol
Encoding Encoding
Transport Transport
Message
Bi
nding
Bi
nding
Microsof t Conf idential
Microsof t Conf idential
Microsof t Conf idential
Microsof t Conf idential
Microsof t Conf idential
WCF 3.5 поддерживает:
REST сервисы (GET/POST/PUT/DELETE)
POX/JSON кодирование
Syndication (RSS, ATOM)
Microsof t Conf idential
URL – артефакт вебаhttp://localhost/MyApplication/images/img.jpg
C:\inetpub\wwwroot\MyApplication\images\img.jpg
URI - идентификаторhttp://localhost/MyApplication/proc?id=256
http://localhost/MyApplication/proc/256
http://localhost/MyApplication/proc/lightsabre
Microsof t Conf idential
Броузеры - GET (& POST)
HTTP имеет 8 глаголов
Low REST предлагает APIs на основе GET & POST
Вся семантика спрятана в «метод»
High REST предлагает использовать 4 основных глагола
GET/PUT/DELETE/POST
Семантика в глаголе и «методе»
CRUD для Web
Microsof t Conf idential
Вызов сервисов без дополнительного уровня сообщений
…используя HTTP конечно
В основе лежит
URIs для идентификации endpoints (ресурсов)
HTTP определяют операцию
Тип контента
XML , JSON, <microformats>
Microsof t Conf idential
WebGet: новый атрибут, для вызова метода поHTTP GET
webHttpBinding: связывание REST сервисов
webServiceHost: новый класс для хостингаREST сервисов
webServiceHostFactory: новый класс для хостинга REST сервисов не требующий конфигурационных файлов
[OperationContract][WebGet(UriTemplate=“/WeatherMap/{country}/{zipcode}”)]Stream GetWeatherMap(String country, String zipcode);
Microsof t Conf idential
QueryString синтакс возможен
URITemplate: формальная связь URI с параметрами
[OperationContract][WebGet(UriTemplate=“/WeatherMap/{country}/{zipcode}”)]Stream GetWeatherMap(String country, String zipcode);
http://myserver/WeatherMap/USA/98052
http://myserver/GetWeatherMap?country=USA&zipcode=98052
Microsof t Conf idential
WebInvoke: новый атрибут, позволяющий методу принимать не только глагол GET
PUT, DELETE, POST...
[OperationContract][WebInvoke(METHOD=“PUT”)]WeatherReport UploadWeatherReport(WeatherReport theReport);
Microsof t Conf idential
Тип контента может быть определен по-разному
Через enableWebScript (JSON) или Ваши классы
Через параметр Response.Format
Через заголовок в теле сообщенияWebOperationContext.Current.OutgoingResponse.ContentType
[OperationContract][WebGet(UriTemplate = "WeatherReport/{country}/{zipcode}/JSON",ResponseFormat=WebMessageFormat.Json)]WeatherReport GetWeatherReportWithTemplateJSON(string country, string zipcode);
Microsof t Conf idential
Основанные на XML- стандарты публикации списков в интернете
RSS & ATOM
Microsof t Conf idential
SyndicationFeed
SyndicationFeedFormatter<>
[ServiceKnownType(typeof(Rss20FeedFormatter))][ServiceKnownType(typeof(Atom10FeedFormatter))][OperationContract][WebGet(UriTemplate = "WeatherReport/Feed/{format}")]SyndicationFeedFormatter<SyndicationFeed>
ShowFeed(String format);
Microsof t Conf idential
Представление
Бизнес-логика
Доступ к данным
Компоненты UI
Компоненты обработки UI
Интерфейсы сервисов
Бизнес
потоки
Бизнес
Компоненты
Бизнес
сущности
Компоненты
доступа к даннымАгенты сервисов
Бе
зо
па
сн
ос
ть
Оп
ер
ац
ио
нн
ое
уп
рав
лен
ие
Вза
им
од
ей
ств
ие
Источники данных Сервисы
Данные
Microsof t Conf idential
Ваш Host Process
Base Activity Library
Runtime Services
Runtime Engine
Designer
Runtime Engine
Base Activity Library
Custom
Activities
Runtime ServicesCustom
Services
Persistence & Tracking
DB Schemas
for SQL Server
Набор готовых к использованию activities
Стандартные задачиУсловия, Ветвления, Задержки…
Классы созданные для управления выполнением Workflow
WorkflowRuntime
WorkflowServicesHost
Набор классов, которые воздействуют на поведение среды исполнения
Persistence: как будет проходить гидратация
Tracking: как различные шаги выполнения взаимодействуют
Threading: как выделяются потоки
и т.д.
Компонент для визуального создания workflows
Полностью интегрирован с Visual Studio 2005 & 2008
Вы можете использовать его в своих приложениях
Готовые к использованию схемы в БД SQL Server для сохранения состояния
Your Host Process
Base Activity Library
Runtime Services
Runtime Engine
Runtime Engine
Base Activity Library
Custom
Activities
Runtime ServicesCustom
Services
Новые Send/Receive Activities
Runtime
Engine
Workflow Services
Host
Новый Runtime Engine унаследованный от ServiceHost
DesignerDesigner
Поддержка новых сервисных activities
Визуальное редактирование контрактов
WorkflowServicesHost
Новые WCF Bindings & Behaviors for
Context propagation
Durable instances
etc
Microsof t Conf idential
Activities: Расширения
Базовыеactivities, типыОбщего назначенияФундамент activities, создаваемых разработчиками
Создать/Расшир/ СкомпоноватьactivitiesОснова для бизнес-ориентированн. блоков
Base ActivityLibrary
Custom Activity Libraries
Новая
activity
Out-of-Box
Activities
Расшир.
activityКомпозит.
activities
Вертикальные решенияBest-practice IP & Knowledge
Domain-Specific Workflow Packages
Compliance
RosettaNet
CRM
IT Mgmt
Вокруг VS 2008 & .NET 3.5
Lifecycle Tools,
.NET Framework,
& languages
Сервисы
Windows
приложения
Web приложе
ния
Office приложения
Mobile
3x-уровневая архитектура
Представление
Бизнес-логика
Доступ к данным
Компоненты UI
Компоненты обработки UI
Интерфейсы сервисов
Бизнес
потоки
Бизнес
компоненты
Бизнес
сущности
Компоненты
доступа к даннымАгенты сервисов
Бе
зо
па
сн
ос
ть
Оп
ер
ац
ио
нн
ое у
пр
ав
лен
ие
Вза
им
од
ей
ств
ие
Источники данных Сервисы
Данные
Что мы хотим визуализировать?
Что мы хотим показывать: Экранные формы
2D-3D графика
Видео
Документы
Какие варианты Windows Forms
HTML
Media Player
GDI+/Direct 3D
Windows
Forms
GUI x
Экранные документы
Изображения
xАудио и Видео
Фикс. документы
x
Windows
Forms/
GDI+
Windows
Media
Player WPF
x
x
x
x
x
x
2D графика
Direct3D
x
x
3D графика x
x
x
Что выбрать ?
Приложения под Windows
Visual Studio Designer for WPF (“Cider”) XAML-редактор непосредственно в среде разработки
Изменения отражаются в реальном времени
XAML IntelliSense
ClickOnce поддерживает WPF приложения
Project templates, debugger & deployment support
Оформление через Expression Interactive Designer (“Sparkle”)
Designer
Expression Blend
…<Button Background=“Red”>
No
</Button>
…
XAML
Developer
Visual Studio
Web Applications
Интегрированная поддержка ASP.NET AJAX 1.0 Включена в .NET Framework 3.5
Шаблоны проектов ASP.NET AJAX
Шаблоны Web Application Projects
Javascript IntelliSense & Debugging
Поддержка HTML/CSS дизайнера Split View (одновременно исходник и дизайнер)
Вложенные Master Page preview в дизайнере
CSS Properties, Manage/Apply Styles
Улучшена визуализация CSS/HTML раскладки в дизайнере
Новые контролы: LinqDataSource, ListView, DataPager
Вокруг VS 2008 & .NET 3.5
Lifecycle Tools,
.NET Framework,
& languages
Сервисы
Windows
приложения
Web приложения
Office приложе
ния
Mobile
Office Applications
VS 2008 включает Visual Studio Tools for Office 3.0
Поддерживает дизайнеров для: Word и Excel документы и шаблоны
Fluent Ribbon
Task & Action panes
Outlook Form Regions
Интегрирована поддержка Workflow для Microsoft SharePoint
Связь с данными в Word Content Controls
Add-in для клиентских программ (both 2003 & 2007)
Add-in для документов Excel & Word 2007
Упрощено разворачивание с поддержкой ClickOnce
Вокруг VS 2008 & .NET 3.5
Lifecycle Tools,
.NET Framework,
& languages
Сервисы
Windows
приложения
Web приложения
Office приложения
Mobile
Mobile Applications
Visual Studio Tools for Devices Unit Testing для Device Applications
Device Emulator 3.0 – поддержка сертификатов, Xml config
.NET Compact Framework 3.5 Поддержка LINQ (XML, Objects and Dataset)
Windows Communication Foundation
CLR Profiler / Performance Monitor
Кроме того: поддержка алгоритмов сжатия, Client-side certificates, Sound APIs
© 2007 Microsof t Corporation. All rights reserv ed. Microsof t, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The inf ormation herein is f or inf ormational purposes only and represents the current v iew of Microsof t Corporation as of the date of this presentation. Because Microsof t must respond to changing market
conditions, it should not be interpreted to be a commitment on the part of Microsof t, and Microsof t cannot guarantee the accuracy of any inf ormation prov ided af ter the date of this presentation.
MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.