2009-04-23 5 views
3

Je développe une application dans ASP.NET C# et suis tombé sur le scénario suivant:ASP.NET C#: Quel motif de conception dois-je utiliser et pourquoi?

  1. je vais devoir créer des écrans de maintenance pour les différentes entités (tables)
  2. Ces entités essentiellement le même comportement dans l'interface utilisateur: Recherche, GetById, Enregistrer, créer et getAll
  3. les entités peuvent avoir une structure différente à savoir des propriétés différentes (champs)

Comme je parle de 20 plus les écrans admin, quel modèle de conception que je pouvais profiter de afin de minimiser la quantité de code que je vais devoir écrire?

Je pensais du bridge pattern mais je suis un peu confus sur la façon de la mettre en œuvre ...

Un peu de l'arrière-plan technologique J'utilise:

  1. ASP.NET classique (n -de base)
  2. aux objets SQL LINQ et DAO
  3. SQL Server 2005

Répondre

4

pour un ensemble de Les écrans d'administration qui font juste des opérations CRUD (Créer, Lire, Mettre à jour, Supprimer) et avec peu de logique métier, je serais plutôt tenté d'éviter plus ou moins les modèles de design et jetez un oeil à asp.net dynamic data. Ceci est particulièrement vrai si vous voulez minimiser la quantité de code que vous voulez écrire.

+0

Vous me battez à lui :) –

+0

Je comprends cela, mais cela ne fait pas partie de notre cadre, donc ne peut pas être utilisé! –

+1

Ok, dans ce cas, je voudrais regarder les modèles déjà utilisés dans votre «cadre» et utiliser un modèle similaire. S'il n'y a rien de similaire, vous pouvez regarder un modèle de référentiel générique - par ex. http://aleris.wordpress.com/2009/04/17/implementing-a-simple-generic-repository-with-linqtosql/ –

2

Ce n'est pas un modèle de conception ... mais je suggère fortement d'utiliser Dynamic Data. Jonathan Carter a d'excellents articles à ce sujet: http://lostintangent.com/index.php?s=dynamic+data

+0

Je comprends cela mais cela ne fait pas partie de notre framework, donc ne peut pas être utilisé! –

2

Si vous êtes vraiment en train de faire des choses de base comme: Search, GetById, Save, Create et GetAll, je vous recommande d'utiliser des dépôts. Si les mauvais référentiels peuvent être vraiment mauvais et mauvais, mais si vous êtes vraiment limité à cet ensemble d'opérations, vous avez essentiellement décrit un référentiel avec cet ensemble d'opérations.

Vous voudrez voir comment extraire la logique supplémentaire, par exemple de la recherche, afin de ne pas créer de logique dupliquée.

Les référentiels sont agréables et testables à condition de ne pas les laisser échapper à tout contrôle. Je vous donne cet avertissement seulement parce que j'ai vu beaucoup trop de gens créer des classes de monstres à partir de dépôts.

Les référentiels fonctionnent avec vos objets. Ils sont essentiellement l'intermédiaire qui gère la persistance de vos données. Cette abstraction vous permet de cacher au reste de votre code comment vous persistez vos données. Dans ce cas, les implémentations de vos dépôts utiliseront LinqToSql car je crois que c'est ce que vous avez dit que vous utilisiez.

Il y a beaucoup de ressources explaining the repository pattern.

+0

Désolé mais de quel type de référentiel parlez-vous? Ce modèle de référentiel est-il un modèle de création, de structure ou de comportement? Je cherche quelque chose qui va gérer tout le processus, de la demande du client à la requête de base de données réelle en utilisant Linq2Sql .... –

+0

Je dirais que c'est comportemental. Ce que vous devez garder à l'esprit, c'est que vous avez besoin d'une sorte de séparation entre vos couches. Le référentiel agit comme cette séparation en empêchant l'interface utilisateur de savoir que vous utilisez Linq2Sql. –

Questions connexes