L'implémentation du CRUD peu être contractualisé pour les classes de la BLL et de la DAL. Ainsi, tu es certain que chacune des classes de tes couches présenteront des méthodes "normalisés".
Ce bien sont des objets de transfert de données. On dit aussi le Model, Entité ou Business Objects. Le projets dans lequel ces classes sont développées est transversal, référencé par la DAL et BLL pour pouvoir traverser toutes les couches. On en avait un peu discuté déjà.
On ne parle pas d'héritage pour les interface mais d'implémentation. Utiliser un "IFacadeInput" implique que tous tes DTO auront les mêmes propriétés que celles présentes dans l'interface. Ce qui n'est rarement le cas. Sauf pour une classe abstraite qui doit être hérité. Il vaut mieux utiliser la "gérénicité" ainsi:Ce code permet d'implémenter le CRUD sur la BLL et la DAL. Le "T" pour "Type" (mais on peu utiliser n'importe quelle lettre) remplace n'importe quel objet DTO à faire passer pour traiter les données.C'est le schéma "classique" d'une architecture en couches. Perso j'ajoute même un projet console qui me permet de tester ma BLL avant de créer mon interface web. Ainsi, je sais que les couches sont indépendante du choix du type d'interface.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 /// <summary> /// This Interface should be implemented by all Bll classes that manage objects from the model. /// These methods are from the basic CRUD concept. /// </summary> /// <typeparam name="T">Generic type</typeparam> public interface IBasicBll<T> { #region Members /// <summary> /// Method used to insert/create an entity in the database /// </summary> /// <param name="obj">The entity to create</param> /// <returns>Integer: the unique id of the record</returns> int Create(T obj); /// <summary> /// Deletes an entity in the database /// </summary> /// <param name="obj">An <c>Entity</c> of which unique identifier is set</param> /// <returns>True if success. False if fails.</returns> bool Delete(T obj); /// <summary> /// Updates an entity in the database /// </summary> /// <param name="obj">The entity to update</param> /// <returns>True if success. False if fails.</returns> bool Update(T obj); /// <summary> /// Returns an entity from the database /// </summary> /// <param name="obj">An <c>Entity</c> of which unique identifier is set</param> /// <returns>The requested entity</returns> T Load(T obj); #endregion }
A+