我在Silverlight中拥有相当大的企业级应用程序。我想将它转换为Windows 10 UWP应用程序,这不会太难,我希望大约80%可以完成没有太多问题。
但是我发现UWP应用可以使用Xamarin定位Android和Apple。
任何人都可以分享实用指南 - 如何处理这个问题?
我希望Xamarin"版本"中有50%的功能存在。该应用程序 - 由于平板电脑上没有足够的屏幕,其他功能可能无法使用。
什么是最好的架构,可以在Windows应用程序和它的移动mini-me之间重用尽可能多的代码?
如何组织VS项目和共享库等?
P.S。 Windows应用程序中的数据访问将是使用EF和Oracle的WCF。我可以轻松地将WCF调用镜像到移动应用程序的REST服务中。
答案 0 :(得分:3)
首先,我会问https://www.xamarin.com/forms中的几个问题:
如果你回答上述问题,那么它们就不是很重要了。
然后创建一个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转换。