如何在UWP应用程序中将Android的表示层与Windows分开?

时间:2017-03-14 16:37:51

标签: c# android wcf xamarin uwp

我在Silverlight中拥有相当大的企业级应用程序。我想将它转换为Windows 10 UWP应用程序,这不会太难,我希望大约80%可以完成没有太多问题。

但是我发现UWP应用可以使用Xamarin定位Android和Apple。

任何人都可以分享实用指南 - 如何处理这个问题?

我希望Xamarin"版本"中有50%的功能存在。该应用程序 - 由于平板电脑上没有足够的屏幕,其他功能可能无法使用。

什么是最好的架构,可以在Windows应用程序和它的移动mini-me之间重用尽可能多的代码?

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

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

2 个答案:

答案 0 :(得分:3)

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

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

自定义UI

的重要性

如果你回答上述问题,那么它们就不是很重要了。

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

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

  

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

但是,您可能还认为要对每个平台使用一些小的特定代码,然后可以在每个项目中查看自定义渲染器, proj.ios,proj.droid,proj.UWP。

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

答案 1 :(得分:3)

UWP可以定位Android和iOS。但是,如果您选择Xamarin.Forms项目模板,则可以定位UWP,Android和iOS。这将创建一个Shared或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编写本机应用程序,尽管没有表单。这种方法将迫使您更深入地了解每个平台,因为它们在生命周期,UI等方面表现不同。

项目结构Xamarin.Forms项目为您提供共享项目或PCL,然后针对每个目标平台的应用程序项目是攻击它的好方法。共享代码进入PCL或共享项目,平台特定代码进入应用程序项目。如何,确切地管理和构建代码,取决于

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