Dot-Net
如何更改果園記錄庫
我在一個我們正在考慮使用Orchard CMS的項目中工作。
但是,我們希望將 Web 服務用作某些內容項的數據源。我想我們必須更改儲存庫實現才能使這成為可能,但我不確定。
所以我的問題是:我的猜測是正確的,還是更複雜?那怎麼辦呢?
謝謝!
更新: 我看到 Orchard 的 IRepository 介面需要實現 LINQ 提供程序。在這種情況下這是不可能的,因為 Web 服務是通過 SOAP 提供的。
我將更好地進一步描述場景:
我們希望建立的網站必須使用網路服務來獲取有關組織成員和單位的資訊。我們想在網站上顯示某個組織單位的成員。我們還想創建我們自己的內容類型“Event”,它應該與“Member”(來自 WS)具有 M:N 關係(參加者)。
如果您不想將元件儲存完全定向到其他地方,則不必實現**IRepository 。**我目前在我的一個基於 Orchard 的項目中使用 WCF 服務,所以你的場景是相似的。
你可以這樣做:
- 將您的 Web 服務代理包裝在實現IDependency的類中,這樣您就可以將其註入驅動程序/處理程序/控制器等。為了便於單元測試和模擬,您應該創建一個單獨的介面,例如。IMyWebServiceWrapper : IDependency然後實現它。
- 創建適當的內容部分和記錄。在記錄中僅儲存從 WS 定位和獲取數據所需的資訊。在內容部分中創建所有必要的屬性 - 它們將從 WS 載入。
- 將您的類從第 1 點注入到適當的內容處理程序的建構子中
- 在內容處理程序建構子中使用如下內容:
OnLoaded<MyPart>((ctx, part) => { part.MyProperty = myService.GetMyProperty(part.SomeIdToLookup); });
- MyPart是您在 Orchard 方面的角色。
- MyProperty是您的一些屬性,將從 WS 載入。
- myService是您包裝的 WS 代理,作為建構子參數傳遞。
- GetMyProperty是包裝器中的一個方法,它呼叫 WS 並檢索必要的數據。
當然,您可以使用其他處理程序事件(如 OnInitialized、OnCreated、OnPublished 等)。您可以在此處閱讀有關內容處理程序的更多資訊。
我還建議從 Codeplex獲取開發啟動模組以進行快速開發。