我正在開發一系列業務應用程序,由於我無法控制的原因,它必須使用客戶端服務器架構。使用WCF和實體框架的客戶端服務器
I.e.客戶端都連接到應用程序服務器,應用程序服務器連接到數據庫等。
要做到這一點,我創建了一個WCF服務,該服務公開數據庫的CRUD類型方法。這樣的方法,存在於WCF:
Customer GetCustomer(int customerId);
List<Customer> GetAllCustomers();
etc...
但是我一直覺得同樣的兩個問題與此:
1)有其連接的管道代碼很多:客戶端 - >應用服務器 - >數據庫服務器
2)當客戶端應用程序需要獲取更復雜的數據,我最終不得不增加它結了這樣可怕的事情在服務器端方法:
Customer GetCustomerByNameWhereCustomerHasBoughtProduct(string name, int productCode);
OR
或者返回比客戶端需要和處理更多的數據。這對數據庫來說很慢並且非常糟糕。例如:
List<Customer> customers = _Service.GetAllCustomers();
List<Product> products = _Service.GetAllProducts();
List<Customer> customersWhoBoughtX = (from c in customers where
c.OrderLog.Contains(products.Where(p => p.Code == x)
select c).ToList()
我在做什麼錯在這裏,因爲這一定是可以解決的方式。
有沒有辦法使用約定通過wcf服務公開數據庫?或者任何其他的想法可以幫助我在做什麼?
理想情況下,我會說客戶端可以直接連接到數據庫,但我被告知這是一個無法更改的問題。
我真的很感激一些指針。
謝謝
如果它是一個簡單的CRUD,嘗試WCF數據服務。它具有靈活的過濾 – LostInComputer