Après avoir lu toutes les réponses, j'ai remarqué que pas mal de gens ont des idées fausses au sujet de l'AAPC.
Tout d'abord, l'AAPC est pas un ORM. Comment puis-je dire que, donc, définitivement? Parce que Rockford Lhotka a déclaré lui-même à de nombreuses reprises dans des interviews sur le .NET Roches et Hanselminutes podcasts. Rechercher tout l'épisode où Rocky a été interviewé et il va de l'état dans des termes sans équivoque. Je pense que c'est la plus critique d'un fait, pour les personnes à comprendre, parce que presque toutes les idées fausses au sujet de l'AAPC flux de croire que c'est un ORM ou d'essayer de l'utiliser comme un.
Comme Brad Leach a fait allusion dans sa réponse, l'AAPC objets de modèle de comportement, bien qu'il serait plus précis de dire qu'ils modéliser le comportement de données, les données étant partie intégrante. L'AAPC est pas un ORM parce que c'est complètement agnostique à propos de la façon dont vous parlez à votre magasin de données. Vous devez utiliser une sorte de couche d'accès aux données avec l'AAPC, peut-être même un ORM. (Je ne. Maintenant j'utilise Entity Framework, qui fonctionne à merveille.)
Maintenant, sur les tests unitaires. Je n'ai jamais eu aucune difficulté tests unitaires mon AAPC objets, parce que je n'ai pas mis mon code d'accès aux données directement dans mon business objects. Au lieu de cela, j'ai utiliser une variante du modèle de référentiel. Le référentiel est consommée par l'AAPC, pas l'inverse. En échangeant dans un faux référentiel pour mes tests unitaires et en utilisant le portail de données, BOOM! c'est simple. (Une fois Entity Framework permet l'utilisation de POCOs, ce sera encore plus propre.)
Tout cela vient de réaliser que l'AAPC est pas un ORM. Il peut consommer un ORM, mais il n'en est pas un.
Des acclamations.
Mise à JOUR
J'ai pensé que je ferais un peu plus de commentaires.
Certaines personnes ont dit que l'AAPC est détaillé par rapport à des choses comme LINQ to SQL et ainsi de suite. Mais ici nous sommes en train de comparer des pommes à des oranges. LINQ to SQL est un ORM. Il offre certaines choses que l'AAPC ne le fait pas, et l'AAPC offre certaines choses L2S n'est pas, comme intégrée de la validation et de la nde la couche de persistance à travers les différentes données à distance portails. En fait, je dirais que la dernière chose que, à la nde la couche de persistance, surpasse toutes pour moi. Si je veux utiliser Entity Framework ou LINQ to SQL sur le net, je dois mettre quelque chose comme WCF entre les deux, et qui multiplie le travail et la complexité énormément, au point où je pense que c'est beaucoup plus détaillé que l'AAPC. (Maintenant, je suis un fan de la WCF, REST et SOA, mais l'utiliser lorsque vous en avez vraiment besoin, par exemple lorsque vous souhaitez exposer un service à des tiers. Pour la plupart des applications métiers, il n'est pas vraiment nécessaire, et l'AAPC est un meilleur choix.) En fait, avec la dernière version de l'AAPC, Rocky fournit un WCFDataPortal
, que j'ai utilisé. Il fonctionne très bien.
Je suis un fan de SOLIDE, TDD, et d'autres logiciels modernes, les principes de développement, et de les utiliser dans la mesure du possible. Mais je pense que les avantages de l'AAPC l'emportent sur certaines des objections de ceux orthodoxies, et en tout cas, j'ai réussi à faire de l'AAPC fonctionne très bien (et facilement) TDD, ce n'est donc pas un problème.