我有一个带有web api,Web应用程序和Xamarin应用程序的项目。它们都应该使用存储在AspNetCore库中的相同数据模型。我想将EF Core用于数据库,我有一个Db管理项目(也是一个AspNetCore库),引用了包含上下文和设置的EF Core。 web api是引用此Db Managing项目的唯一项目,因为它处理所有数据库访问。所有其他应用程序都在联系web api进行数据交互。
我的问题:我想在我的用户管理中使用AspNetCore.Identity,但是当使用AspNetCore.Identity时,Xamarin Apps无法引用数据模型。我该如何解决这个问题?
答案 0 :(得分:6)
您的Xamarin代码应与服务器业务逻辑和数据访问完全分离。为什么要从Xamarin引用AspNet Identity?这是两个完全不同的层。
您的服务器Web API必须公开REST方法来处理身份验证/授权和其他内容,以便客户端可以使用它们(Web客户端,移动客户端,桌面客户端,等等)。
Xamarin应该使用REST client来使用那些远程方法,javascript客户端也是这样。我从您的问题中了解到,您希望在xamarin项目中重用业务对象/模型,因为它们是用C#编写的。但是如果这些对象依赖于asp.net身份,那么你就无法做到。 在这种情况下,您应该map您的业务对象(BO)到Web API将用于与客户端通信的数据传输对象(DTO)。 DTO与任何数据访问层完全无关,应该是简单的POCO。它们用于对json / xml进行序列化/反序列化。
另一方面,您不希望通过Web api“按原样”序列化用户模型,因为这意味着通过互联网发送敏感数据,如用户哈希密码等。您的DTO应该只有字段在你的客户端需要,映射将完成其余的工作。