我有一個.NET 4類庫,它包含一個實體框架數據模型和一組使用這些實體提供常用功能的類。這些類用於不同類型的應用程序。將實體框架實體暴露給其他客戶端
所以,我的問題是將類庫中包含的實體暴露給其他應用程序是否被認爲是好的做法?
我有一個.NET 4類庫,它包含一個實體框架數據模型和一組使用這些實體提供常用功能的類。這些類用於不同類型的應用程序。將實體框架實體暴露給其他客戶端
所以,我的問題是將類庫中包含的實體暴露給其他應用程序是否被認爲是好的做法?
如果是先進的實體足以滿足您的持久性需求和您的域名的需求(或外部應用程序的需求),並沒有太多的或「跨層污染」的低可能性,那麼我說是的,這是一個很好的做法。從敏捷開發的角度來看,它也是一個很好的做法:現在已經足夠好了。
給定更長的時間,如果你是一個純粹主義者更傾向於你,那麼它開始變成一個壞習慣,因爲你正在增加耦合,例如,如果你開始添加屬性來處理持久性,驗證和序列化。
避免這種情況的一些方法是使用類似AutoMapper,生成的代碼或手形編碼外觀,服務圖層和/或適配器來最大限度地減少影響。
對於大部分類,等等,將用於內部項目,所以我認爲公開這些實體是可以接受的。有計劃爲其他外部團隊創建一個api/sdk,這聽起來像是DTO和AutoMapper的一個很好的候選者。 – MotoSV
由於實體框架隨着數據庫的變化而改變,我不相信這會提供一個合適的API。相反,我會建議創建一個數據傳輸對象,作爲外部代碼和需要訪問的每個實體之間的中介。此外,請考慮創建一個Facade類(服務層),它將在您的庫的內部和外部「客戶端」之間進行調解。在DTO的好文章:http://msdn.microsoft.com/en-us/magazine/ee236638.aspx
爲什麼不是? –