Date post: | 05-Apr-2015 |
Category: |
Documents |
Upload: | leonhardt-bontrager |
View: | 108 times |
Download: | 0 times |
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
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
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
Attribute im .NET Framework
XML-Serialisierung XML Web Services Code Access Security Serviced Components COM-Interop, P/Invoke Assemblyannotation Attributdefinition
etc.
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
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()]
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
Attributaktivität
Passive Attribute
• Werden durch den Container interpretiert
Aktive Attribute
• Container stößt Funktionalität in Attributinstanz an
• Automatische Aktivität mit Kontextattributen
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
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
Fragen!?
Uff...Uff...
Ressourcen
J. Richter: Microsoft .NET Framework Programmierung; ISBN 3860636502, MSPress 2002
I. Rammer: Advanced .NET Remoting; ISBN 1590590252, APress 2002
Ü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
.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