使用 Xamarin 和 Asp.Net Core Identity 的项目架构

Project Architecture with Xamarin and Asp.Net Core Identity

我有一个包含 Web api、Web 应用程序和 Xamarin Apps 的项目。它们都应该使用存储在 AspNetCore 库中的相同数据模型。我想将 EF Core 用于数据库,并且我有一个 Db 管理项目(也是一个 AspNetCore 库)引用包含上下文和设置的 EF Core。 Web api 是唯一引用此 Db Managing 项目的项目,因为它处理所有数据库访问。所有其他应用都在联系网络 api 进行数据交互。

我的问题:我想使用 AspNetCore.Identity 进行用户管理,但 Xamarin Apps 在使用 AspNetCore.Identity 时无法引用数据模型。我该如何解决?

您的 Xamarin 代码应该与服务器业务逻辑和数据访问完全分离。为什么要引用 Xamarin 的 AspNet Identity?那是两个完全不同的层次。

您的 Web 服务器 API 必须公开 REST 方法来处理 authentication/authorization 和其他内容,以便客户端可以使用它们(Web 客户端、移动客户端、桌面客户端等)。

Xamarin 应该使用 REST client 使用这些远程方法,与 javascript 客户端使用的方式相同。

我从你的问题中了解到,你想在你的 xamarin 项目中重用业务对象/模型只是因为它们是用 C# 编写的。但是,如果这些对象依赖于 asp.net 身份,则不能。 在那种情况下,您应该 map 您的业务对象 (BO) 到 Web API 将用于与客户通信的数据传输对象 (DTO)。 DTO 与任何数据访问层完全无关,应该是简单的 POCO。它们应该是 serialized/deserialized to/from json/xml.

另一方面,您不想通过网络 "as is" 序列化用户模型 api 因为这意味着通过互联网发送敏感数据,例如用户散列密码等。您的 DTO应该只包含您的客户端所需的字段,其余的将由映射完成。