簡體   English   中英

將WCF服務與Entity Framework 4和…DTO一起使用?

[英]Using a WCF Service with Entity Framework 4 and…DTO?

如上所述,我正在實現一種多層體系結構,以與WCF和Entity Framework 4(帶有poco)一起使用。 由於我已經對POCO有了持久性的無知,因此我需要實現DTO還是可以以其純方式使用WCF?

主要報價是-我確實需要DTO在網絡上傳遞輕量級對象,或者我可以使用POCO實體。

你們推薦什么?

除非您定義“純方式”,否則很難回答。 我們是在說純SOA還是WCF?

WCF代理在某種程度上已經是DTO,因為它們不會在整個服務合同中帶來任何業務邏輯。 在WCF生成的代理類之上創建另一層DTO似乎是多余的。

您要回答的最大問題是“此解決方案如何?”。 如果要符合SOA,則不能跨服務邊界共享POCO實體。 SOA都是關於完全不同的合同的。

如果您使用所有基於SOA的服務,那么您將失去很多功能,因為您的Web層大部分時間將使用的類將是愚蠢的代理。 您將不得不重復很多邏輯,並且丟失了MVC 2提供的許多“元數據,約定而不是配置”功能。

如果您將SOA流行語扔進粉碎機中(應該這樣做)( http://soafacts.com/ ),那么您將可以更輕松地在各個層之間共享業務邏輯和元數據信息。 如果您自己是Web服務的唯一使用者,那么此方法可能是您的最佳選擇。

在這里,您可以使用DTO而不是POCO實體通過電線發送。 唯一的缺點是,重復了邏輯,並且執行了許多不起作用的樣板代碼。 確實取決於項目的大小。 如果規模很小,那就不用考慮DTO了,但是如果您有20個開發人員使用200,000個LoC,那么DTO可能值得創建。

正如jfar所說,這取決於您是否將成為僅使用該服務的人,還是表示層將僅由您自己決定。

如果您要進行后面的操作,而只是要使用服務,則可以跨wcf服務邊界序列化POCO。 這是我最近所做的,並撰寫了有關使它正常工作的博客文章 這將允許您在應用程序層和表示層中使用相同的實體。

希望能幫助到你。

在將WCF與EF一起使用時,推薦DTO的最強烈理由是,EF數據庫優先類將實現依賴項拖到您的代理類中。 如果將代碼優先與POCO類一起使用,則應該沒有實現依賴項。

嘗試僅返回您的POCO類,然后仔細查看生成的代理類。 確保這些類中沒有任何東西是EF基礎結構的一部分。 如果代理類是干凈的,那么您應該已經准備就緒。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM