我有以下方式的客戶端服務器應用程序。我可以選擇檢索protobuf-net或NHibernate中的對象字段嗎?
在域有的班級有孩子的集合。有些孩子參考他們的父母。
與問題是,當一個請求到服務器的一個子對象進行,所有其他的孩子都在響應返回。在許多情況下,從子項訪問父對象是非常有幫助的,我不希望爲父項創建一個單獨的請求,因爲這會導致更多的往返行程。
通常Nhibernates延遲加載會照顧這可是與交互protobuf網(或任何其他序列化)是指所有的字段訪問被序列化。客戶端不能直接訪問數據庫。
是否有可能以protobuf-net或Nhibernate的方式限制對象的引用深度,這樣我可以在服務器的請求中包含一個標誌,指出不加載超過2個對象的標誌。
例如 訂單 - 訂單商品 - 送貨信息。
之一上的順序的請求的限制意味着不加載傳遞信息。限制爲0意味着不加載訂單項目。
Altenatively是它可以任意地被加載停止的引用(極限是0或無限制),這是更嚴格的,但可能更可行的實現。
謝謝Marc,我用IMO定義我的合約是一種奇怪的方式,可以直接調用AddType,AddField和AddSubType。我在AddField的返回值上找到了一個'SetSpecified'方法,當給定一個方法的時候,它是一樣的嗎? – 2012-04-26 10:03:32
@詹姆斯 - 是的,這是一回事;命名是由於也支持'* Specified' BCL模式,以及這種模式允許雙向使用(而不是'ShouldSerialize *',這是單向的)的事實。不過,同樣的事情。 – 2012-04-26 11:06:56