2009-03-05 6 views
0

Le type de flexibilité que Activerecord donne à notre conception de base de données, nous l'examinons pour notre modèle DAL et construisons autour de celui-ci. Nous allons créer un service WCF en plus de tout cela. Existe-t-il des problèmes de compatibilité ou de compatibilité lors de l'utilisation de Castle Activerecord basé sur NHibernate? Spécialement quand il s'agit de DataContractSerializer que WCF utilise. Comme ActiveRecord n'utilisera pas IQueryable, est-ce trop?Existe-t-il des pièges lors de l'utilisation de Castle ActiveRecord/NHibernate avec WCF?

Répondre

1

Objet sérialisé = objet détaché. Et une fois que vous envoyez un objet sur le fil via WCF, c'est ce que vous avez.

Donc, le gros problème est que vous allez avoir affaire à l'utilisation de NHibernate avec WCF est des objets détachés, ce qui vous oblige à écrire votre code un peu différemment. Vous perdez les capacités de mise en cache de NHibernate et les fonctions de chargement paresseux. Vous devez pré-charger vos agrégats avant de les expédier sur le réseau.

Bien sûr, tout cela est discutable si vous utilisez des objets de transfert de données à la place, mais puisque vous avez mentionné ActiveRecord, je suppose que ce n'était pas le plan.

Je suis peut-être loin de la base ici. Espérons qu'un gourou ActiveRecord peut donner plus de détails.

1

Bien que n'étant pas spécifique à WCF et à Castle Activerecord, j'offre un avertissement.

Assurez-vous qu'aucun CASCADING DELETE n'est défini sur la couche de persistance. Laissez ActiveRecord gérer ceux pour vous sinon vous rencontrerez des erreurs ennuyeuses plus tard un (reçu 0 attendu 1) tapez des choses qui ne sont pas très claires. En outre, si vous devez effectuer une suppression fréquente en masse, vous pouvez être prudent en utilisant ActiveRecord car l'implémentation Castle ne prend pas en charge la suppression groupée mais nécessite une boucle coûteuse sur chaque élément à supprimer et des suppressions individuelles arriver.

Questions connexes