我真的很難決定如何建立我的SQL層。我正在構建一個web服務,它將與sql和No-SQL服務器進行通信。所以我想出了一些想法,以便我們可以實施測試等等。L2SQL異步與否?
現在我有一堆文件和一個結構,我解釋(對不起,我使用過我的名字, t使用...請糾正我在這種情況下): -IDatabaseStore.cs -SqlDatabaseStore.cs -NoSQLDatabaseStore.cs - 和我所有的特定商店(如userStore.cs實現sql存儲例如)。
我想做以下事情: SQL-和NoSQLDatabaseStore都將實現IDatabaseStore。這兩個類將是抽象的,以提供像Repository模式那樣的基本功能。所有特定的商店都將實現這兩個抽象類中的一個,以不重建所有內容。
現在的問題:我使用的無SQL庫是MyCouch,完全異步,但對於SQL,我使用不是異步的L2SQL。
現在我的問題:你認爲如何設置它?
與示例1一樣,強制使用異步方法,並且如果它們不是異步(如L2SQL)。
使接口像例2那樣,所有動態的都將通用類型作爲任務傳遞,以防它需要是異步的。這種方式我不強制我的接口和抽象類是異步的(但是void方法在這種情況下不是異步的?)。
我錯過了一種使L2SQL異步的方法嗎?注意:我已經看過很多帖子,但它們似乎不適合這個模型。
其他建議?
在性能情況下,我真的很想壽有一個異步L2SQL,因爲我需要管理大量的連接,這可能真的benifit web服務。但是例如像下面這樣的解決方案:https://stackoverflow.com/a/252426/1364241不等於,不是?
實施例1:
public interface IDatabaseStore {
Task<T> GetByID(string id);
Task<List<T>> GetAll();
Task Delete(T model);
Task Update(T model);
Task Insert(T model);
}
實施例2:
public interface IDatabaseStore {
T GetByID(string id);
List<T> GetAll();
void Delete(T model);
void Update(T model);
void Insert(T model);
}
你認爲實體框架是否替代L2SQL? –
@StephenCleary是的,我一直在看它,但是我從大約10個SO文章中瞭解到的是,L2SQL比EF快。或者在這種情況下,由於異步方法,EF的優勢更大? – spons
@StephenCleary在這種情況下,它將是完美的解決方案。 – spons