.NET 3.0. .NET Framework Microsoft Windows Communication Foundation Microsoft Windows Presentation Foundation Microsoft Windows Workflow Foundation



Podobne dokumenty
Modele zawartości. WPF wykorzystuje 4 modele zawartości kontrolek: ContentControl pojedyncza zawartość

Programowanie obiektowe i zdarzeniowe wykład 1 Wprowadzenie do programowania zdarzeniowego

Programowanie Systemów Rozproszonych Laboratorium 2 WCF. Paweł Paduch

ABC WCF.

Programowanie Systemów Rozproszonych Laboratorium 3 WCF. Paweł Paduch

Programowanie Systemów Rozproszonych - WCF

XAML Extensible Application Markup Language

Tworzenie i wykorzystanie usług sieciowych

Zaawansowane aplikacje internetowe - laboratorium

Aby nadać jej pożądaną postać należy w pliku Window1.xaml stworzyć definicję swojego stylu modyfikując ręcznie postać zapisu XAML:

1. Wprowadzenie do WPF i XAML. Tworzenie interfejsu użytkownika.

Laboratorium programowania urządzeń mobilnych

1 Wprowadzenie do J2EE

Komunikacja i wymiana danych

SIMON SAYS ARCHITECTURE! Usługi zdalne. Technologie, techniki i praktyki implementacji

Rys. 3. Kod elementów na stronie po dodaniu kontrolek podstawowych.

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

namespace HostedReceiver { public class Receiver: IConfigureThisEndpoint, AsA_Server {

Spis treści. Dzień 1. I Wprowadzenie (wersja 0906) II Dostęp do danych bieżących specyfikacja OPC Data Access (wersja 0906) Kurs OPC S7

Michał Jankowski. Remoting w.net 2.0

Wielowarstwowe aplikacje internetowe. Web Services. Autorzy wykładu: Maciej Zakrzewicz Marek Wojciechowski. Web Services

Windows Presentation Foundation

Kurs OPC S7. Spis treści. Dzień 1. I OPC motywacja, zakres zastosowań, podstawowe pojęcia dostępne specyfikacje (wersja 1501)

Aplikacje RMI Lab4

Studia podyplomowe. Programowanie na platformie Microsoft Visual Studio.NET

Dostęp do komponentów EJB przez usługi Web Services

Usługi sieciowe laboratorium 2013 K.M. Ocetkiewicz, T. Goluch

Programowanie w języku Java. Wykład 13: Java Platform, Enterprise Edition (Java EE)

Instrukcja laboratoryjna cz.3

4 Web Forms i ASP.NET Web Forms Programowanie Web Forms Możliwości Web Forms Przetwarzanie Web Forms...152

Programowanie obiektowe i zdarzeniowe

Rozwój aplikacji modułowych Paweł Brudnicki. Dodanie modułu

Robert Szmurło. Projektowanie Graficznych Interfejsów Użytkownika

Projekt: Mikro zaprogramowane na sukces!

Windows Presentation Foundation

Aplikacje RMI

Wywoływanie metod zdalnych

OpenLaszlo. OpenLaszlo

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Zaawansowane aplikacje WWW - laboratorium

Web Services (SOAP) Ćwiczenie 1

Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej

Programowanie obiektowe i zdarzeniowe wykład 3 Okna i kontrolki

Instrukcja laboratoryjna cz.3

Wykład 6 Dziedziczenie cd., pliki

Podstawy programowania. Ćwiczenie. Pojęcia bazowe. Języki programowania. Środowisko programowania Visual Studio

Usługi sieciowe laboratorium 2013 K.M. Ocetkiewicz, T. Goluch

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

Programowanie Systemów Rozproszonych - WCF REST

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

Platformy programistyczne:.net i Java WYKŁ AD 3: WPROWADZENIE DO PL ATFORMY.NET / JĘZYK C#

Przewodnik krok po kroku:

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

Wykład 5 Okna MDI i SDI, dziedziczenie

Wykład 12. Programowanie serwera MS SQL 2005 w C#

Wywoływanie metod zdalnych

Metody dostępu do danych

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Deduplikacja danych. Zarządzanie jakością danych podstawowych

RESTful WCF Services. Autor ćwiczenia: Piotr Ostrowski. Kroki ćwiczenia : 1. Utworzenie nowego projektu RESTful WCF.

Podejście obiektowe do budowy systemów rozproszonych

Laboratorium 10 - Web Services

Aplikacje internetowe i rozproszone - laboratorium

Programowanie obiektowe

Dotacje na innowacje. Inwestujemy w waszą przyszłość.

WPF 4.5 : księga eksperta / Adam Nathan. Gliwice, cop Spis treści

Politechnika Poznańska, Instytut Informatyki, TWO/GE. Programowanie dla ios

Simple Object Access Protocol

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Remote Method Invocation 17 listopada 2010

Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

A Zasady współpracy. Ocena rozwiązań punktów punktów punktów punktów punktów

Programownie w technologii.net wykład 6 Element Binding i Data Binding

Wszystkie parametry pracy serwera konfigurujemy w poszczególnych zakładkach aplikacji, podzielonych wg zakresu funkcjonalnego.

C# /.NET. Copyright by 3bird Projects 2018,

Silverlight. Od podstaw

Tomasz Greszata - Koszalin

Specyfikacja API Runtime BAS 3.0

Swing Application Framework czyli tam i z powrotem. Copyright Piotr Kochański & Erudis,

Serwery LDAP w środowisku produktów w Oracle

Wybrane działy Informatyki Stosowanej

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Spis treści. Wprowadzenie 13

Podstawy Windows Phone 7.5

Szczegółowy opis zamówienia:

Instrukcja laboratoryjna cz.6

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

Języki i paradygmaty programowania - 1

LINQ TO XML. Autor ćwiczenia: Marcin Wolicki

Szczegółowy opis zlecenia Plugin do oprogramowania dlibra. Szczegółowy opis zlecenia dla Pluginu do oprogramowania dlibra.

Java JMX. Marcin Werla. Monitorowanie i zarządzanie usługami sieciowymi w Javie. mwerla@man.poznan.pl PCSS/Poznań JUG

Prosta książka telefoniczna z wykorzystaniem zapisu do pliku

Proxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego.

Programowanie obiektowe

POLITECHNIKA POZNAŃSKA. Oprogramowanie dla telefonów z systemem Windows Phone 8 obsługujących technologię NFC do sprawdzania listy obecności.

Aplikacje Internetowe

Projektowanie architektury systemu rozproszonego. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Ministerstwo Finansów

Transkrypt:

.NET 3.0 i 3.5

.NET 3.0 Składa się z:.net Framework Microsoft Windows Communication Foundation Microsoft Windows Presentation Foundation Microsoft Windows Workflow Foundation.NET Framework jak w wersji 2.0

WCF Zarządzane podejście do systemów rozproszonych Model programowania zorientowany na serwisy (service model) Mapowanie pomiędzy serwisami a elementami CLR mapowanie wiadomości do implementacji w C# lub VB Wsparcie dla wielu rodzajów aplikacji rozproszonych, architektura warstwowa Kanały umożliwiające asynchroniczne przesyłanie wiadomości, bez wsparcia dla typów Protokoły wykorzystujące ww. kanały

Przykład użycia WCF http://msdn2.microsoft.com/en-us/library/ms731082(vs.85).aspx

Założenia System (serwer) musi być dostępny zarówno wewnątrz organizacji, jak i na zewnątrz, przy użyciu różnych klientów: Aplikacja kliencka wewnątrz organizacji (call center), używająca.net i WCF Aplikacja kliencka J2EE, konieczna z powodu współpracy z inną firmą i mająca dostęp do nowego systemu. Aplikacje klienckie z dostępem przez Internet zróżnicowane pod względem platform

Bez WCF Konieczność wykorzystania następujących technologii: ASP.NET Web services (ASMX) do komunikacji z J2EE i klientami przez Internet.NET Framework remoting do komunikacji z call center, ponieważ zarówno klient, jak i serwer wykorzystują.net. Umożliwia przezroczystą komunikację aplikacji.net Enterprise Services definiują rozproszone transakcje i czas życia obiektów Web Services Enhancements (WSE) dla zapewnienia lepszego bezpieczeństwa ASMX Microsoft Message Queuing (MSMQ) wsparcie dla komunikacji z klientami Windows

Z wykorzystaniem WCF WCF zapewnia następującą funkcjonalność: Ponieważ może komunikować się z wykorzystaniem web services (przez SOAP) współpracę z J2EE Komunikację z wykorzystaniem web services przez inne protokoły (np. RSS) Wysoką wydajność w porównaniu z innymi rozproszonymi platformami firmy Microsoft Szybszą niż tekstowa komunikację binarną z innymi aplikacjami WCF (struktura danych jest nadal zgodna z SOAP) Zarządzanie czasem życia obiektów i rozproszonymi transakcjami Bezpieczeństwo

Architektura WCF http://msdn2.microsoft.com/en-us/library/ms733128(vs.85).aspx

Kontrakty Określa jak komunikować się z serwisem: Data parametry wiadomości (przy pomocy XSD) Message fragmenty wiadomości (przy pomocy SOAP) Service sygnatury metod (np. w C#) Policy and binding warunki komunikacji z serwisem (co najmniej transport np. HTTP, kodowanie i wymogi bezpieczeństwa)

Service runtime Zachowania dotyczące pracy serwisu, np.: Throttling ile wiadomości przetwarzać żeby nie zablokować serwisu Error co robić w przypadku błędu Instance ile egzemplarzy serwisu może działać Transaction umożliwia 'rollback' nieudanych transakcji

Messaging Składa się z kanałów. Kanał w pewien sposób przetwarza wiadomości. Zespół kanałów to stos. Wyróżnia się kanały: Transportu czytają i piszą wiadomości z/do sieci (lu innego medium komunikacyjnego). Np. HTTP, TCP, MSMQ. Mogą stosować różne rodzaje kodowania Protokołu implementują protokoły przetwarzania wiadomości, zwykle poprzez czytanie/pisanie dodatkowych nagłówków wiadomości. Np. WS- Security

Activation and hosting Serwis ostatecznie to program który musi być wykonywany. Może być: Samodzielny (exe) tzw. self-hosted Zarządzany przez zewnętrzne środowisko (np. IIS, WAS)

Przykładowe użycie WCF - serwer http://msdn2.microsoft.com/en-us/library/ms731835(vs.85).aspx Utworzyć projekt Zdefiniować kontrakt (kolekcja i struktura wiadomości wymaganych do dostępu do serwisu): Dodać odwołanie do System.ServiceModel Utworzyć odpowiednie interfejsy, zastosować atrybut ServiceContract Utworzyć metody w interfejsie, zastosować atrybut OperationContract Domyślny kontrakt wykorzystuje schemat żądanieodpowiedź. Inne schematy można wymusić poprzez własności atrybutów OperationContract i ServiceContract

Kod using System; using System.ServiceModel; namespace Microsoft.ServiceModel.Samples { // Define a service contract. [ServiceContract(Namespace = "http://microsoft.servicemodel.samples")] public interface ICalculator { [OperationContract] double Add(double n1, double n2); [OperationContract] double Subtract(double n1, double n2); [OperationContract] double Multiply(double n1, double n2); [OperationContract] double Divide(double n1, double n2); } }

Przykładowe użycie WCF - serwer Zaimplementować kontrakt klasę implementującą interfejs

Kod public class CalculatorService : ICalculator { public double Add(double n1, double n2) { double result = n1 + n2; Console.WriteLine("Received Add({0},{1})", n1, n2); Console.WriteLine("Return: {0}", result); return result; } public double Subtract(double n1, double n2) { double result = n1 - n2; Console.WriteLine("Received Subtract({0},{1})", n1, n2); Console.WriteLine("Return: {0}", result); return result; } public double Multiply(double n1, double n2) { double result = n1 * n2; Console.WriteLine("Received Multiply({0},{1})", n1, n2); Console.WriteLine("Return: {0}", result); return result; } } public double Divide(double n1, double n2) { double result = n1 / n2; Console.WriteLine("Received Divide({0},{1})", n1, n2); Console.WriteLine("Return: {0}", result); return result; }

Przykładowe użycie WCF - serwer Uruchomić serwis: Utworzyć adres bazowy dla serwisu Utworzyć odpowiednie uri, np.: Uri baseaddress = new Uri("http://localhost:8000/ServiceModelSamples/Service"); Utworzyć hosta dla serwisu Utworzyć obiekt typu ServiceHost: ServiceHost servicehost = new ServiceHost(typeof(CalculatorService), baseaddress); Dodać punkt końcowy z określonym transportem servicehost.addserviceendpoint(typeof(icalculator), new WSHttpBinding(), "CalculatorService"); Umożliwić wymianę metadanych ServiceMetadataBehavior smb = new ServiceMetadataBehavior(); smb.httpgetenabled = true; servicehost.description.behaviors.add(smb); Otworzyć hosta serwisu

Kod class Program { static void Main(string[] args) { Uri baseaddress = new Uri("http://localhost:8000/ServiceModelSamples/Service"); ServiceHost servicehost = new ServiceHost(typeof(CalculatorService), baseaddress); try { servicehost.addserviceendpoint( typeof(icalculator), new WSHttpBinding(), "CalculatorService"); ServiceMetadataBehavior smb = new ServiceMetadataBehavior(); smb.httpgetenabled = true; servicehost.description.behaviors.add(smb); servicehost.open(); Console.WriteLine("The service is ready."); Console.WriteLine("Press <ENTER> to terminate service."); Console.WriteLine(); Console.ReadLine(); } } servicehost.close(); } catch (CommunicationException ce) { Console.WriteLine("An exception occured: {0}", ce.message); servicehost.abort(); }

Service strona serwisu

Przykładowe użycie WCF - klient Utworzyć projekt Dodać odwołanie do System.ServiceModel Uruchomić serwer (serwis) Uruchomić Service Model Metadata Utility Tool (SvcUtil.exe) - część Windows SDK svcutil.exe /language:cs /config:app.config http://localhost:8000/servicemodelsamples/service Dodać wygenerowany plik z kodem do projektu

Przykładowe użycie WCF - klient Skonfigurować klienta Dodać do projektu plik konfiguracyjny wygenerowany przez Svcutil <?xml version="1.0" encoding="utf-8"?> <configuration> <system.servicemodel> <bindings> <wshttpbinding> <binding name="wshttpbinding_icalculator"> </binding> </wshttpbinding> </bindings> <client> <endpoint address="http://localhost:8000/servicemodelsamples/service/calculatorservice" binding="wshttpbinding" bindingconfiguration="wshttpbinding_icalculator" contract="microsoft.servicemodel.samples.icalculator" name="wshttpbinding_icalculator"> </endpoint> </client> </system.servicemodel> </configuration>

Przykładowe użycie WCF - klient Używać klienta: Utworzyć obiekt klasy EndpointAddress EndpointAddress epaddress = new EndpointAddress ("http://localhost:8000/servicemodelsamples/service/calculatorservice"); CalculatorClient client = new CalculatorClient(new WSHttpBinding(), epaddress); Wywoływać operacje udostępniane przez serwis Zamknąć klienta

using System; using System.Collections.Generic; using System.Text; using System.ServiceModel; namespace ServiceModelSamples { Kod class Client { static void Main() { EndpointAddress epaddress = new EndpointAddress("http://localhost:8000/ServiceModelSamples/Service/CalculatorService"); CalculatorClient client = new CalculatorClient(new WSHttpBinding(), epaddress); double value1 = 100.00D; double value2 = 15.99D; double result = client.add(value1, value2); Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result); value1 = 145.00D; value2 = 76.54D; result = client.subtract(value1, value2); Console.WriteLine("Subtract({0},{1}) = {2}", value1, value2, result); value1 = 9.00D; value2 = 81.25D; result = client.multiply(value1, value2); Console.WriteLine("Multiply({0},{1}) = {2}", value1, value2, result); value1 = 22.00D; value2 = 7.00D; result = client.divide(value1, value2); Console.WriteLine("Divide({0},{1}) = {2}", value1, value2, result); client.close(); Console.WriteLine(); Console.WriteLine("Press <ENTER> to terminate client."); Console.ReadLine(); } } }

Windows Presentation Foundation (WPF) http://msdn2.microsoft.com/en-us/library/aa970268(vs.85).aspx Umożliwia tworzenie klienckich aplikacji dla Windows Większość klas opiera się na jednej z: UIElement FrameworkElement ContentElement FrameworkContentElement Interfejs użytkownika jest zbudowany jako drzewo Zdarzenia w elementach mogą być przekazywane zgodnie ze strukturą drzewa

Windows Presentation Foundation (WPF) UI jest konstruowane przy użyciu Extensible Application Markup Language (XAML), opartego o XML: <Window Xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> <Button>Hello, XAML!</Button> </Window>

Standardowe kontrolki Control klasa bazowa edycja: CheckBox, ComboBox, PasswordBox, RadioButton, RichTextBox, Slider, TextBox listy: ListBox, ListView, TreeView informacje: Label, ProgressBar, Popup, ToolTip czynności: Button, ContextMenu, Menu, Separator, StatusBar, Thumb, ToolBar wygląd: Border, BulletDecorator, Decorator, Image, Viewbox Okienka dialogowe: OpenFileDialog, PrintDialog, SaveFileDialog pojemniki: Expander, GroupBox, RepeatButton, ScrollBar, ScrollViewer, TabControl rozkład: Canvas, DockPanel, Grid, GridSplitter, Panel, StackPanel, VirtualizingStackPanel, WrapPanel. nawigacja: Frame, Hyperlink dokumenty: DocumentViewer, FlowDocumentPageViewer, FlowDocumentReader, FlowDocumentScrollViewer

Praca z danymi Możliwość powiązania różnych źródeł danych z elementami UI <Window... xmlns:src="clr-namespace:applicationnamespace">... <!-- Binding Source --> <Window.Resources> <src:person x:key="mydatasource" PersonName="Joe"/> </Window.Resources>... <!-- Binding Target --> <TextBlock Text="{Binding Source={StaticResource mydatasource}, Path=PersonName}" />... </Window>

Standaryzacja wyglądu Możliwośc definiowania wspólnego wyglądu dla grupy elementów <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Window.Resources> <SolidColorBrush x:key="defaultbackground" Color="Red" /> </Window.Resources> < StackPanel> <Button Background="{StaticResource defaultbackground}">one Button</Button> <Label Background="{StaticResource defaultbackground}">one Label</Label> </StackPanel> </Window> Możliwośc stosowania styli <Style TargetType="{x:Type Button}"> <Setter Property="Background" Value="Yellow"/> </Style>

Możliwość zmiany wyglądu kontrolki przy zachowaniu funkcjonalności Wykorzystuje control templates <Button Content="Not Pressed"> <Button.Template> <ControlTemplate TargetType="{x:Type Button}"> <Border x:name="border" CornerRadius="80" Background="LightBlue"> <ContentPresenter Name="content" HorizontalAlignment="Center" VerticalAlignment="Center"/> </Border> <ControlTemplate.Triggers> <Trigger Property="IsPressed" Value="True"> <Setter TargetName="border" Property="Background" Value="Aqua" /> <Setter TargetName="content" Property="Content" Value="Pressed" /> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Button.Template> </Button>

Możliwość zmiany wyglądu zawartości kontrolki Wykorzystuje data templates <DataTemplate x:key="mytasktemplate"> <Border Name="border" BorderBrush="Aqua" BorderThickness="1" Padding="5" Margin="5"> <Grid> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition/> <RowDefinition/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition /> </Grid.ColumnDefinitions> <TextBlock Grid.Row="0" Grid.Column="0" Text="Task Name:"/> <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Path=TaskName}" /> <TextBlock Grid.Row="1" Grid.Column="0" Text="Description:"/> <TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding Path=Description}"/> <TextBlock Grid.Row="2" Grid.Column="0" Text="Prioirty:"/> <TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding Path=Priority}"/> </Grid> </Border> </DataTemplate>

Rozplanowanie UI przy pomocy paneli Kontrolki: Canvas, DockPanel, Grid, StackPanel, VirtualizingStackPanel, WrapPanel <DockPanel> <DockPanel.Resources> <Style TargetType="{x:Type Border}"> <Setter Property="BorderBrush" Value="Black" /> <Setter Property="BorderThickness" Value="1" /> </Style> <Style TargetType="{x:Type TextBlock}"> <Setter Property="Margin" Value="5" /> <Setter Property="FontWeight" Value="Medium" /> </Style> </DockPanel.Resources> <Border Background="SkyBlue" DockPanel.Dock="Top"> <TextBlock>Dock = "Top"</TextBlock> </Border> <Border Background="SkyBlue" DockPanel.Dock="Top"> <TextBlock>Dock = "Top"</TextBlock> </Border> <Border Background="PaleGoldenrod" DockPanel.Dock="Bottom"> <TextBlock>Dock = "Bottom"</TextBlock> </Border> <Border Background="PaleGreen" DockPanel.Dock="Left"> <TextBlock>Dock = "Left"</TextBlock> </Border> <Border Background="White"> <TextBlock>This content "Fills" the remaining, unallocated space.</textblock> </Border> </DockPanel>

Wsparcie dla multimediów Grafika 2D: Proste kształty Własne kształty Maski Grafika 3D Wykorzystanie sprzętowej akceleracji Animacja Strumienie audio Strumienie wideo

Windows Workflow Foundation (WWF) http://msdn2.microsoft.com/en-us/library/ms734631(vs.85).aspx Model, engine i narzędzia do budowy aplikacji typu workflow Workflow jest rozumiany jako zestaw jednostkowych elementów (activity) połączonych w sposób opisujący kolejność ich wykonywania i zależności między nimi Wiele egzemplarzy workflow może być wykonywanych jednocześnie Workflow może być umieszczony w każdym procesie Windows (aplikacji konsolowej, serwisie, aplikacji ASP.NET) i komunikować się z tym procesem

Czynności (activities) Czynności są dodawane programowo do workflow Czynność może zawierać pojedynczą akcję, może też zawierać zbiór innych czynności Czynności mają dwa rodzaje zachowania: W momencie projektowania jak czynność jest prezentowana podczas procesu projektowania W momencie wykonania WWF zawiera bibliotekę standardowych czynności i wsparcie dla tworzenia własnych czynności

Wsparcie dla typowych zachowań wymaganych przez workflow Compensation przywrócenie stanu sprzed wykonania czynności (potrzebne np. do obsługi wyjątków) Persistence zapisywanie workflow tak aby mógł być kontynuowany w przypadku restartu aplikacji Tracking logowanie zdarzeń w workflow, np. do bazy danych Serialization zapis i odczyt workflow i czynności

Elementy decyzyjne Decyzje dotyczące przebiegu workflow mogą być budowane w oparciu o: Warunki: czynności IfElseBranchActivity i ConditionedActivityGroup Reguły definiowane programowo lub poprzez plik XML. Reguły mogą być zmieniane podczas pracy workflow

.NET 3.5 Zmiany w stosunku do 3.0: ASP.NET: Lepsze wsparcie dla technologii AJAX, zarówno od strony serwera, jak i klienta Wsparcie dla serwisów WCF Kilka nowych kontrolek Wsparcie dla rozszerzalnych aplikacji (System.AddIn.dll)

.NET 3.5 CLR: Nowa kolekcja HashSet Wsparcie dla diagnostyki EventSchemaTraceListener Pipes anonymous i named Możliwość wpływu na działanie garbage collector Poprawa wydajności synchronizacji i wątków thread pool Nowe struktury dal czasu i daty Nowe elementy dla kryptografii Wsparcie dla sieci Peer-to-Peer Poprawa wydajności socketów

.NET 3.5 Połączenie Windows Workflow Foundation i Windows Communication Foundation Zmiany i rozszerzenia w WCF Zmiany i rozszerzenia w WPF Rozszerzenia w Windows Forms Language-Integrated Query (LINQ) możliwość formułowania zapytań w C# i VB