【问题标题】:How to separate presentation layer for Android from Windows in UWP app? [closed]如何在 UWP 应用程序中将 Android 的表示层与 Windows 分开? [关闭]
【发布时间】:2017-03-14 16:37:50
【问题描述】:

我在 Silverlight 中有相当大的企业级应用程序。我想将其转换为 Windows 10 UWP 应用程序,这不会太难,我预计大约 80% 可以顺利完成。

但是我发现 UWP 应用可以使用 Xamarin 以 Android 和 Apple 为目标。

谁能分享一个实用指南 - 如何解决这个问题?

我预计 50% 的功能会出现在应用的 Xamarin“版本”中 - 因为平板电脑上的屏幕不足,并且其他功能可能不可用。

在 Windows 应用程序及其移动 mini-me 之间尽可能多地重用代码的最佳架构是什么?

如何组织VS项目和共享库等?

附注Windows 应用程序中的数据访问将是带有 EF 和 Oracle 的 WCF。我可以轻松地将 WCF 调用镜像到移动应用程序的 REST 服务中。

【问题讨论】:

  • 我认为这个问题主要是基于意见的,而且过于宽泛。当你写这个问题时,你的期望是什么?此外,您对自己的问题几乎没有研究,完全误解了 UWP 是什么以及 Xamarin 做什么,或者至少您的问题是如何出现的。它只是加强了实际关闭问题的理由。现在这可能很敏感,因为这是你的问题,你对此有感觉,但没有理由像你刚才那样概括和侮辱别人。看到你有超过 3k 分,你应该知道如何提出 SO 问题。

标签: c# android wcf xamarin uwp


【解决方案1】:

首先,我会问https://www.xamarin.com/forms 中指定的几个问题:

特定于平台的功能有多重要?

自定义 UI 的重要性

如果你对以上问题的回答是,它们不是很重要。

然后创建一个 Xamarin.Forms 项目,并在 SharedLibrary Proj 中组织您的 RestAPI 服务代码。

https://developer.xamarin.com/guides/cross-platform/application_fundamentals/shared_projects/

共享项目(有时也称为共享资产项目)允许您编写在多个目标项目(包括 Xamarin 应用程序)之间共享的代码。该代码作为每个引用项目的一部分进行编译,并且可以包含编译器指令,以帮助将特定于平台的功能整合到共享代码库中。

但是你可能也认为你想为每个平台使用一些小的特定代码,你可以查看每个项目中的自定义渲染器, proj.ios , proj.droid, proj.UWP.

然后您可以在共享项目中使用 XAML 编写共享视图。 希望我回答了你的问题。

【讨论】:

  • 只是为了澄清一下——我说的是在 UI 端共享代码。完全忘记服务器端,这一切都得到了照顾..但感谢自定义渲染器的想法,我会仔细研究它。
  • @BoppityBop 没问题,我唯一能想到的共享 UI 代码,就是你在共享项目中编写的 xaml ......快乐编码。
【解决方案2】:

UWP 可以以 Android 和 iOS 为目标。但是,如果选择 Xamarin.Forms 项目模板,则可以面向 UWP、Android 和 iOS。这将创建一个共享或 PCL 库,您可以在其中包含与平台无关的代码。

如果您选择 Xamarin.Forms,请不要期望您的 Silverlight XAML 进行 1:1 转换,因为 XAML Xamarin.Forms 提供的与 Silverlight、WPF 或 UWP 本机提供的不完全相同。不过它非常相似,如果您的 Silverlight 应用程序主要使用标准控件,例如按钮、文本框等。转换 UI 不会花费您太多时间。

但 Xamarin.Forms 不是灵丹妙药,因此您可能需要对其进行调整,甚至可能编写一些自定义控件,以使您的应用程序在所有目标平台上运行。

至于构建应用程序的好方法,这主要是基于意见。然而,很多人使用 MVVM 模式来强制执行一些关注点分离。这非常适合 Xamarin.Forms 以及它内置的绑定,正如您对使用 XAML 编写 UI 代码的期望一样。 但是实现 Redux、VIPER 或其他设计模式也应该是可能的。您会发现大多数使用 MVVM 的示例。还有很多适用于 Xamarin.Forms 的 MVVM 库,因此您可以抢占先机。

Xamarin.Forms 是一种跨平台共享 UI 代码的好方法。但是,如果您想要完全控制您的 UI,您可以考虑使用 Xamarin 编写本机应用程序,尽管没有 Forms。这种方法将迫使您更深入地了解每个平台,因为它们在生命周期、UI 等方面的行为不同。

Xamarin.Forms 项目的项目结构为您提供了共享项目或 PCL,然后为每个目标平台提供了一个应用程序项目,这是一种很好的攻击方式。共享代码进入 PCL 或共享项目,平台特定代码进入应用程序项目。您如何管理和构建您的代码,完全取决于

TL;DR:MVVM,不要期​​望从 Silverlight 到 Xamarin.Forms 的 1:1 转换。

【讨论】:

  • 好的。由于许多原因,迁移到 xamarin 作为主要代码库对我来说没有意义。它根本不会做。 (主要是希望它不会很困难)。
猜你喜欢
  • 1970-01-01
  • 2012-01-04
  • 1970-01-01
  • 2022-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-16
相关资源
最近更新 更多