在MonoTouch和MonoForAndroid之间共享代码

5
什么是在MonoTouch和Mono For Android项目之间共享C#业务逻辑代码的最佳实践?
编辑: 最初,我的问题是关于物理文件共享的:
1.您建议使用什么:网络文件共享还是一些代码版本控制(git,svn)?在我的情况下,我正在使用两个工作站 - Mac(带有MonoTouch的MonoDevelop)和PC(带有Visual Studio和MonoDroid)。 2.解决方案/项目文件夹结构如何?在“博客文章:Xamarin Mobile World Congress 2012非官方会议应用发布!”示例结构相当混乱:一个文件夹中有几个解决方案,然后不同平台的项目在一个子文件夹中以不同的文件夹和项目名称存在。无法通过IDE来实现。他们是否手动编辑解决方案文件和文件夹名称以外的内容? 3.对于通用代码项目,使用什么样的配置文件(模板)? Monotouch有几种:Empty Project、MonoTouch Library Project和MonoTouch Binding Projects?在Android上,我认为是Android类库?

你能详细说明一下吗?“业务逻辑”是什么意思? - Stuart
除了特定于平台的用户界面之外,所有C#代码。 - Arvis
2个回答

12

这是一个非常普遍的问题,但以下是一些可能会帮助你入门的资源:

  1. 视频:跨平台移动开发
  2. 博客文章:适用于Windows Phone 7、MonoDroid和其他平台的共享库
  3. 书籍:使用C#进行移动开发
  4. 博客文章:Xamarin Mobile World Congress 2012 非官方会议应用发布!

编辑(回答您的新问题)

  1. 链接多个项目中的文件是为了只有一个实际的文件副本,而不必自己处理多个文件并使它们保持同步。该文件实际上仅存在于一个项目中,并链接到其他项目中,但当编译这些项目时,它会将该文件视为实际存在。

  2. 我无法确定他们是如何创建文件夹结构的,但我知道有很多情况下,我会手动编辑项目或解决方案文件,以获得我想要的文件夹结构,因为无法通过IDE单独实现所需的结构。这实际上取决于个人对文件夹如何组织的喜好。

  • 最终,您需要为每个要目标平台创建一个类库项目。采用链接文件的方法时,物理文件放置的位置完全由您决定。我经常使用的一种方法是创建一个标准的.NET 4.0类库,将文件放在其中,然后将它们链接到我的Mono for Android和MonoTouch类库中。如果您只关心面向iOS和Android,则这可能比其价值更高,您可以让文件存在于一个项目中,并将它们链接到另一个项目中。


  • 如果你提到了其他几本书,我会给你点赞的 :) - Stuart
    1
    啊,那听起来不是我想要的!无论如何加1吧。我怪星期五!抱歉 :) - Stuart
    你对我的问题补充有什么建议吗? - Arvis

    8

    免责声明:我有一个特定的Mvvm方法论,用于在多平台项目中共享代码...

    尽管如此,我真的不相信“一刀切”的框架 - 我认为你需要谨慎选择最适合你的项目、开发人员和组织的方法。

    话虽如此,在Mono开发方法中,你可以使用以下工具:

    • 使用便携式类库共享完全相同的代码
    • 使用平台特定的类库,使用微软的Project Linker工具将其链接以在不同平台之间共享代码
    • 在你的类库中使用#define代码来提供项目的平台特定实现(个人建议避免此方法,但往往是最快捷的上市途径)
    • 使用DI/IoC技术为那些确实需要平台特定实现的组件提供支持。
    • 使用程序集链接提供IoC - 例如这就是Xamarin MobileAPI所做的
    • 使用基于服务器的逻辑进行真正的共享功能 - 例如使用REST或SOAP-XML服务实现逻辑
    • 共享测试(例如 NUnit)以确保您的逻辑质量
    • 使用共享代码技术 - MVC(MonoCross)或MVVM(MonoMobile.ViewsMvvmCross)用于UI“控制器”逻辑;MonoTouch.Dialog和MonoDroid.Dialog用于“视图级别”抽象;CrossGraphics用于UI“绘图”;SQLite.Net用于数据库等。

    我发现MonoTouch、MonoDroid和Microsoft工具在开发跨平台代码方面提供了真正而显著的好处-但是您必须努力工作和思考才能实现这一点。


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接