Title: Visual Studio 2005
1Visual Studio 2005
- NETzWERK Tag zum Product Launch
Jens Häupel .NET Technologieberater Microsoft
Deutschland GmbH http//blogs.msdn.com/jensha
2Agenda
- Mehr Produktivität Mehr Zeit für das
Wesentliche - WinForms
- Web-Entwicklung mit ASP.NET 2.0
- Entwicklung für Office 2003 Integrationsszenarie
n - Innovationen in den Sprachen
- Neuigkeiten von Visual Basic, C und C
- Entwicklung ist Teamsache
- Überblick über Visual Studio Team System
3Mehr Produktivität Mehr Zeit für das
Wesentliche
- Windows Forms Enhancements
- Controls, Controls, Controls
- Databinding und DataViews
- ClickOnce Deployment
- Web-Entwicklung mit ASP.NET 2.0
- Integration in Office 2003
4Windows Forms 2.0
Neue Controls
5ToolStrip Control
- Hochgradig anpaßbare UI Elemente für
- Toolbars
- Menüs (Drop-Down / Kontext)
- Unterstützung für
- Überlauf
- Layout
- Verschiedene Stile ( RenderMode )
- Besser anpaßbar zur Design-Zeit
- Zur Laufzeit veränderbar
- Status speicherbar (ToolStripManager)
6ToolStrip Controls
- ToolStripButton
- ToolStripLabel
- ToolStripSplitButton
- ToolStripSeparator
- ToolStripComboBox
- ToolStripTextBox
- ToolStripProgressBar
- ToolStripDropDownButton
programmatisch erweiterbar
7ToolStrip Control Beispiele
- MenuStrip / ContextMenuStrip / StatusStrip
- Sonderfälle des ToolStrip für Menüs /
Kontextmenüs / StatusBar
8ToolStripContainer
- Container für ToolStrip Controls
- Erlaubt Re-Positionierung zur Laufzeit
- alle 4 Seiten
- Typischerweise
- docked
- fixed area
- keine Layers
- Overflow out-of-the-box
9SplitContainer Control
- Besteht aus Splitter und 2 Panel Controls
- Intuitiver, vereint mehrere Arbeitsschritte
- Vertikal oder horizontal ausrichtbar
10SplitContainer ControlFeatures
- SplitterDistance / SplitterIncrement
- PanelxMinSize begrenzt Resizing
- IsSplitterFixed (Splitter beweglich oder nicht)
- FixedPanel (Panel bei Resize konstant)
- Events (SplitterMoved, SplitterMoving)
11Weitere
- ToolTip
- BubbleMode
- Icon und Title
- OwnerDraw Support
- LinkLabel
- unterstützt mehrere Links
- Links Editor
- Text-, ComboBox
- AutoComplete,verschiedene Quellen
12Noch mehr
- Toolbox Verbesserungen
- User Controls im Projekt werden automatisch
aufgenommen - Filter im Toolbox-Anpassen Dialog
- Designer Verbesserungen
- WYSIWYG Docking-Hilfen
- Viele kleine Dinge
- Notify Icon
- Für QuickLaunch Bar
13Datenbindung und DataViews
- Daten zur Anzeige aufbereiten
14DataSources Window
- Zeigt alle Datenquellen im Projekt
- Datenbank, Objekt oder WebService
- DragDrop auf Form
- Erzeugt datengebundene Controls
- Einzelne Felder möglich
- Smart Master/Details View
- Grid Control oder das Control der Wahl
- Angepaßte und individelle Controls für Details
View
15BindingNavigator Control
- Standardisierte (optionale) Navigation bzw.
Manipulation von datengebundenen
Benutzerschnittstellen - Spezialisiertes ToolStrip, unterstützt
- Einfügen
- Löschen
- Navigieren
- Speichern
- Kann angepaßt und erweitert werden
16DataGridView Control
- Die Alternative zum alten DataGrid Control
- Flexibel, Erweiterbar, Einfach, Skalierbar
- In-place Control hosting
- Verschiedene Typen von Spalten/Zellen
- TextBox, ComboBox, Link, Image, CheckBox, Button
- Erweiterte Anpaßbarkeit
- Row / Cell Painting
- Unterstützt "Copy to Clipboard"
- Row / Column Freezing, AutoSizing
17DataGridView Control
- Datenformatierung
- String.Format() strings, CellFormatting Event,
DBNull support - Data Handling Features
- Error Handling Events (global bzw. cell)
- Error Icons für Zellen und Zeilen
- Zell-basierte Validation
- Flexible Databinding Modes
- Bound, Unbound, Virtual, BoundVirtual
18DataGridView ControlStyles
- Dynamisch (Run Time)
- CellFormatting Event
- Statisch (Design Time)
- CellStyle Properties
DefaultCellStyle
19DataGridView ControlZellen hosten Controls
- Kann folgende Controls in Spalten/Zellen
enthalten - TextBox (default)
- ComboBox
- Link
- Image
- Checkbox
- Button
Keine Zeile Code!
20ClickOnce Deployment
- Smarte Clients - Automatische Verteilung
21Prinzip ClickOnce Deployment
Deployment Manifest
Application Manifest 1.0
Version 1.1 ist aktuell
Version 1.0 ist aktuell
Assembly List
Web Page w/ Link to Manifest
Application Manifest 1.1
Assembly List
RUN
22Click Once bedeutet
- Einfache Installation
- Aufwand niedrig halten
- Apps können vom Benutzer installiert werden
- Sicherheit von Web Anwendungen
- isolierte Ausführung (Sandbox)
- Einfache Updates
- Automatisch erkennen/durchführen
- Offline-Fähigkeit
23Update-Optionen
- Beim Start
- Benutzer wird sofort gefragt
- Während die Anwendung läuft
- Benutzer wird beim nächsten Start gefragt
- Programmatisch
- Update Logik in der Anwendung
- Erforderlich
- Benutzer muß updaten
- Per API und Custom Code
24Update-Sicherheit
- Manifests müssen signiert sein
- XMLDSIG (z.B. X.509 Zertifikat)
- 'Deployer key' nötig, um Updates zu verteilen
- Updates nur mit gleichem Deployer Key wie das
Original akzeptiert - Keine unbeabsichtigte oder vorsätzliche
Verteilung von Viren möglich - File-Hash im Manifest verhindert Manipulation
der Dateien
25.NET Programmierung für Office 2003
26Integration in Visual Studio
- VSTO Visual Studio Tools für Office
- Höhere Produktivität durch IDE Integration
- Vorteile von Managed Code
- gemeinsame Klassenbibliotheken für alle Sprachen
- Kompatibles Typsystem
- Gemeinsame Laufzeitumgebung
- Code Access Security
- Code-Vererbung (auch zw. Sprachen)
27ActionsPane Programmierung
- Nordwind - Kunden in der ActionsPane in Excel mit
Übernahme ins Dokument - Named Range Zelle wird zu "first class Object"
mit Events, Properties, etc.
28Erweiterung mit ViewControls
- Erweiterungen von vorhandenen Excel-bzw.
Word-Objekten - Bookmark, NamedRange, ListObject, XmlMappedRange,
Chart Control - Properties und Events
The end of scanning the entire workbook!
29Erweiterung mit .NET Controls
- Word / Excel als Host für Managed Controls
- Komplettes Eventing
- Databinding
- BindingSource
- TableAdapter
- DataSet
- BindingNavigator
- Wrapper-Objekt wird automatisch generiert
30Data Islands
- Office-Dokumente können nun sog. "Dateninseln"
enthalten - Speicherort für XML Daten im Office-Dokument
- Extra-Stream im OLE Structured Storage
- Zugriff darauf ohne Office-Instanz !
- Einfache Erzeugung durch Cached()-Attribut bzw.
CacheInDocument Property
31Funktionsweise
Client
Server
Reisekosten.aspx
Server Code
URL Request
Bill's neue Daten
Bill's Daten
32SmartTags in VSTO
33SmartTags in VSTO
- Sehr einfaches und intuitives Interface
- Kaspelt die COM-Interfaces ISMartTagAction bzw.
ISmartTagRecognizer - Für spezifische Dokumente
- Aggressivere Erkennungsmechanismen möglich
- Für Dokumente, die auf einer bestimmten Vorlage
basieren - Allgemeinere Erkennung, Gruppierung
34Integrationsmöglichkeiten
- Dokumentzentrisch für Word/Excel
- ActionsPane mit .NET Controls
- ViewControls mit Databinding
- DataIslands und Zugriff darauf ohne
Instanz(Serverszenario) - Managed Code Modell für Smart Tags
- Applikationbezogen bei Outlook (Add-In)
- neuer Loader erzeugt eigene AppDomain für jedes
Add-In
35Web-Programmierung
36Neue Features im Überblick
Daten- controls
Login- controls
Web Parts
Andere neue Controls
Controls
Seitenvorlagen
Themes und Skins
Lokalisation
Kompilierung
Page Framework
Benutzer- verwaltung
Rollen- verwaltung
Profile
Konfiguration
Services und APIs
Site Maps
Health Monitoring
Andere Dienste
37Neue Features für Datenzugriff
- Controls für direkte Bindung an Datenquellen
- Deklarativ, Lese- und Schreibzugriff
- Data controls
- GridView Wie DataGrid, nur besser
- DetailsView Detailansicht z.B. für Tabellen
- SQL Cache-Abhängigkeiten
- Cache-Invalidierung bei Änderung der
zugrundeliegenden SQL-Abfrage - Vereinfachte Syntax für die Datenbindung
38ASP.NET 1.x Datenbindung
ltaspDataGrid ID"MyDataGrid" RunAt"server" /gt
... ltscript language"C" runat"server"gt void
Page_Load (Object sender, EventArgs e)
SqlConnection connection new SqlConnection
("serverlocalhostdatabasepubsintegrated
securitytrue") try
connection.Open () SqlCommand command
new SqlCommand ("select title_id,
titles, price from titles")
MyDataGrid.DataSource command.ExecuteReader
() MyDataGrid.DataBind ()
finally connection.Close ()
lt/scriptgt
39ASP.NET 2.0 Datenbindung
ltaspSqlDataSource ID"Titles" RunAt"server"
ConnectionString"serverlocalhostdatabasepubsi
ntegrated securitytrue" SelectCommand"select
title_id, title, price from titles"
/gt ltaspDataGrid DataSourceID"Titles"
RunAt"server" /gt
40Die Benutzeroberfläche
- Seitenvorlagen (Master pages)
- Visuelle Vererbung für Webseiten
- Deklarativ oder programmatisch anwendbar
- Formatvorlagen (Themes und Skins)
- Vorlagen für das Design (Aussehen) von Controls,
Seiten und ganzen Websites - Deklarativ oder programmatisch anwendbar
- Neue Controls (insgesamt mehr als 50)
- Menüs, TreeViews, Assistenten (Wizards) u.v.m.
41Formatvorlagen anwenden
lt_at_ Page Theme"BasicBlue"gt
Vorher
Nachher
42Neues zum Thema Security
- Benutzerverwaltung (Membership)
- Verwaltet Benutzer und Gruppen
- Providerbasiert, beliebige Datenquelle möglich
- Login-Controls
- Controls zum Einloggen, Anlegen neuer Benutzer,
Zuschicken vergessener Passwörter, u.v.m. - Rollenverwaltung
- Kombiniert Forms-Authentifizierung und
rollenbasierte Authentifizierung, kein Code nötig
43Profile
- Benutzerspezifische Daten persistent speichern
mehr als nur Session State - Streng typisierter Datenspeicher
- Datenabruf On-demand
- Permanente Speicherung in Datenbank
- Unterstützt authentifizierte und nicht
authentifizierte Benutzer - Beliebige Datenquellen durch Providermodell
44Ein Profil definieren
ltconfigurationgt ltsystem.webgt ltprofilegt
ltpropertiesgt ltadd name"ScreenName" /gt
ltadd name"Posts" type"System.Int32"
defaultValue"0" /gt ltadd name"LastPost"
type"System.DateTime" /gt lt/propertiesgt
lt/profilegt lt/system.webgt lt/configurationgt
45Provider
- Neues Modell zur Speicherung von Zustand
- Sorgt für Unabhängigkeit (Abstraktion) von
zugrunde liegenden Datenquellen - Wird von ASP.NET ausgiebig verwendet
(Benutzerverwaltung, Rollenverwaltung u.v.m.) - ASP.NET bringt einige wichtige Provider mit
- Access, SQL Server, XML
- Weitgehende Flexibilität
- Beliebige (Legacy-)Datenquellen durch selbst
geschriebene Provider
46Das Provider-Modell
Controls
Login
LoginStatus
LoginView
Andere Login- Controls
Membership API (Benutzerverwaltung)
Membership
MembershipUser
Membership Provider
AccessMembershipProvider
Andere Provider
SqlMembershipProvider
Benutzer- daten
Access
SQL Server
Andere Datenquellen
47Web Parts
- Framework für Portal-Websites
- Inspiriert von SharePoint Portal Server
- System.Web.UI.WebControls.WebParts
- Komplexe Benutzeroberfläche mit minimalem
Kodieraufwand - Seitenlayout per Drag Drop anpassbar
- Aussehen und Verhalten veränderbar
- Individuell pro Benutzer personalisierbar
- Kommunikation zwischen Web Parts über
Connections-Modell
48Dynamische Kompilierung
vroot
CS
VB
Code
Dateien werden beim ersten Zugriff automatisch
kompiliert
WSDL
XSD
Resources
RESX
RESOURCE
49Deployment ohne Sourcecode
- Aspnet_compiler.exe kompiliert Sourcecode und
ermöglicht Deployment ohne Sourcecode
50Innovationen in den Sprachen
- Neuigkeiten von VB, C und C
51Weniger Suchen, weniger Code Das My-Object
- Kontextabhängig, abhängig von
- Projekttyp
- Laufzeitumgebung (Hardware, OS)
- Höchste Ebene Root Objekte
- Wie Namespaces oder Klassen mit static Members
- Funktionen mit hoher Abstraktion
- Application
- Computer
- Forms
- Ressources
- Settings
- User
- WebServices
52Wieso einfacher?
- Abspielen einer Sound-Datei in VB 6.0
Private Declare Function PlaySound _ Alias
"PlaySoundA" _ Lib "winmm.dll" _ ( _
ByVal lpszName As String, _ ByVal hModule As
Long, _ ByVal dwFlags As Long _ ) _ As
Long Private Const SND_FILENAME As Integer
H20000 Dim strSoundFile As String "D\My
Object\chimes.wav" Dim lRet As Long lRet
PlaySound(strSoundFile, 0, SND_FILENAME)
53Deshalb einfacher!
- Abspielen einer Sound-Datei in VB 2005
Dim strSoundFile As String "D\My
Object\chimes.wav" My.Computer.Audio.Play(strSou
ndFile)
54My.Settings
- Anlegen im Settings-Designer
- Repräsentation in der App.Config
55Background Worker (VB)
- Auslagern von langsamen Abläufen
- VB erzeugt Thread im Hintergrund
- Per Events
- DoWork
- ProgressChanged
- RunWorkerCompleted
56Partielle Typen (alle Spachen)
- Trennung von Codeteilen
- Teamarbeit bei Klassen
Public Class clsAction Microsoft.Office.Interop.
SmartTag.ISmartDocument ' Interface
Implementation End Class Partial Class
clsAction ' Eigene Methoden Private Function
Foo(ByVal i As Int32) As Int32 ' do
something End Function End Class
57Überladung von Operatoren (VB)
- Passenden Operator zur Klasse bzw. Struktur
mitliefern - Keine spezielle Funktion nötig
Public Class SpecialDT Shared Operator
(ByVal Op1 As SpecialDT, ByVal Op2 As SpecialDT)
_ As SpecialDataType Return New
SpecialDT(Op1.Volumen Op2.Volumen, Op1.Masse
Op2.Masse) End Operator End Class
58Generics (alle Sprachen)
Public Class List Private elements() As
Object Private m_Count As Integer Public
Sub Add(element As Object) m_Count
1 elements(m_Count) element End
Sub Public Property Element(index As Int32)
As Object Get Return
elements(index) End Get Set(ByVal
Value As Object) elements(index) value
End Set End Property End Class
Public Class List(Of Type) Private elements()
As Type Private m_Count As Integer Public
Sub Add(element As Type) m_count
1 elements(m_Count) element End
Sub Public Property Element(index As Int32)
As Type Get Return
elements(index) End Get Set(ByVal
Value As Type) elements(index) value
End Set End Property End Class
Dim intList As New List intList.Add(1)
Argument is boxed intList.Add(2) Argument
is boxed intList.Add("Three") Should be an
error Dim i As Int32 CType(intList(0),Int32)
Cast required
Dim intList As New List(Of Integer) intList.Add(1
) No boxing intList.Add(2)
No boxing intList.Add("Three")
Compile-time error int i intList(0) No
cast required
59Anonymus Methods (C)
- Keine separaten Methoden für Eventhandler /
Callbacks nötig - Delegates enthalten den Code
-
public MyForm() listBox new ListBox(...)
textBox new TextBox(...) addButton new
Button(...) addButton.Click new
EventHandler(AddClick) addButton.Click
delegate(object sender, EventArgs e)
MessageBox.Show(((Button)sender).Text)
60Iterators (C)
- Spezielle Methoden für Type / Class
- Spezifizieren, wie foreach über die Elemente
iteriert - Erzeugen inkrementell eine Sequenz von Werten
using System.Collections.Generic public class
StackltTgt IEnumerableltTgt T items int
count public void Push(T data) ...
public T Pop() ... public IEnumeratorltTgt
GetEnumerator() for (int i count 1 i
gt 0 --i) yield return itemsi
class Test static void Main()
Stackltintgt stack new Stackltintgt() for (int
i 0 i lt 10 i) stack.Push(i) foreach
(int i in stack) Console.Write("0 ", i)
61Refactoring (C, VB)
- Extract Method / Property
- Simplify Expression
- Split Temporary Variable
- Reorder Parameters
- ....
Reihenfolge der Parameter in Prozeduren /
Funktionen und deren Aufrufe ändern
62C in Visual Studio 2005
- ISO Standard C auf der CLR
- Vollständige Standard C Sprache
- Vorhandenen C Code ? MSIL kompilieren
- Managed Types ohne COM Interop
- C/CLI Language Binding an die CLR
- Natürliche Integration mit bestehendem C Code
- ECMA standardization (strikter!)
- Einfache Managed ?? Native Interop
- It Just Works /CLR
- Mixed Native und Managed Images
- Type Safe
63Compilation Modes
64Compilation Modes
65Compilation Modes
66Compilation Modes
67Compilation Modes
68What does the code look like?
adjective class
always points to GC Heap
gcnew allocates on GC Heap
property and event blocks
Simple String Literals and Implicit Boxing
69Pointers und Handles
- Objekte erzeugen auf Stack, CLR Heap, oder Native
Heap - Native Heap
- Pointer () sind stabil, auch wenn GC arbeitet
- Keine manuelle Freigabe Memory Leak
- CLR Heap
- Handles () sind Object-Referenzen
- Delete aufrufen ist optional
- Stack
- Erlaubt deterministisches Aufräumen
T t1 new T
T t2 gcnew T
T t3
70Properties
ref class R int mySizepublic property
int Size int get() return mySize
void set(int val) mySize val R
rr.Size 42 // use like a field
ref class R public property int Size //
compiler-generated // get,
set, and backing store
71Lust auf Mehr?
- TechTalk zu C 2005
- Voraussichtlich März/April
- Von und mit Bernd Marquard
- http//www.techtalk.ms
72Software Lifecycle ManagementVisual Studio Team
System
73Der Software Lifecycle
- Was wir von Ihnen hören
- "Softwareentwicklung ist heute sehr schwierig."
- "Teams sind nicht homogen und zentralisiert."
- "Verfügbare Werkzeuge arbeiten nicht gut
zusammen." - "Ich muß den Überblick über Stand und Qualität
meines Produkts behalten." - "Wir brauchen anpaßbare Prozessrichtlinien."
74Entwicklungsteams
75Visual Studio 2005
ArchitektenEntwicklerTester Projekt-Manager
Hobby-EntwicklerSchülerStudenten
76Team-Kommunikation
Enterprise SCC, Reporting, Bug Tracking,
Projektmanagement
Qualitätssicherung
Statische Analyse, Performance Profiling, Unit
Testing, Stress Testing
Designing for Operations
SOA Designing, Infrastruktur- Klassendesigner,
Validierung
Plattform for Innovation
Web Service APIs, offene Protokolle, Client APIs,
VSIP mehr
77Visual Studio 2005 Team System
Visual StudioTeam Architect
Visual StudioTeam Developer
Visual StudioTeam Test
- Designer für
- verteilte Anwendungen
- logische Infrastruktur
- Klassenmodell
- UML DSLs
Visual StudioTeam Foundation
78(No Transcript)
79(No Transcript)
80(No Transcript)
81Visual Studio 2005 Team System
Visual StudioTeam Architect
Visual StudioTeam Developer
Visual StudioTeam Test
- statische Code-Analyse
- PREfast
- FxCop
- Code Profiling
- Code Coverage
- integriertes Unit Testing
Visual StudioTeam Foundation
82(No Transcript)
83(No Transcript)
84Visual Studio 2005 Team System
Visual StudioTeam Architect
Visual StudioTeam Developer
Visual StudioTeam Test
- Load Testing
- Unit Testing
- Application Verifier
- Test Authoring
Visual StudioTeam Foundation
85(No Transcript)
86Visual Studio 2005 Team System
Visual StudioTeam Architect
Visual StudioTeam Developer
Visual StudioTeam Test
- Versionskontrolle
- Work Item Tracking
- Change Mgmt.
- Build-Automatisierung
- Reporting
- Projektportal
Visual StudioTeam Foundation
87(No Transcript)
88Check-In-Regeln müssen erfüllt sein
89(No Transcript)
90Visual Studio 2005 Team System
Visual StudioTeam Architect
Visual StudioTeam Developer
Visual StudioTeam Test
- Projektmanagement
- Portfolio vs Projekt
- Portal
- Anforderungen
- Metriken
- anpaßbare Prozesse
- Templates
Visual StudioTeam Foundation
91(No Transcript)
92Work Item Tracking in Excel, bzw. ...
93... in MS Project ...
94... in Visual Studio
95(No Transcript)
96 Reporting
97 Build Server
98Methodik
99Architekturübersicht
100Eat your own foodStand 2.Juni 2005
Von Eric Lee (VSTS)Gesendet Donnerstag, 2.
Juni 2005 2141An VSTS DiscussionBetreff
latest dogfood statistics Hey guys, Our
development teams have been actively using (or
dogfooding) Team Foundation Server for the
past several months. Here is an update on the
latest statistics on those efforts Availability
(over the past week) The server was available
99.04 of the time. Users Recent users 401
(new statistic) Users with assigned work items
434 (up 2) Version control users 319 (up
69) Work items Work items 33,626 (up over
7,000) CSS nodes 1,709 (down 8) Work item
versions 242,327 (up 48,000) Attached files
8,014 (up 1,400) Queries 2,619 (up
550) Version control Files/Folders
271,766/30,376 (up 200,000/21,000) LocalVersion
11 million (up 7 M) Total compressed file sizes
10.3G (up 8.6G) Workspaces 612 (up
160) Shelvesets 1,254 (up 400) Checkins 3,489
(up 2,100) Pending changes 4,806 (up
2,500) Commands (last 7 days) Work Item
queries 11,758 (new statistic) Work Item
updates 11,454 (new statistic) Work Item opens
56,337 (new statistic) Gets 22,190 (up
11,000) Downloads 3.6M (up 2.7M) Checkins 289
(down 7) Uploads 73,843 (up 69,000) Shelves 372
(down 250) Thanks! Eric.
- 400 User
- 33.000 Work Items (240.000 different Versions)
- 270.000 Files/Fldr under Version Control
- File Size 10,3 GB (comp.)
- Srv. Availability 99,04
101Zusammenfassung
- Visual Studio 2005 Team System als Werkzeug
- Mehr Funktionalität und Prpduktivität bei der
Entwicklung eigener Lösungen - Kohärente Verwaltung des Software-Lifecycle
reduziert Komplexität und steigert Qualität - Visual Studio 2005 Team System als Plattform
- Erweiterung der bestehenden Werkzeuge der IDE
durch eigene Angebote - Erstellung branchenspezifischer
Modellierungstools Prozesse ? Software Factories
102Questions Answers
?
?
?
103(No Transcript)