Es ist schwer zu beantworten, wenn Sie nicht definieren, was der "reine Weg" ist. Sprechen wir SOA pur oder WCF rein?
WCF-Proxys sind bereits DTOs, da sie keine Geschäftslogik über Ihren Servicevertrag hinweg mit sich bringen. Das Erstellen einer weiteren DTO-Schicht über den von WCF generierten Proxyklassen erscheint redundant.
Die größte Frage, die Sie beantworten möchten, ist "wie SOA ist diese Lösung?". Sie können Ihre POCO-Entitäten nicht über Servicegrenzen hinweg freigeben, wenn Sie SOA-konform sein möchten. Bei SOA geht es um unterschiedliche Verträge.
Wenn Sie alle SOA-basiert gehen, verlieren Sie eine Menge Funktionalität, weil die Klassen, mit denen Ihre Web-Tier die meiste Zeit arbeitet, dumme Proxies sein werden. Sie müssen eine Menge Logik wiederholen, und Sie haben viel von der Funktionalität "Metadaten, Konvention über Konfiguration" verloren, die MVC 2 bietet.
Wenn Sie das SOA-Buzzword in den Shredder werfen, was Sie tun sollten (http://soafacts.com/), dann wird es viel einfacher sein, Geschäftslogik und Metadaten-Informationen über mehrere Ebenen hinweg zu teilen. Wenn der einzige Verbraucher Ihres Webdienstes Sie selbst ist, dann ist diese Methode wahrscheinlich die beste Wahl.
Hier können Sie DTOs verwenden, um anstelle der POCO-Entitäten über die Leitung zu senden. Der einzige Nachteil ist wieder, wiederholte Logik und viele Kesselplatte zeremoniellen Code, der nichts tut. Kommt wirklich auf die Größe Ihres Projekts an. Wenn es klein ist, vergiss DTOs, aber wenn du 20 Entwickler hast, die mit 200.000 LoC arbeiten, dann sind DTOs wahrscheinlich wert, erstellt zu werden.
DTOs und POCOs sind nicht gleich. Schauen Sie sich [diesen netten Post] an (http://rlacovara.blogspot.com/2009/03/what-is-difference-between-dto-and-poco.html?m=1). Wenn Sie DTOs verwenden, können Sie mithilfe von [EntitiesToDTOs] (http://entitiestodtos.codeplex.com) automatisch DTOs aus Ihrer Entity Framework EDMX-Datei generieren. – kzfabi