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应该只有在你的客户端需要的字段,映射将完成剩下的工作。