IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Framework .NET Discussion :

DataContract, n-tier, Entity Framework.. Je me perds !


Sujet :

Framework .NET

  1. #1
    Membre habitué
    Inscrit en
    Décembre 2010
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 92
    Points : 129
    Points
    129
    Par défaut DataContract, n-tier, Entity Framework.. Je me perds !
    Bonjour à tous,

    je suis depuis peu développeur asp.net et je viens d'un tout autre langage (php).
    J'ai été recruté dans une boite depuis environ 3mois qui a déjà un gros projet .net (C#).

    J'aurais normalement du être formé à ce langage, mais le seul développeur qui pouvait me former est parti...
    Il se trouve donc que je suis face à pas mal de concepts que j'ai pour l'instant un peu de mal à appréhender.

    J'arrive à développer, car je connais l'objet (l'objet Php... c'est donc bien limité) et le typage, cependant, j'aimerais savoir si vous pouviez m'aider à comprendre les termes suivant :

    DataContrat :
    - C'est la classe d'un objet ?

    n-tier :
    - Ca c'est une architecture de projet mais j'ai pas compris quel était le but et l'avantage par rapport à d'autres (MVC par exemple).

    Entity Framework :
    - Pas trop d'idée là dessus... c'est une couche abstraite pour accéder aux données en base c'est ça ?


    Merci beaucoup par avance, et n'hésitez pas à me donner des liens, tutos ou podcast où je pourrais me former et monter en compétence sur cette belle techno.

    Merci par avance !

    Julien

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par same66 Voir le message
    DataContrat :
    - C'est la classe d'un objet ?
    C'est un attribut utilisé pour rendre une classe serialisable et c'est très utilisé en WCF (technologie permettant de créer des services incluant les services web)

    Citation Envoyé par same66 Voir le message
    n-tier :
    - Ca c'est une architecture de projet mais j'ai pas compris quel était le but et l'avantage par rapport à d'autres (MVC par exemple).
    le n doit représenter quelque chose : 2-tiers (client-serveur) 3-tiers (client-serveur d'applications-SGBDR) ?
    AMHA, le MVC c'est un Pattern d'architecture alors que le n-tiers c'est l'architecture physique c'est à dire la répartition physique des différentes parties de ton applications.

    Citation Envoyé par same66 Voir le message
    Entity Framework :
    - Pas trop d'idée là dessus... c'est une couche abstraite pour accéder aux données en base c'est ça ?
    C'est un ORM (Object Relational Mapping). En gros ça te permet de requêter ta base de données sans te soucier du SQL qui est généré automatiquement via les requêtes Linq to Entities que tu auras écrites.

  3. #3
    Membre chevronné Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Points : 2 227
    Points
    2 227
    Par défaut
    La notion de DataContract intervient dans le cadre des contrats de services inter-applicatifs (ServiceContract), au niveau des services Web type WCF.
    En gros, cela correspond à indiquer quel type de données le fournisseur s'engage à transmettre au(x) client(s).

    Tu peux pousser un peu ici

    Une architecture n-tiers, d'ailleurs généralement sur trois tiers, est généralement organisée comme suit :
    - Couche d'interface (IHM ou pas)
    - Business Logic layer (couche métier)
    - Data access layer (couche d'accès aux données)

    Le MVC va être utilisée plutôt pour des applications web (éventuellement des clients lourds), l'architecture n-tiers est plus généraliste.

    Entity Framework est un ORM qui gère l'accès aux données (mapping relationnel). Il est intégré dans le framework depuis 3.5 et fonctionne très bien avec SQL server, mais comme tout ORM, il a des avantages et des inconvénients, donc à voir si son utilisation est adaptée à ton projet ou non.

    N'hésite pas à rebondir si tu as des remarques !
    One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

    -- Chuck Palahniuk, Fight Club, Chapter 3 --

  4. #4
    Membre habitué
    Inscrit en
    Décembre 2010
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 92
    Points : 129
    Points
    129
    Par défaut
    Alors tout d'abord, merci à vous deux pour ces rapides réponses !

    Mon application est donc bien une appli web et c'est effectivement du n-tier avec 3couches comme tu le dis Er3van.

    Utiliser l'architecture n-tier déjà mise en place me permet donc si j'ai bien saisi de découper mon code par couche.

    Je rebondis juste sur Entity Framework, car je me demande s'il est normal qu'en plus de Entity Framework, j'ai ADO.NET ?

    De plus, LinQ est par défaut importé avec Entity Framework ?

    Connaissez-vous par hasard de très bon livres ou tuto online car j'ai réellement l'envie de monter en compétence, mais j'ai souvent l'impression de rater pas mal de points du fait que je développe sur une appli déjà structurée.
    Je manque de notion de base, et ça me fait défaut (comme on peut le voir dans mes questions).

    Merci beaucoup pour votre précieuse aide !

  5. #5
    Membre chevronné Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Points : 2 227
    Points
    2 227
    Par défaut
    ADO.net c'est un ensemble, qui contient notamment Entity Framework.
    Le nom complet d'EF c'est ADO.Net Entity Framework.

    Pour ce qui est de LinQ, c'est un language de requêtage "évolué".
    LinQ se combine aux expressions lambdas et permet de faire des requêtes assez complexe de façon très condensée.

    LinQ a été notamment porté pour XML (LinQ to XML), SQL (LinQ To SQL) et également Entity Framework (LinQ to Entities), ce qui permet de façon très simple d'accéder à ta base, via ton ORM (Entity Framework).

    Par exemple, une fois que tu as fait ton mapping via Entity Framework, tu peux avec une requête LinQ, faire quelque chose comme ça, qui est normalement assez simple à lire :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    usine(MyDBEntities context = new MyDBEntities()) {
        var myCustomerLastNames = from c in context.CustomerTable where c.CustomerName.startWith("s", StringComparison.CurrentCultureIgnoreCase) select c.CustomerLastName).ToList();
    }

    Voici un lien très utile : Julie Lerman's guide. Je te conseille de commencer par EF 4 - part 1
    One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

    -- Chuck Palahniuk, Fight Club, Chapter 3 --

  6. #6
    Membre habitué
    Inscrit en
    Décembre 2010
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 92
    Points : 129
    Points
    129
    Par défaut
    Ok, effectivement, c'est plutôt énorme ce que ça permet de faire.

    Donc là, dans ta requête il va taper dans entity et entity est préalablement chargé sur le SQL c'est ça ?

    ça donne un peu : LinQ => Entity(si on veut passer par entity sinon on saute cette étape) => XML, SQL ou n'importe quel langage de données

    Je me trompe ?

    Je vais regarde le lien que tu m'as donné, merci beaucoup pour ton aide en tout cas .

  7. #7
    Membre chevronné Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Points : 2 227
    Points
    2 227
    Par défaut
    Euh non, pas tout à fait.

    En fait, il faut préalablement que tu fasses ton mapping base-code via Entity Framework (tu peux mapper en quelques secondes ta base de données SQL Server).
    Une fois que ce mapping est fait, tu peux requêter via ton ORM la base de données.

    Dans mon exemple, tu requêtes sur la table Customers pour récupérer la liste des noms de famille dont le prénom commence par un "s". C'est juste pour montrer comment formaliser une requête.
    En gros, tu fais une pseudo requête en C# qui sera traduite à volée en SQL par Entity Framework et qui te retournera directement une collection (ici une liste de Customers) pour que tu puisses ensuite l'utiliser.

    LinQ to XML c'est autre chose, mais ça te permet de "requêter" un fichier XML (sur le même principe).
    One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

    -- Chuck Palahniuk, Fight Club, Chapter 3 --

Discussions similaires

  1. Architecturer un projet MVC en N-tiers, avec entity framework
    Par Arnaud13 dans le forum ASP.NET MVC
    Réponses: 6
    Dernier message: 10/11/2013, 20h56
  2. Entity Framework et modèle n-tiers
    Par jbrasselet dans le forum Entity Framework
    Réponses: 4
    Dernier message: 11/05/2011, 10h38
  3. version final d'Entity framework
    Par korchimustapha dans le forum Général Dotnet
    Réponses: 8
    Dernier message: 04/07/2008, 17h21
  4. [ADO.NET Entity Framework] génération des tables
    Par anthyme dans le forum Accès aux données
    Réponses: 3
    Dernier message: 22/02/2008, 17h44
  5. Linq - Entity Framework
    Par Jfrancois57 dans le forum Framework .NET
    Réponses: 11
    Dernier message: 12/02/2008, 08h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo