Question

Je voudrais avoir votre avis sur un cas particulier, s'il vous plaît. Il s'agit de la couche de service par rapport à des objets d'aide - et je ne cherche pas des modèles idéalistes, mais simplement une bonne compréhension de ce que mes chers collègues de programmation pensez à ceci:

Dans ma demande actuelle j'ai un modèle de domaine complet (LINQ to SQL, des dépôts extrêmement légers et utiliser des méthodes d'extension à travers IQueryable <> pour filtrer / trier / ordre en fonction des besoins de l'entreprise), puis une couche de service qui contient des services basé sur le regroupement des responsabilités, telles que IRegistrationService (utilisateurs enregistrer, vérifier la disponibilité des noms de connexion, etc.)

Maintenant, la mise en garde. J'ai aussi des cours « aide » qui font des choses comme le cryptage, et je l'ai aussi bourré d'autres éléments autrement ungroupable dans ce répertoire (comme énumérations personnalisés etc.)

Je dois créer une nouvelle classe maintenant qui va gérer la génération de liens personnalisés pour mon application, ce qui est à peine plus de String.Format avec différents objets et prendre leurs propriétés en compte. Le fonctionnement interne ne sont pas pertinentes. Cependant, j'ai du mal à instancier une sorte de « LinkService » maintenant ça va le faire - je sens que je vais finir avec 100 services (et leurs interfaces + mise en œuvre) quand je suis fait

En même temps, je ne pense pas que je veux créer une combinaison libre de classes et d'autres choses dans mon espace de noms / répertoire « Helpers » (par exemple LinkManager).

Que faire? Où trouvez-vous les gars ont mis des choses qui est encore un peu niveau de la couche d'affaires, mais en même temps Comment limiter le nombre d'éléments dans votre couche d'affaires / service? Où voulez-vous vous en tenez toutes ces petites classes d'aide, tels que des objets intermédiaires qui simplifient et gérer l'accès Session (je suppose que vous voulez avoir ce fortement typé - au moins je fais)

?

Faites-moi savoir ce que vous pensez? Merci!

Était-ce utile?

La solution

Pour moi, en utilisant l'outil pour le travail est la clé. Si vous avez besoin d'une sorte d'installation pour générer des liens, ce qui est essentiellement une cartographie des propriétés des entités à des chaînes formatées, puis écrire une installation pour le faire. Il n'a pas besoin d'être un service ... au contraire, avoir un service complet soufflé pour quelque chose comme ça est probablement exagéré. Cependant, je ne serais pas tout amalgamer ceci dans votre général « aides ». On dirait que c'est quelque chose qui a un but précis et l'intention, avec un certain type de comportement derrière elle. En tant que tel, le mettre dans un endroit approprié adapté pour ce comportement ... même si c'est un nouveau projet.

J'essaie de ne pas avoir un énorme morceau de code « général » dans mes applications. Tout a un but et met en œuvre un comportement spécifique. Parfois, cette fin et le comportement sont très réutilisables, mais j'essaie toujours d'organiser ces éléments réutilisables de mon domaine logique. D'un haut niveau, je vois la plupart de mes applications divisé en ce qui suit:

  1. Client
  2. API / service
  3. Domaine
  4. Accès aux données (en option)
  5. Cadre

Beaucoup de ce type de fonctionnalité réutilisable tombe dans une sorte d'une région Nether entre le cadre et le domaine. Une partie de celui-ci peut exister en tant que certaines classes de base et / ou les interfaces et les types de support dans cadre, l'autre moitié, les mises en œuvre concrètes, résidant dans mon domaine. Il semble parfois étrange, mais l'organisation de cette façon me aide à garder mon domaine aussi propre que possible (dédié aux préoccupations des entreprises), tout en me permettant d'abstraire des concepts communs et réutilisables dans un niveau inférieur types « cadres ».

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top