【问题标题】:Porting .Net Core (2.2) web app to .Net standard (2.1) for use in Xamarin project将 .Net Core (2.2) Web 应用程序移植到 .Net 标准 (2.1) 以在 Xamarin 项目中使用
【发布时间】:2019-09-29 21:01:13
【问题描述】:

我最近在 .Net Core 中构建了一个 MVC Web 项目,现在我想为它构建一个 Android 和 iOS 前端。我了解 .Net Standard 和 .Net Core 之间的区别,但在弄清楚应该在哪个项目中执行时遇到了问题。首先我将描述当前的解决方案:

数据模型: 如您所料,DataModel 包含我所有的基本模型和 DTO。它被所有其他项目引用。

数据访问: 执行所有数据存储/获取操作(存储库)并仅引用 DataModel

主机服务: 提供数据并引用 DataModel 和 DataAccess 的 RESTful 服务

显示: 前端 MVC 代码,包含 ViewModel、View、Controller 等,并引用 DataModel 和 HostService

据我了解,Display 项目的某些部分确实需要在 .Net 标准项目中,以便在针对 Adroid 和 iOS 的 Xamarin 项目中重用它们,但我对应该移动哪些部分有点困惑到新的 .Net Standard 项目。显然,视图需要保留在 Display 项目中,因为它们包含特定于 Web 前端的 Razor 代码。在我看来,唯一需要移动到新项目的东西是 ViewModels 和 Controllers(以及它们引用的任何东西)?这听起来对还是我过于简化了?我是否遗漏了什么或者有什么我应该知道的问题?

FWIW,我运行 .Net 可移植性分析器并收到以下结果:

它指出这些项目与 .Net 标准不兼容:

如何确定这些冲突发生的位置以解决它们?我在 Display 项目中查找了目标成员(IE.Microsoft.AspNetCore.Razor.Hosting.RazorConfigurationNameAttribute),但没有找到任何匹配项,所以我不确定如何修复它们。任何指针将不胜感激!

【问题讨论】:

标签: c# asp.net asp.net-mvc .net-standard-2.1


【解决方案1】:

对于那些希望做同样事情的人,这是我进一步研究的结果。

简单的答案是你不能。

长答案:

我的 Web 代码是使用 MVC(模型-视图-控制器)编写的,而 Xamarin 使用 MVVM(模型-视图-视图模型)。这两种基础设施是不兼容的。他们都有一个共同的模型,但这就是相似之处。

在 MVC 中,视图向控制器请求操作。然后控制器从模型中检索数据,创建组成视图所需的任何必要的数据结构,然后返回使用数据结构显示视图的视图。数据结构可以是独立的项目,例如 List,也可以是包含许多字段 ListEmployees、int CurrentEmployeeID、string CurrentEmployeeName 等的 ViewModel。这个 ViewModel 只是一个临时存储设备,用于在之间传输数据控制器和视图,不包含业务逻辑。

另一方面,在 MVVM 中,ViewModel 代替了控制器。视图从 ViewModel 请求操作。然后 ViewModel 执行请求的操作(从模型中检索数据)并调用 INotifyProperty 将数据存储在自身中。 View 有一个 PropertyChanged 的​​监听器,当它收到来自 ViewModel 的事件通知时,它会向 ViewModel 请求更新的数据。

因此,虽然这两种基础架构(可以)使用一种称为 ViewModel 的东西,但它们的操作方式却大不相同,并且不能跨代码库共享。在上述场景中,唯一要共享的代码是从 HostService(模型)向下。 PVS.Display 中的所有代码都不能在我的 Xamarin 项目中重用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    • 1970-01-01
    • 1970-01-01
    • 2019-06-20
    • 2018-09-03
    • 1970-01-01
    相关资源
    最近更新 更多