0

我有一個web api,一個web應用程序和Xamarin應用程序的項目。他們都應該使用存儲在AspNetCore庫中的相同數據模型。我想使用EF Core作爲數據庫,並且我有一個Db Managing項目(也是一個AspNetCore庫),它引用了包含上下文和設置的EF Core。 Web API是唯一引用此Db Managing項目的項目,因爲它處理所有數據庫訪問。所有其他應用程序正在聯繫web api進行數據交互。Xamarin和Asp.Net核心標識的項目體系結構

我的問題:我想爲我的用戶管理使用AspNetCore.Identity,但當它使用AspNetCore.Identity時,Xamarin應用程序無法引用數據模型。我該如何解決這個問題?

回答

6

您的Xamarin代碼應該與服務器業務邏輯和數據訪問完全分離。爲什麼要參考Xamarin的AspNet Identity?這是兩個完全不同的層次。

您的服務器Web API必須公開REST方法來處理認證/授權和其他東西,以便客戶端可以使用它們(Web客戶端,移動客戶端,桌面客戶端等)。

Xamarin應該使用一個REST client這些遠程方法,這與javascript客戶端的方式相同。

我從您的問題中瞭解到,您希望僅在xamarin項目中重用業務對象/模型,因爲它們是用C#編寫的。但是如果這些對象具有對asp.net標識的依賴性,那麼你不能。 在這種情況下,您應該將業務對象(BO)map轉換爲數據傳輸對象(DTO),Web API將用它與客戶端進行通信。 DTO對於任何數據訪問層都是完全不可知的,應該是簡單的POCO's。它們旨在被序列化/反序列化到/來自json/xml。

另一方面,您不希望通過web api「按原樣」序列化用戶模型,因爲這意味着通過互聯網發送敏感數據,如用戶散列密碼等。您的DTO應該只有在你的客戶端需要的字段,映射將完成剩下的工作。