2010-06-13 1 views
0

En théorie, je voudrais produire 2 projets:déploiement .NET de l'interface/Classes pour le modèle de commande Question

1) Asp.net (Sever A)

2) DAL en cours d'exécution (serveur B)

Je voudrais utiliser des objets de commande pour communiquer avec le DAL. ASP.net instancie une classe de commandes, par exemple,

CmdGetAllUsers qui implémente l'interface IMyCommand et l'envoie au DAL (en utilisant ASMX ou WCF).

Ma question est:

Est-ce que la définition de la classe de CmdGetAllUsers doivent exister sur le serveur DAL? Ou est-ce que la définition de l'interface serait suffisante?

Mon objectif est de réduire le besoin de redéployer le code DAL, et de l'avoir comme une couche passante assez simple.

Un grand merci pour votre temps.

Répondre

0

Pour répondre à votre question, non, la définition de l'interface n'est pas suffisante. Il doit avoir une implémentation concrète car c'est là que réside le code pour implémenter les méthodes. Pas de code pour l'implémentation, pas d'exécution.

Sur une note plus large, pourquoi ne pas implémenter directement les méthodes dans la couche de service? Au lieu de renvoyer une commande à votre couche de données pour exécution, demandez à la couche de service d'implémenter la méthode en tant que "commande". Votre DAL sera plus conventionnel, mais c'est une bonne chose je pense. Au lieu de disperser votre code de base de données dans toutes les implémentations de classe de commande, vous le localiserez dans la couche d'accès au contenu. Vous disposerez également d'un emplacement central (le service) pour effectuer l'application des règles métier.

+0

La couche DAL est générée automatiquement et n'est pas utilisée pour exécuter de telles règles. Personnellement, je souhaite supprimer la nécessité de résider sur une machine séparée, mais si je suis obligé de le garder, je voudrais, si possible, le faire agir comme une couche intermédiaire pour réduire les coûts de développement/déploiement. Merci pour votre participation. – Jonno