2012-07-24 126 views
0

有幾種方法可以解決這個問題。我可以序列化linq查詢,但允許表達式樹序列化的OSS項目似乎得不到支持。共享合同WCF數據服務

是否有一個更傳統的方式來做到以下幾點:

// Create the DataServiceContext using the service URI. 
NorthwindEntities context = new NorthwindEntities(svcUri); 

但是,如果沒有使用實體產生UTIL。基本上,我想用一個類似於下面的僞代碼 - 注意共享IRepository合同:

new ChannelFactory<IRepository<MyEntity>>(myBinding, myUri).CreateChannel() 

我也不想導出數據集在它的全部。我只想讓我的常規服務公開IQueryable操作。通過這種方式,IQueryable接口可以更強地耦合到業務邏輯,而不是作爲獨立的數據服務。

我接受OSS解決方案,但我希望能夠穩定,輕量級,活躍,良好支持和經常更新。

回答

0

如果您想要實施存儲庫模式和大量自定義業務邏輯,Web API可能是您短期內的最佳選擇。對於這兩個問題,獲得更好的支持對於我的WCF數據服務優先級列表非常重要,但事實是,我們現在非常缺乏。

Web API的侷限性將會充滿OData支持,這可能會隨時間推移。 WCF數據服務的侷限性將是商業邏輯插入/軟件模式的簡化,隨着時間的推移可能會有所改進。

也就是說,如果您擁有隻讀服務,Reflection提供程序將執行幾乎所有您想要執行的操作。

+0

我認爲它 - 但對於Web應用程序以外的任何其他應用程序,使用Web API似乎有點困難。例如。 WPF/Silverlight,或只是在一些其他服務。我的理解關閉了嗎?你也有鏈接到反射提供者?只讀svc聽起來像一個好的開始。 – Alwyn 2012-07-24 17:57:19