Bonjour à tous,
Après avoir lu de nombreux sites / articles / blogs sur comment « bien » ou du moins, mieux structurer une application, je me suis lancé dans le bain pour essayer de prendre enfin de bonnes habitudes.
Je suis en train de créer une application qui doit stocker / récupérer ses données depuis un fichier XML.
Par exemple, concernant l’insertion d’une nouvelle donnée, où doivent se trouver toutes les validations sur l’intégrité de la « clé » de la donnée?
Pour l’instant, dans ma DAL, je fais tous les traitements suivants:
vérifier que le paramètre passé n’est pas null, sinon ArgumentNullException
vérifier que la propriété « clé » du paramètre n’est pas null, sinon ArgumentException
vérifier qu’il n’existe pas déjà un objet avec la même clé sinon DuplicateKeyException
sérialiser l’objet, et envoie une DALException en cas d’exception dans la sérialisation
ajouter l’objet sérialisé dans le XML et l’enregistrer, lancer une DALException en cas d’exception
Est-ce que c’est bien de mettre tous ces traitements dans la DAL ou bien est-ce que certains doivent se trouver à un plus haut niveau?
Ce qui me gêne en faisant ça, c’est que dans ma BLL, j’ai un traitement comme ça quand je veux ajouter un objet:
[code]public static void AddConnection( Connection connection)
{
try
{
DataContext.Add( newConnection );
}
catch (DuplicateKeyException e)
{
}
catch (ArgumentNullException e)
{
}
catch (ArgumentException e)
{
}
catch (DALException e)
{
}
}[/code]
Afin de récupérer les différents cas de plantage et pouvoir afficher un message d’erreur plus explicite…
Comment je peux améliorer tout ça?
Faire en sorte que la DAL ne lance que des DALException me paraît être un bon point déjà, mais dans ce cas, est-ce que toutes les vérifications sur null, sur la valeur de la clé, sur les doublons, etc… vont dans la BLL?
Merci d’avance pour vos avis éclairés
Mike
Edit: ajout des balises de code