8
votes

Comment saurais-je savoir si je devrais utiliser des entités de suivi automatique ou des DTO / Pocos?

Quelles sont les questions que je peux me poser sur notre conception pour identifier si nous devons utiliser des DTO ou des entités auto-suivantes dans notre application?

Voici certaines choses que je savais de prendre en considération:

  • Nous avons une application N-TIER standard avec un client WPF / MVVM, Server WCF et MS SQL Base de données.
  • Les utilisateurs peuvent définir leur propre interface, les données nécessaires à partir du service de WCF modifient en fonction de l'interface que l'utilisateur a défini pour eux-mêmes
  • Les modèles sont utilisés à la fois sur le côté client et le côté serveur pour validation. Nous ne serions pas contraignants directement au DTO ou à STE
  • Certains modèles contiennent des propriétés qui sont chargées de paresseux à partir du service WCF si nécessaire
  • La couche de base de données Spams plusieurs serveurs / bases de données
  • Il y a des contrôles d'autorisation sur le côté serveur qui affectent la rétablissement des données. Par exemple, certaines données sont partiellement ou entièrement masquées en fonction du rôle de l'utilisateur
  • Nos ressources sont limitées (temps, main-d'œuvre, etc.)

    Alors, comment puis-je déterminer ce qui nous convient? Je n'ai jamais utilisé EF auparavant, je ne sais vraiment pas si les stés sont juste pour nous ou non.

    J'ai vu que les gens suggèrent à partir de Stes et ne mettent en œuvre que les DTO si elles deviennent un problème, mais nous avons actuellement des DTO en place et essayons de décider si l'utilisation de STES faciliterait la vie. Nous sommes suffisamment tôt dans le processus que la commutation ne prendrait pas trop de temps, mais je ne veux pas passer à Stes uniquement pour le savoir que cela ne fonctionne pas pour nous et ne doit pas tout changer.


0 commentaires

3 Réponses :


4
votes

Vous pouvez opter Ste pour un scénario donné,

  • Toutes les stes sont pocos, ajoutez de manière dynamique une couche pour le suivi de changement.
  • Utilisez des modèles T4 pour générer les stées, il sauvera votre temps.
  • Les utilisations d'outils tels que MOWORAPPER permettront de sauver votre temps pour manuellement Conversion du contrat de données retourné par WCF en entité ou DTO

    Avantages pour Ste -
    1. Vous n'avez pas à suivre manuellement les changements.
    2. En cas de WCF, il vous suffit de dire applydbchanges et il rafraîchra automatiquement l'entité

      Inconfection pour Ste -
      1. Stations sont plus lourdes que POCO, en raison de la suivi dynamique

        Avantages pour Poco -
        1. poids léger
        2. peut être facilement ponté avec EF ou NH

          Inconvénients pour POCO -
          1. doit suivre manuellement les modifications avec EF. (douloureux)


3 commentaires

Pourquoi Ste Pro N ° 3 n'est-il pas important pour Pocos?


Je dirais que c'est duplicity. Comme le POCO et le DTO ont la plupart des mêmes propriétés.


Ensuite, votre réponse est trompeuse. Il présente à ce point comme un avantage des bêtes sur les pocos.



0
votes

POCO est dynamique proxé et ne joue pas bien sur le fil Voir ce MSDN Article pour la solution de contournement si . Donc, ils peuvent être faits à, mais à l'OMI, vous feriez mieux de devenir STE, car je pense qu'ils s'alignent bien avec le développement WPF / MVVM.


0 commentaires

9
votes

Si je comprends votre architecture, je pense que ce n'est pas bon pour Stes parce que:

  • Les modèles sont utilisés à la fois sur le côté client et le côté serveur pour validation. Nous ne serions pas contraignants directement au DTO ou à STE

    L'avantage principal (et le seul avantage) ou Stes est leur capacité de suivi, mais la capacité de suivi ne fonctionne que si STE est utilisé des deux côtés:

    • Le serveur de requêtes client pour les données
    • La requête du serveur EF et recevez l'ensemble des stes et les renvoie au client
    • Le client fonctionne avec des stées, les modifie et les renvoie au serveur
    • Le serveur reçoit des stées et applique des modifications transférées en EF => Database

      En bref: il n'y a pas de modèles supplémentaires sur le client ou le côté serveur. Utiliser pleinement des stes, ils doivent être:

      • modèle côté serveur (= pas de modèle séparé)
      • Données transférées dans WCF (= Pas de DTO)
      • Modèle côté client (= pas de modèle séparé, se liant directement aux stées). Sinon, vous allez dupliquer la logique de suivi lors de la manipulation des événements de changement sur des objets délimités et de modifier des bêtes. (Le client et le serveur partagent l'assemblage avec des stées).

        Tout autre scénario signifie simplement que vous ne profitez pas de la capacité de suivi de soi et que vous n'en avez pas besoin.

        Qu'en est-il de vos autres exigences?

        • Les utilisateurs peuvent définir leur propre interface, les données nécessaires à partir du service WCF modifient en fonction de l'interface que l'utilisateur a défini pour eux.

          Ceci devrait être probablement possible, mais assurez-vous que chaque partie "paresseuse chargée" est une structure séparée - ne pas créer de modèle complexe du côté du client. J'ai déjà vu des questions où les gens devaient envoyer un graphique entité entière pour des mises à jour qui ne sont pas ce que vous voulez toujours. À cause de cela, je pense que vous ne devez pas connecter de pièces chargées dans un graphe d'entité unique.

          • Il y a des contrôles d'autorisation sur le côté serveur qui affectent la rétablissement des données. Par exemple, certaines données sont partiellement ou entièrement masquées en fonction du rôle de l'utilisateur

            Je ne sais pas comment voulez-vous réellement atteindre cela. Les stées n'utilisent pas de projections pour que vous ne comprenez pas les champs nuls directement dans des entités. Sachez que vous devez le faire lorsque l'entité n'est pas en état de suivi ou que votre masquage sera enregistré dans la base de données.

            • La couche de base de données Spams plusieurs serveurs / bases de données

              C'est quelque chose qui n'est pas un problème des stes. Le serveur doit utiliser un contexte EF correct pour charger et enregistrer les données.

              Stations sont la mise en œuvre du modèle de changement de changement. Si vous souhaitez les utiliser, vous devez suivre leurs règles pour tirer pleinement parti du modèle. Ils peuvent économiser du temps s'il est utilisé correctement, mais cette accélération est livrée avec un sacrifice de certaines décisions architecturales. Comme toute autre technologie n'est pas parfaite et que vous pouvez parfois les trouver difficiles à utiliser (juste suivre entités auto-suivies < / a> tag pour voir des questions). Ils ont aussi des sérieux inconvénients mais en .NET WPF Client Vous ne les rencontrerez pas.


0 commentaires