Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Thomas Lebrun

Tout sur WPF, LINQ, C# et .NET en général !

[Architecture] LINQ et le développement en couche

Voici un email que j'ai reçu au début de la semaine dernière:

Etant novice dans le .Net (avec un interet particulier sur les nouveaux framework 3.0 et 3.5) et desireux de pouvoir créer des applications/sites web avec une bonne architecture, J'ai lu votre articles [.NET] Article d'introduction au développement en couches que j'ai trouvé très interessant!

Seulement voila, avec l'apparision de LINQ, j'aimerai savoir comment va évoluer cette architecture?

Avec l'arrivée de plus en plus pressante de LINQ, je me suis dit qu'il s'agissait du genre de questions qui allaient rapidement faire leur apparition: c'est pourquoi je vous fait partager la réponse que j'ai envoyé (et qui n'engage que moi).

Lorsque l'on développement une application, on essaye au maximum d'isoler les différentes couches dans différents projets (comme expliqué dans mon article):

  • Une couche pour l'interface graphique (GUI)
  • Une couche pour la manipulation des règles et objets métier (BLL)
  • Une couche pour l'accès aux données (DAL)
  • Etc....

L'apparition de LINQ est un atout majeur en terme de développement d'applications. Cependant, il convient de bien distinguer LINQ To SQL du reste (LINQ To Objects, LINQ To XML, etc...).

En effet, LINQ To SQL est utilisé pour manipuler la base de données: création d'éléments, mise à jour d'une table, etc... Ce n'est pas parce qu'il s'agit d'une nouveauté que les méthodes utilisées actuellement vont devoir changer ! Actuellement, dans votre couche d'accès aux données, vous utiliser sans doute des objets tels que DBConnection, DBCommand, etc.... et bien LINQ To SQL ne va, en rien, modifier votre façon de travailler: vous continuerez de développer vos couches d'accès aux données mais en utilisant les "nouveautés" apportées par LINQ To SQL: DataContext, Mapping Objet/Relationnel, etc... Dans une version V1 d'un projet, vous avez créer votre DAL vous-même, en définissant vos objets métier ? Dans la V2, la DAL (et les objets métier) pourront être générés automatiquement avec LINQ To SQL, au moyen d'un simple glisser/déposer dans Visual Studio.

(Il est à noter qu'un tel discours pourrait également être appliqué à LINQ To Datasets et LINQ To Entities)

En ce qui concerne LINQ To Objects (et LINQ To XML d'ailleurs), la réponse est similaire: votre couche métier pourra facilement être réécrite en utilisant cette nouvelle fonctionnalité (ou simplement en utiliser quelques morceaux) mais il faut bien garder 2 choses en tête:

  • Rien ne vous obligera à le faire: votre BLL fonctionnait très bien avant alors pourquoi vouloir la changer Wink
  • Si vous le faîtes, vous vous rendrez vraiment compte à quel point utiliser LINQ, dans vos développements, vous permettra de gagner du temps et pourra, éventuellement, rendre votre code plus.... sympathique à lire pour les développeurs qui vous succèderont Smile

 

Pour conclure, je ne dirais qu'une chose: Oui, LINQ est une technologie vraiment puissante qui permet de faire plus vite et mieux mais Non, cela ne changera en rien la façon de concevoir des applications: à partir du moment où l'on utilise une base de données, on aura toujours besoin d'une DAL (couche d'accès aux données), que celle-ci soit écrite à la main, via des générateurs de code ou avec LINQ Wink

 

My 0.02 cents Smile

 

A+

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: mardi 6 novembre 2007 10:55 par Thomas LEBRUN
Classé sous : ,

Commentaires

Matthieu MEZIL a dit :

Salut Thomas,

D'accord avec toi même s'il est vrai que les entités générées par LINQ To SQL avec les partial methods rendent tentant la fusion de BLL et DAL.

Une bonne raison de garder séparées DAL et BLL peut être la suivante : rester indépendant, dans la BLL de la manière dont les données sont stockées (base de données, flux xml, etc) et ainsi pouvoir, dans le futur, changer à moindre coût.

# novembre 13, 2007 17:53

Merlin a dit :

Pour ceux qui ne savent pas encore très bien ce qu'est Linq et ses nombreuses moutures, un article très complet téléchargeable ici :

http://www.e-naxos.com/Blog/post.aspx?id=53903699-5ef1-458e-9ad4-112225f37c88

# décembre 14, 2007 16:28
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Comment mapper une vue SQL sur une collection de complex type? par Matthieu MEZIL le il y a 7 heures et 30 minutes

- SQL Server : Query Notification ou comment être notifié de modifications de données côté application (SqlDependency) par SQL Server vu par Christian Robert le il y a 13 heures et 30 minutes

- [WF4] Un Binding Activity/ActivityDesigner qui passe mal? par Blog de Jérémy Jeanson le il y a 14 heures et 53 minutes

- MyTIC – SharePoint 2010 : déjà un mythe Microsoft ? par Le Blog (Vert) d'Arnaud JUND le il y a 19 heures et 41 minutes

- TechDays 2010 Genève : Retrouvez-moi pour une session sur la Haute disponibilité et le ScaleOut avec SQL Server par SQL Server vu par Christian Robert le 03-18-2010, 15:45

- [MIX10] Keynote deuxième journée – Internet Explorer 9, Html5, Visual Studio 2010, OData par Atteint de JavaScriptite Aiguë [Cyril Durand] le 03-17-2010, 19:40

- Certifications beta .NET 4 par Kévin Gosse le 03-17-2010, 19:33

- [Mix 2010] – Microsoft Translator Technology Preview V2 par RedoBlog - The .NET Gentleman !!! le 03-17-2010, 18:53

- Lancement en Preview de Cyclone lors des TechDays 2010! par Blog de Frédéric Queudret le 03-17-2010, 16:30

- [WP7] Je ne veux pas d’un nouvel iPhone par Le blog de FremyCompany le 03-17-2010, 13:11