Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Deklarative Programmierung mit Attributen

Ähnliche Präsentationen


Präsentation zum Thema: "Deklarative Programmierung mit Attributen"—  Präsentation transkript:

1 Deklarative Programmierung mit Attributen
MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 1 Deklarative Programmierung mit Attributen Ralf Westphal

2 Deklarative Programmierung?
Beschreiben, was ein Ergebnis sein soll Weniger fehlerträchtig, da kein Prozess implementiert werden muss Nicht das Wie nennen, um zu dem Ergebnis zu kommen Gegensatz: Imperative Programmierung Beispiel: SQL select vs low-level DB API

3 Attribute Typsichere erweiterbare Metadaten Anwendung
Typsicher: Attribute sind Klassen Erweiterbar: Eigene Attributklassen möglich Metainformation: Annotation von Sprachkonstrukten z.B. Assembly, Klasse, Eigenschaft, Methode, Parameter Sprachübergreifend „Attribute“ sind nicht neu Sichtbarkeitsangaben, COM+ Tx-Einstellungen, XML-Attribute, COM Typlibs Anwendung Sprachabhängige Notation Attributdefinitionen sind Konstruktoraufrufe Attributobjekt wird erst bei Zugriff via Reflection erzeugt

4 Beispiele <WebService()> _ Public Class MyService
<WebMethod()>_ Public Function Add(...) ... End Class [Serializable()] Public class MyClass { public string name; } <DBTable("Customers")> _ Public Class Customer <DBField("CustomerID")>_ Public id As String Public companyname As String ... End Class

5 Attribute im .NET Framework
XML-Serialisierung XML Web Services Code Access Security Serviced Components COM-Interop, P/Invoke Assemblyannotation Attributdefinition etc.

6 Definition Ableitung einer Klasse von System.Attribute
Klassennamepostfix: „Attribute“ Einschränkung der Nutzung über AttributeUsage-Attribut Konstruktor-Parameter, Felder, Eigenschaften Als Typen sind nur vordefinierte erlaubt, z.B. Boolean, Char, Integer, String, Object Eindim. Arrays dieser Typen Zuweisung im Quelltext durch konstanten Ausdruck Mehrfachbenutzung eines Attributes nur erlaubt, wenn AllowMultiple = true Attributvererbung nur, wenn Inherited = true Gilt nur für Klassen, Methoden, Eigenschaften, Ereignisse, Parameter

7 Anwendung Sprachabhängige Syntax für die Annotation
Attributangaben sind Konstruktoraufrufe Übergabe von Parametern Aufruf erst bei Zugriff mit Reflection Zuweisung von Werten an öffentliche Felder in Konstruktor-Parameterliste [DllImport("Kernel32", CharSet=CharSet.Auto)] Mehrere Attribute können dasselbe Konstrukt annotieren Getrennte Attributangabe Kommaseparierte Liste Explizite Gültigkeitsangabe möglich <Assembly: AssemblyVersion("1.0.*")> [type: Serializable()]

8 Zugriff Container implementiert Zugriff auf Attribute
Ohne Container keine „Wirkung“ Der Wert eines Attributs „entsteht im Auge des Betrachters“ Instanzen über Reflection ermitteln System.Attribute .IsDefined(), .GetAttribute(), .GetAttributes() Ziel-Typ .IsDefined(), GetAttributes() Funktioniert nicht für Pseudo-benutzerdefinierte Attribute (PbA) Z.B. System.SerializableAttribute Speicherung als komprimierte Bit-Information in den Assembly-Metadaten Alternative für einige PbA: Eigenschaften auf System.Type wie .IsSerializable

9 Attributaktivität Passive Attribute Aktive Attribute
Werden durch den Container interpretiert Aktive Attribute Container stößt Funktionalität in Attributinstanz an Automatische Aktivität mit Kontextattributen

10 Kontextattribute Automatische Aktivierung bei Objekterzeugung
.NET Remoting Infrastruktur ist Container Definieren virtuelle Remoting-Grenzen in einer AppDomain Dienen der Registrierung von Kontexteigenschaften und –sink-Objekten Sinks ermöglichen das Abfangen von Nachrichten (Methodenaufrufe) in einen Kontext hinein Definition Ableitung der Attributklasse von ContextAttribute Zu annotierende Klasse muss von ContextBoundObject abgeleitet sein

11 Deklarative Programmierung!
Annotation von Konstrukten mit Funktionalität Aktive Attribute Kein Eingriff in Konstrukte nötig Orthogonale Funktionalität Alternative zu „Ausprogrammierung“ (Instrumentierung) Delegation Vererbung

12 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 12
Fragen!? MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 12 Uff...

13 Ressourcen J. Richter: Microsoft .NET Framework Programmierung; ISBN , MSPress 2002 I. Rammer: Advanced .NET Remoting; ISBN , APress 2002

14 Über den Referenten Ralf Westphal ist freier Softwaretechnologievermittler. Er arbeitet als Fachautor, Coach/Berater, Softwareentwickler und Sprecher auf Konferenzen im In- und Ausland wie Microsoft Technical Summit, XML-in-Action, BASTA!, COMDEX, Software Development oder XML One. Der Schwerpunkt seiner Arbeit liegt bei der Vermittlung und Anwendung moderner Softwaretechnologien und -konzepte auf der Microsoft Plattform mit Fokus in den Bereichen OOP/komponentenorientierte Entwicklung, Softwarearchitektur und .NET Framework. Darüber hinaus ist Ralf Westphal einer der deutschen Microsoft MSDN Regional Directors, Mitglied verschiedener Fachbeiräte und war von 1998 bis 2001 Chefredakteur der Visual Basic Fachzeitschrift BasicPro. Homepage:

15 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 15
Bücher des Referenten MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 15 .NET kompakt 140 Seiten, Spektrum Akademischer Verlag, 2002, ISBN ADO.NET Datenbankprogrammierung 130 Seiten , Addison-Wesley , 2002 , ISBN Jetzt lerne ich ADO.NET Einfache Datenbankprogrammierung im .NET- Framework 400 Seiten, Markt+Technik, 2002, ISBN (erscheint 2003)


Herunterladen ppt "Deklarative Programmierung mit Attributen"

Ähnliche Präsentationen


Google-Anzeigen