+ All Categories
Home > Documents > Deklarative Programmierung mit Attributen Ralf Westphal [email protected].

Deklarative Programmierung mit Attributen Ralf Westphal [email protected].

Date post: 05-Apr-2015
Category:
Upload: leonhardt-bontrager
View: 108 times
Download: 0 times
Share this document with a friend
15
Deklarative Programmierung mit Attributen Ralf Westphal [email protected]
Transcript
Page 1: Deklarative Programmierung mit Attributen Ralf Westphal ralfw@ralfw.de.

Deklarative Programmierung mit Attributen

Ralf [email protected]

Page 2: Deklarative Programmierung mit Attributen Ralf Westphal ralfw@ralfw.de.

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

Page 3: Deklarative Programmierung mit Attributen Ralf Westphal ralfw@ralfw.de.

Attribute

Typsichere erweiterbare Metadaten• 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

Page 4: Deklarative Programmierung mit Attributen Ralf Westphal ralfw@ralfw.de.

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

Page 5: Deklarative Programmierung mit Attributen Ralf Westphal ralfw@ralfw.de.

Attribute im .NET Framework

XML-Serialisierung XML Web Services Code Access Security Serviced Components COM-Interop, P/Invoke Assemblyannotation Attributdefinition

etc.

Page 6: Deklarative Programmierung mit Attributen Ralf Westphal ralfw@ralfw.de.

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

Page 7: Deklarative Programmierung mit Attributen Ralf Westphal ralfw@ralfw.de.

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()]

Page 8: Deklarative Programmierung mit Attributen Ralf Westphal ralfw@ralfw.de.

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

Page 9: Deklarative Programmierung mit Attributen Ralf Westphal ralfw@ralfw.de.

Attributaktivität

Passive Attribute

• Werden durch den Container interpretiert

Aktive Attribute

• Container stößt Funktionalität in Attributinstanz an

• Automatische Aktivität mit Kontextattributen

Page 10: Deklarative Programmierung mit Attributen Ralf Westphal ralfw@ralfw.de.

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

Page 11: Deklarative Programmierung mit Attributen Ralf Westphal ralfw@ralfw.de.

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

Page 12: Deklarative Programmierung mit Attributen Ralf Westphal ralfw@ralfw.de.

Fragen!?

Uff...Uff...

Page 13: Deklarative Programmierung mit Attributen Ralf Westphal ralfw@ralfw.de.

Ressourcen

J. Richter: Microsoft .NET Framework Programmierung; ISBN 3860636502, MSPress 2002

I. Rammer: Advanced .NET Remoting; ISBN 1590590252, APress 2002

Page 14: Deklarative Programmierung mit Attributen Ralf Westphal ralfw@ralfw.de.

Ü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: www.ralfw.de

Page 15: Deklarative Programmierung mit Attributen Ralf Westphal ralfw@ralfw.de.

.NET kompakt140 Seiten, Spektrum Akademischer Verlag, 2002, ISBN 3827411858

ADO.NET Datenbankprogrammierung 130 Seiten , Addison-Wesley , 2002 , ISBN 3827319978

Jetzt lerne ich ADO.NETEinfache Datenbankprogrammierung im .NET- Framework400 Seiten, Markt+Technik, 2002, ISBN 3827262291 (erscheint 2003)

Bücher des Referenten


Recommended