Title: Enterprise Library
1Enterprise Library Extensions (ACA.NET 4.0)
Forum Architecte 10 février 2005
Vincent Derenty vincentd_at_avanade.com Damien
Nanquette damienn_at_avanade.com
2Sommaire
- Introduction
- Patterns Practices, Avanade et les applications
blocks - Enterprise Library
- Demos
- Extension à Enterprise Library (ACA.NET 4.0)
- Demos
3Patterns PracticesArchitecture Guidance for
the Enterprise
Éprouvées Basées sur lexpérience terrain,
validées et testées Prescriptives Offrent les
meilleurs conseils possibles Pratiques Décrivent
les étapes pour réussir Utiles Adressent des
problèmes concrets
Available online http//www.microsoft.com/practi
ces Books available http//www.amazon.com/pract
ices
Building Blocks IT Services
Enterprise Solution Patterns
Reference Architectures
Atomic solutions to recurring problems
Sub-system-level guidance for common services
System-level guidance for common customer
scenarios
D
A
D
I
D
A
D
I
A
A
D
D
I
I
Lifecycle Guidance Guidance for tasks such as
deployment and operations in a production
environment
4Avanade en 60 secondes
- Avanade continue sa croissance en Novembre
2004, Avanade emploie 2,800 personnes sur 30
sites. - Nous avons réalisé plus de 2,500 projets pour
plus de 1,300 clients. - En 2002 et 2003 le suivi de satisfaction des
clients indique un taux de satisfaction de 96
(très satisfait ousatisfait) - Plus de 75 de nos consultants sont certifiés
Microsoft de nombreux ont plusieurs
certifications.
- Avanade Americas
- Seattle
- San Francisco
- Chicago
- Dallas
- New York
- Toronto
- St. Louis
- San Antonio
- Nashville
- Kansas City
- Cincinnati
- Avanade Europe
- Paris
- London
- Milan
- Rome
- Madrid
- Barcelona
- Malaga
- Kronberg
- Almere
- Avanade Asia
- Singapore
- Kuala Lumpur
- Bangkok
- Avanade India
- Mumbai
- Bangalore
- Hyderabad
- Avanade Australia
- Sydney
- Melbourne
- Brisbane
- Canberra
5Quel est exactement le problème ? (1/2)
- La plateforme Microsoft .NET inclut de
nombreuses fonctionnalités génériques - La plateforme est donc bien adaptée à une large
variété darchitectures dapplications. - Pour autant, de nombreux utilisateurs de .NET ont
des besoins demandant un niveau dabstraction
plus élevé. La plateforme ne permet pas toujours
de les créer sans un grand travail. - De plus, il nexiste pas de guides prescriptifs
qui relient les fonctionnalités de la plateforme
entre-elles.
6Quel est exactement le problème ? (2/2)
- Combien de fois les développeurs demandent ?
- La plupart des applications ont besoin dun
composant comme ceci - De nombreuses personnes ont du déjà écrire des
composants de ce type - Jaimerais bien trouver une solution que je
puisse réutiliser. -
7Que sont les PP Applications Blocks ?
- Il en existe 11 aujourdhui.
- Ils sont réutilisables, extensibles et
modifiables. - Ce sont des fragments réutilisables
darchitecture applicative - User Interface Process, OffLine, Service
aggregation
8Quest-ce que Avanade Connected Architectures
(ACA)?
- ACA est un ensemble darchitectures qui améliore
la performance, la qualité et lagilité des
solutions mises en oeuvre par Avanade. - Solution Architecture (ACA.NET)
- Collaboration (ACA Portal)
- Integration (ACA BPI)
- Batch (ACA Batch)
- Development Architecture
- Infrastructure and Operations Architecture (ACA
Infrastructure for .NET) - Avanade Connected Methods (ACM)
- ACA supporte totalement la plateforme Microsoft
.NET. - Il est développé et maintenu par une équipe
dédiée (RD) team. - Il utilise des fonctionnalités innovantes.
- Certaines fonctionnalités intégrées proviennent
des travaux des projets. - ACA est conforme avec les meilleures pratiques
édictées par Microsoft.
9Le feedback sur les applications blocks
- Le feedback est très positif mais
- il est possible daméliorer quelques points
- que les blocks soient plus consistants,
- quils soient mieux intégrés entre eux,
- quils minimisent les dépendances
- Entre eux,
- Par rapport à linfrastructure.
- que lon facilite
- Lévaluation et la compréhension des blocks,
- leur utilisation,
- leur configuration.
10Sommaire
- Introduction
- Patterns and Practices, applications blocks et
ACA.NET - Enterprise Library
- Demos
- Extension à Enterprise Library (ACA.NET 4.0)
- Demos
11Quest-ce quEnterprise Library ?
- Bibliothèque de composants logiciels qui
permettent de répondre aux problèmes courants
pour le développement dapplications dentreprise
dune manière consistante, en suivant les
meilleures pratiques. - Fait partie des bibliothèques de patterns
practices - Objectif principal consistance, extensibilité,
facilité dutilisation et intégration. - La V1 a été créée en partenariat avec Avanade, en
profitant de lexpérience provenant des projets
clients et en incorporant des concepts du
framework ACA.NET.
12Consistance
- Tous les composants dEnterprise Library suivent
les règles suivantes - Mêmes principes de design et dimplémentation,
- Configuration,
- Documentation,
- Tests,
- Outillages,
- Exemples,
- Les prérequis opérationnels,
- Les procédures dinstallations.
13Extensibilité
- Extension des blocks existants
- Permet dimplémenter des plugs-in.
- Guidelines pour créer de nouveaux blocs.
- Design patterns,
- Outil de configuration extensible,
- Modèles de documentation ,
- Définition des tests nécessaires.
14Facilité dutilisation
- Réduit fortement le code nécessaire pour les
besoins de développement en entreprise. - De nombreuses améliorations des Application
Blocks existants - Outil de configuration,
- Simplification de linstallation et du
déploiement, - Documentation améliorée et exemples.
15Intégration
- Enterprise Library est packagée comme une
bibliothèque intégrée. - Les blocks sont conçus pour fonctionner ensemble,
mais peuvent être utilisés individuellement. - La configuration prend en compte les dépendances
entre les blocs. - Certains blocks sont utilisés comme des
fournisseurs de service pour dautres blocks.
16Enterprise Library 1.0
- La première version dEnterprise Library comprend
les7 blocs suivants
17Console de configuration
- Permet de définir la configuration de
lapplication avec un outil guidant la définition
des stratégies des différents blocks. - Enterprise Library inclut une application
indépendante ou intégrée dans Visual Studio .NET.
18Scénario des démos
Caching Application Block
Cache
Event Log
Logging Instrumentation Application Block
LIAB Config Categories Sinks
Destinations
Flat File
Pricing Web service
Booking Web service
Data Access Application Block
DAAB Config Databases Pricing ? TechEd Bookings
? TechEd Connections TechEd SQL
Server serverlocalhost
Pricing Bookings
19Application ArchitectureBlueprint des
applications et des services .NET
Users
Operational Management
Security
Communication
UI Components
UI Process Components
Service Interfaces
Business Workflows
Business Components
Business Entities
Data Access Logic Components
Service Agents
Data Sources
Services
20Data Access Application Block (1/2)
- ADO.NET est une API très optimisée qui permet
dutiliser toutes les fonctionnalités des
systèmes bases de données. - Le code daccès aux données ADO.NET est
relativement lourd. - ADO.NET ne permet pas nativement décrire du code
portable. - ADO.NET noffre pas de mécanisme simple pour le
stockage des chaînes de connexions.
Data Access
21Data Access Application Block (2/2)
- Simplifie le modèle daccès aux données dADO.NET
et offre une portabilité transparente vers
différents types de bases de données.
ADO.NET
MS SQL Handler
SqlClient
Database Service Handler
Database Service Factory
Oracle Handler
OracleClient
IBM DB2 Handler
OleDb
Data Access Application Block
22Exception Handling application block (1/2)
- Le framework .NET propage les erreurs en
utilisant systématiquement le mécanisme des
exceptions. - Malheureusement, pour chaque type dexception, il
faut dupliquer le code pour différencier les
traitements. - LException handling framework permet de
centraliser le traitement des exceptions dans le
code. - En utilisant ce mécanisme, on peut aussi gérer
les problèmes opérationnels pour sassurer que.
chaque exception est journalisée.
Exception Handling
23Exception Handling Application Block (2/2)
- La configuration permet de définir les
traitements à effectuer suivant le type
dexception et la couche applicative. - Exemple toutes les exceptions de sécurité
provenant de la couche métier ont besoin dêtre
journalisées et les messages enrichis avant
dêtre propagés à la couche appelante. - Les actions sont extensibles, les implémentations
par défaut proposent de journaliser lexception
ou de la remplacer par une autre - Ce block a très peu en commun avec lEMAB qui
était précédemment utilisé. Il utilise le logging
application block pour journaliser les
exceptions.
24Caching Application Block (1/2)
- Le framework .NET offre des caches au niveau des
couches présentations telles dhttp (HttpCache). - Or, nous avons besoin de cacher des données dans
la couche métier de lapplication. Par exemple,
des données de références constamment utilisées
telles que les différentes pays, les différents
types de produits, les taux de TVA etc, nont pas
besoin dêtre obtenues du système de persistance. - Le caching application Framework permet
dutiliser facilement des données en cache dans
les couches métiers.
Caching
25Caching Application Block (2/2)
Client
- Le caching application block offre du caching
pour les infrastructures .NET. - Le support pour DB2 et Oracle du caching en base
de données, - Plusieurs instances de cache sont supportées par
application - Toute la configuration est effectuée par la
console dadministration.
Get/Set/Flush Cache Data
Cache Manager
Get/Set/Flush Cache Meta Data
Cache Service
Get/Set/Flush Cache Data
Cache Storage
Get/Set/Flush Cache Meta Data
database
in memory storage
26Logging and Instrumentation Application Block
(1/2)
- Windows et le Framework .NET offrent de nombreux
mécanismes pour permettre à une application de
publier des événements. - Un système de journalisation doit être
configurable pour permette une différencier les
destinataires des événements de différentes
natures (Trace ,Erreur, Erreur fatale). - De plus, on doit être capable de désactiver ou
dactiver les traces daudit. - Au niveau des performances, chaque appel à un
système de journalisation a un coût important
pour un système transactionnel. - Pour optimiser, le Logging Application block
propose une architecture asynchrone.
Logging
27Logging and Instrumentation Application Block
(2/2)
28Configuration Application Block (1/2)
- Le Framework .NET a en interne un excellent
mécanisme permettant de configurer les
applications et leurs composants par
lintermédiaire de fichier XML. - Malheureusement, la gestion des fichiers XML est
souvent fastidieuse, surtout quand on utilise des
frameworks darchitectures intégrés nécessitants
de nombreuses configurations !
Configuration
29Configuration Application Block (2/2)
- Permet aux applications de lire et décrire
facilement des données de configuration dans
différents emplacements configurables. - Ce block est utilisé par tous les blocks
dEnterprise Library. Il peut être utilisé par
des frameworks et des applications. - Il est composé de 2 parties
- Configuration Runtime que les applications
utilisent lors de lexécution. - Configuration Designtime qui permet de définir
les noeuds de loutil de configuration. - La configuration peut être cryptée et certains
éléments peuvent être masqués dans loutil.
30Security Application Block (1/2)
- Le Framework .NET offre de nombreuses
possibilités pour la gestion de la sécurité
authentification ASP.NET, habilitation par les
rôles, définition des permissions etc. - Malheureusement, du code applicatif est souvent
nécessaire pour utiliser ces différentes
fonctionnalités. - Dautre part le framework .NET noffre pas
dimplémentations pour la gestion des
habilitations.
Security
31Security Application Block (2/2)
- Offre une API simplifiée et des plugs-ins pour
les opérations de sécurité. - Couvre 5 aspects de la sécurité
Authentification, Habilitations, Rôles, Profiles
et Caching de la sécurité. - Chaque module supportent des extensions
implémentées par des plugs-ins. EntLib fournit
les implémentations pour les infrastructures
Microsoft (Active Directory, AzMan) et des
implémentations reposant sur une base de données. - Les développeurs peuvent construire leurs propres
plugs-in pour sinterfacer avec les solutions de
sécurité existantes.
32Cryptography Application Block (2/2)
- Le Framework .NET offre de nombreuses
implémentations dalgorithme de cryptage et de
hashage. - Il noffre pour autant pas nativement de solution
pour stocker les clés nécessaires, ni la
possibilité de configurer les algorithmes à
utiliser.
Cryptography
33Cryptography Application Block (2/2)
- Offre une approche simplifiée pour implémenter
les scénarios de cryptographie les plus communs. - Chaque module supporte des algorithmes pluggables
et le moyen de stocker des clés. - Supporte tous les algorithmes de cryptographie de
.NET (les développeurs peuvent implémenter les
leurs). - Les algorithmes et les clés peuvent être gérés à
travers loutil de configuration.
34Sommaire
- Introduction
- Patterns and Practices, applications blocks et
ACA.NET - Enterprise Library
- Demos
- Extension à Enterprise Library (ACA.NET 4.0)
- Demos
35ACA.NET
- ACA.NET
- Réduit le nombre de lignes de code applicatif
- Parce que les applications contiennent moins de
code, la maintenance est allégée. - Permet le développement dapplications orientées
service. - Augmente la consistance du code, la qualité, les
fonctionnalités et lagilité en utilisant
lArchitecture Orientée Aspect. - LArchitecture Orientée Aspect et lArchitecture
Orientée Service permettent de préserver le code
métier des changements pouvant se produire sur
les technologies de transport. - ACA.NET 4.0 offre des fonctionnalités clés pour
le développement dapplication pour Avanade.
ACA.NET 4.0 est construit sur Enterprise Library
1.0. - Plus de 330 projets chez 180 clients utilisent
ACA et plus de 25 clients utilisent SOA et AOA.
36Les fonctionnalités dACA.NET
- Les extensions et les fonctionnalités sont
construites sur Enterprise Library - Service Oriented Architecture
- Support de Visual Basic .NET et C.
- Aspect Oriented Architecture
- Support de Visual Basic .NET et C.
- Sender Generation Framework
- Mécanisme général daccès à un tiers données avec
un modèle simple, consistant et puissant. - Support du WSDL permettant aux développeurs
dassocier des aspects à des services non-ACA.NET
décrits dans des documents WSDL. - Machine à États permettant de décrire les
processus utilisateurs. - Extension des Blocks EntLib
- Validation
- WSE2 Security support
37ACA.NET 4.0 Overview
38Validation Service Fonctionnalités et avantages
- Associe des règles de validation à des données
membres de classe en utilisant des méta-données. - Par exemple NonNullable indique une valeur
qui ne peut pas être nulle. - Plusieurs attributs peuvent être associés à la
même donnée membre. - Les attributs de validation prennent des valeurs
paramétrables - Par exemple une données peut être associée avec
un tag tel que GreaterThan(25) - Les règles de validation peuvent être réutilisées
par plusieurs projets - Le service de validation est extensible sans
changer le service. - De nouvelles règles peuvent être ajoutées.
Validatable public class MyClass int
_myInteger string _myString GreaterThan(
5 ) public int MyInteger get return
_myInteger set _myInteger value
NonNullable MaximumLength(10) public
string MyString get return _myString
set _myString value
39Architecture de Service ACA.NET
- Larchitecture de service offre des
fonctionnalités pour construire des applications
métiers. - Rend abstrait les détails dinfrastructure pour
les technologies de transport. - Les développeurs de service ne se concentre que
sur les règles métiers. Linfrastructure
dACA.NET génère le code nécessaire pour
permettre à lapplication déchanger des
messages.
Sender
Messages
Receiver
Types
Service
40Architecture Orientée Aspect
- Larchitecture orientée aspect permet
dexternaliser des fonctionnalités pour quelles
soient plus faciles à utiliser. - Les aspects ont des fonctionnalités qui peuvent
être utilisées par tous types de services
métiers. - Ils sont Orthogonaux au code applicatif.
- Par exemple Tous les services sont uniques,
mais ils ont tous besoin dhabilitations. On peut
donc supposer que lhabilitation est un bon
candidat être un aspect. - Dans ACA.NET 4.0, les aspects permettent de
déclarer de nombreuses facettes des comportements
des applications. - Réduit le volume du code applicatif.
- Permet de modifier rapidement certaines
fonctionnalités.
41Metadata Driven Architecture
- La Metadata Driven Architecture est similaire à
la Model Driven Architecture. - La Metadata Driven Architecture peut réduire
énormément le code applicatif, permettant aux
développeurs de se concentrer sur les problèmes
métiers. - AcaService
- InProcessTransport
- WebServiceTransport
- public class MyService
-
- AcaServiceMethod
- AspectContainer("Container1")
- public void Foo()
-
-
-
42ACA.NET exemple dutilisation des aspects (1/2)
Enterprise Library
43ACA.NET exemple dutilisation des aspects (2/2)
Enterprise Library et ACA.NET 4.0
44ACA.NET 4.0
45Liens utiles
- Une documentation importante et la possibilité de
télécharger Enterprise Library se trouvent sur le
site msdn http//msdn.microsoft.com/library/def
ault.asp?url/library/en-us/dnpag2/html/entlib.asp
- Pour ACA et les solutions .NET Avanade de
nombreuses informations se trouvent sous
http//www.avanade.com/solutions/solution.aspx?id
3
46Questions ?
- Vincent Derenty (vincentd_at_avanade.com)