我正在開發基於雲的業務應用程序。用戶可以將文檔和其他類型的對象上傳到應用程序。用戶上傳相當多的文檔,並共同存儲數百萬個文檔。我使用SQL Server。OData適用於多租戶LOB應用程序嗎?
今天我有一個有點平靜的API,它允許用戶傳遞一個DocumentSearchQuery實體,在那裏它們提供關鍵字以及請求排序順序和分頁信息。他們得到一個DocumentSearchResult,它實質上是一個對實際文檔的引用的排序集合。
我現在想將搜索API擴展到除文檔以外的其他實體類型,我正在研究如何使用OData。但我得到的印象是,如果我使用OData的,我會面臨幾個問題:
- 有哪些領域的用戶可以查詢這意味着,無論是PERF將取決於他們是否查詢索引字段沒有內置限制或者不必,或者我將不得不實施我自己的傳入OData請求解析,以確保它們只查詢索引字段。 (由於這是一個多租戶應用程序,它們共享物理硬件,所以慢速查詢並不是真正可以接受的,因爲這會影響到其他客戶)
- 無論我用於訪問後端數據都需要支持IQueryable。我目前正在使用實體框架來做到這一點,但我將來可能會使用其他的東西。這意味着我很可能需要再次對傳入查詢進行解析。
- 沒有內置的支持來限制用戶可以訪問的數據。我需要驗證傳入的Odata查詢以確保他們訪問他們實際有權訪問的數據。
我不認爲我想沿着手動解析傳入表達式樹的路來確保它們只嘗試訪問他們有權訪問的數據。這看起來很麻煩。
我的問題是:考慮到上述情況,OData在多租戶環境中使用合適的協議,其中客戶編寫他們自己的訪問實體的客戶端?
我已經更新了我的答案。 – lontivero