【发布时间】:2017-06-12 20:20:32
【问题描述】:
我正在创建一个包含 API 的 asp.net 核心网络应用程序, 我想使用实体框架核心使用工作单元和存储库模式,然后使用 DTO 对象而不是直接实体公开 API,以受益于代码可重用性,我将客户端 xamarin 表单项目添加到仅引用 DTO 项目的同一解决方案中. 所以我的解决方案现在包含以下项目: 达尔 存储库(参考 DAL) DTO WebApp(Asp.net 核心)(参考资料库和 DAL) Xamarin(PCL)(参考 DTO) 我的问题是项目类型不兼容,实际上我不知道这是否是正确的方法,我需要一些关于使用 xamarin 客户端创建(带有 API 的 Web 应用程序)的提示,它可以使用正确的方法使用 Web API。 我应该使用 pcl、普通类库、.net core 还是 .netstandard?
【问题讨论】:
-
我不太喜欢在同一个解决方案上搞乱如此不同的项目的想法。但这只是我个人的喜好。关于 DTO 返回部分..您更多的是在您的 API 与其客户之间建立“合同”。您可以做的只是使用模型创建一个普通的类库,然后在两个项目中引用它。只是一个 netstandard 普通类库。
-
另一种选择,您可以创建某种 APIClient,它会包装您的 API 方法和类型。例如,将其视为使用 SDK 与 Google API 进行通信。
-
@jpgrassi 我正在使用 asp.net 核心,因此无法引用普通的类库。使用 .netstandard 可以工作,但项目不会生成,会出现奇怪的兼容性错误。一个普通的类库也与 xamarin 表单不兼容。实际上,我可以处理服务器端制作所有其他类型的 .net 核心项目。但仍然是 DTO。我通过 API 客户端了解您的意思,但它能让我免于在客户端重写合同吗?还有其他我不知道的方法吗?
-
第一:奇怪的兼容性错误:你必须检查并修复它。您应该能够在这两个项目上添加一个 netstandard 类库。第二:是的。您的 API 的包装器客户端将与您的 DTO 一起位于类库中。然后,您可以将此 api 客户端作为 nugget 包提供。任何应用程序(例如您的 xamarin)都可以安装并准备好使用。 api 客户端只是一个建议.. 要点是您可以分离 DTO 并根据需要添加它们。例如,通过项目参考.. 或 nugget 包。
-
@jpgrassi 我认为问题出在 Visual Studio 2015,我正在升级到 2017,至于我以前从未创建过的 nuget 包,但我创建了类库等......也许它是具有不同部署的不同类型的项目,我会检查一下。
标签: asp.net-core xamarin.forms repository dto unit-of-work