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

C# Discussion :

N-Tier Architecture & WCF


Sujet :

C#

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 34
    Par défaut N-Tier Architecture & WCF
    Bonjour,

    je souhaite créer un service web WCF communiquant avec une base de données Oracle.

    Après plusieurs heures de recherche sur le découpage n-tiers, j'ai encore des questions.

    Je me suis basé sur l'article suivant : A N-Tier Architecture Sample with ASP.NET MVC3, WCF, and Entity Framework.

    http://www.codeproject.com/Articles/...s and Projects

    J'ai donc réalisé à mon tour un découpage pour mon application.

    DataBase Layer : Oracle DataBase.

    Data Access Layer :
    1 projet contenant :
    - 1 classe de connexion à ma base.
    - 1 classe de mappage contenant l'ensemble des requêtes SQL.

    Business Layer :
    1 projet Entity contenant :
    - mes différentes classes objets (Domain).
    1 projet WCF contenant :
    - 1 Interface Service.
    - 1 SVC.
    1 projet Service contenant :
    - mes différentes classes de services (Service).

    En regardant de plus près l'article et le découpage, je vois que le fichier SVC comprend les lignes de code suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <%@ ServiceHost Language="C#" Debug="true" Service="GH.Northwind.Business.NorthwindSvr" %>
    <%@ Assembly Name="GH.Northwind.Business" %>
    L'interface Service :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        [ServiceContract]
        public interface INorthwindSvr
        {
            [OperationContract]
            List<Customer> GetCustomers();
    Et pour finir le Service :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            public List<Customer> GetCustomers()
            {
                return PersistSvr<Customer>.GetAll().ToList();
            }
    Je souhaite donc faire de même dans mon application. Mais je ne comprend pas comment faire pour arriver à un tel découpage.



    Actuellement je place mes méthodes directement dans mon Web Services et non dans le projet de Service, et je pense que la façon de faire de l'article est plus propre.

    J'espère être assez clair.

    Merci d'avance

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Je pense que tu devrais séparer le business du web service, et donc avoir 3 projets au sein d'une solution :
    - Data Access Layer
    - Business Layer
    - Service Layer

    Sachant que la couche Service va consommer la couche Business. L'avantage de faire ça, c'est que si demain tu dois rajouter une UI, il te suffira de rajouter un projet "UI", qui consommera également la couche Business.

    Ou bien si tu dois réutiliser ta couche Business dans une autre application, tu n'auras pas besoin de trimbaler tout ce qui est lié à la couche Service...
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 34
    Par défaut
    Donc dans mon Business je n'aurais que mon Domain.
    Et dans mon Service, ma classe de Service avec mes méthodes et mon projet WCF ?

    Sinon une idée pour que mon interface de mon projet WCF implémente mes méthodes de mon Service ?

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Heimerdi Voir le message
    Donc dans mon Business je n'aurais que mon Domain.
    Ben le Business ce sont toutes les règles métier. Donc tout dépend de ton projet, mais par exemple une règle métier c'est :

    - Je suis dans la couche Business. La DAL me renvoie un objet de type Tigre. Sous certaines conditions, je dois convertir un Tigre en Lion.

    Donc tout ce qui a trait à la manipulation des objets.

    Citation Envoyé par Heimerdi Voir le message
    Et dans mon Service, ma classe de Service avec mes méthodes et mon projet WCF ?
    Oui. Enfin, quand tu dis "avec mes méthodes", si tu parles du Business, il faut bien sûr les mettre dans la couche Business.

    L'objectif au final c'est que si demain tu rajoutes une UI, tu aies le même comportement en appelant la couche Business depuis l'UI ou depuis ton Service. En cas de modification, il suffira de modifier la couche Business.

    Citation Envoyé par Heimerdi Voir le message
    Sinon une idée pour que mon interface de mon projet WCF implémente mes méthodes de mon Service ?
    Peux-tu être plus précis ? Une interface s'implémente au sein d'une classe. En soit, c'est juste un contrat. Par exemple :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public interface IMonInterface
    {
        void Get();
        void GetAll();
    }
    Puis je l'implémente dans ma classe :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class MaClass : IMonInterface
    {
        public void Get()
        {
            // l'implémentation
        }
     
        public void GetAll()
        {
            // l'implémentation
        }
    }
    Ensuite, que je manipule un objet de type MaClass, ou un objet de type IMonInterface, je suis sûr de pouvoir trouver les deux méthodes Get et GetAll.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 34
    Par défaut
    Je suis en accord avec ton découpage

    J'ai mon service web WCF, dedans mon Interface, j'aimerais que cette interface utilise mes méthodes présentent dans ma classe Service. Il s'agit probablement d'une histoire de endpoint et de .config ...

    EDIT - Résolu
    J'ai trouvé un tuto sur CodeProject avec la solution a mon problème

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Combiner 3 tiers architecture avec MVC
    Par medirama dans le forum Windows Forms
    Réponses: 1
    Dernier message: 25/06/2014, 09h58
  2. Réponses: 2
    Dernier message: 28/11/2012, 20h51
  3. Architecture et WCF
    Par topolino dans le forum Windows Communication Foundation
    Réponses: 1
    Dernier message: 21/03/2011, 13h39
  4. Architecture : Silverlight - WCF - Entity Framework
    Par darkfrag dans le forum Silverlight
    Réponses: 6
    Dernier message: 02/12/2009, 17h52
  5. Architecture avec WCF
    Par crevygood dans le forum Windows Communication Foundation
    Réponses: 1
    Dernier message: 13/11/2009, 17h13

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