2010-11-17 7 views
-1

Je suis désolé pour ma question peut regarder une vieille questions répétitives mais moi comme je commence Linq à SQL je veux discuter combien de couches (architecture) devrais-je utiliser?Linq to SQL couches/architecture?

Je travaille sur le web principalement des sites Web et des applications Web de petite et moyenne échelle. Je comprends que la division de l'application en couches aide à la maintenir et à l'améliorer, mais franchement, je veux un équilibre qui me donne aussi un développement rapide et une capacité de réutilisation du code. Je ne peux pas épargner autant de temps sur la gestion non désirée des couches. Avant d'utiliser 4 couches (objets métier, BLL, DAL et user itnerface), je suis devenu confus car différentes personnes ont décrit différentes couches. S'il vous plaît me guider quoi et combien de couches je devrais utiliser? Merci

Répondre

-2

J'ai décidé d'utiliser une couche (DAL + BLL) pour les petits projets et pour les applications de grande taille, j'utiliserai Différentes couches pour DAL & BLL. Je vais utiliser Linq dans DAL et funtiosn retournera IQueryable.

1

L'aspect le plus important du point de vue de l'architecture est la séparation des préoccupations. La séparation des préoccupations conduit à nettoyer le code, un entretien facile, extensible, etc. Cela dit, je vous recommande de baser vos décisions sur la base des critères suivants:

  • Essayez d'architecte de votre système de façon à couplage lâche. Utilisez la messagerie à la place de RPC car la messagerie est fiable, évolutive, asynchrone, faiblement couplée, etc. Vous pouvez utiliser MSMQ ou NServiceBus (pour une architecture basée sur le bus de service).
  • Créez des couches en fonction du concept de séparation des préoccupations. Par exemple vous pouvez opter pour une architecture 3 couches typique qui aura juste une couche d'interface utilisateur, une couche logique métier (règles métier + workflow) et une couche d'accès aux données ou plus granulaire comme couche d'interface utilisateur, couche de services (façade), couche d'accès aux données, L'utilisation de l'injection IoC/Dependency rendra la vie facile car aucune des couches n'aura de dépendance directe. De plus, il facilite les tests unitaires lorsque vous injectez des mocks au lieu des implémentations réelles pour le test unitaire. Essayez d'utiliser EF à la place de Linq to SQL car ce dernier ne fonctionne qu'avec SQL, alors que le EF fonctionne avec n'importe quelle base de données. . En outre, à mon avis, EF est où Microsoft innove et je suppose que Linq to SQL peut être retiré un jour.
1

Grande question haansi. C'est quelque chose que j'ai lutté assez souvent lors de la construction de sites de petite à moyenne taille. Trouver l'équilibre entre la création d'une architecture qui vous donne la plus grande flexibilité et permet un déploiement rapide est ce que je pense que nous devons tous nous efforcer de faire dans tout notre travail. Cela étant dit, j'ai trouvé que l'utilisation de Repository Pattern était très utile pour les projets LINQ to SQL. Je le couple avec le modèle Model View Presenter (pour WebForms ou d'autres projets) et il fournit une excellente base pour la réutilisation avec des couches minimales.

Mon Webform appelle une classe Presenter, qui à son tour est chargée de remplir la vue. Pour remplir cette vue, le présentateur peut appeler N nombre de référentiels. Le référentiel est l'endroit où vous encapsulez votre classe DataContext et vos appels LINQ to SQL. Ces appels renvoient les classes du modèle.Un énorme avantage, quelle que soit la taille de l'application, est d'être réutilisé dans votre Repository, d'optimiser l'utilisation de LINQ et d'utiliser des modèles que d'autres développeurs de logiciels pourraient facilement lire. soutien.

Un autre gros avantage est que vous avez maintenant créé une architecture simple qui peut bénéficier de l'utilisation de tests unitaires pour tester à partir du présentateur vers le référentiel sans beaucoup d'efforts.

Bonne chance!