5

在 MonoTouch 和 Mono For Android 项目之间共享业务逻辑 c# 代码的最佳实践是什么?

编辑:最初,我的问题是关于物理文件共享:

  1. 您建议使用什么:网络文件共享或一些代码版本控制(git、svn)?在我的例子中,我使用了两个工作站——Mac(带有 MonoTouch 的 MonoDevelop)和 PC(带有 MonoDroid 的 Visual Studio)。
  2. 解决方案/项目文件夹结构怎么样?在“博客文章:Xamarin Mobile World Congress 2012 Unofficial Conference App Released! ”中的示例结构相当混乱:一个文件夹中的多个解决方案,然后在一个具有不同文件夹和项目名称的子文件夹中的不同平台项目。它不能用 IDE 原生完成。他们是否在 IDE 环境之外手动编辑解决方案文件和文件夹名称的内容?
  3. 对于通用代码的项目,使用什么样的配置文件(模板)?Monotouch 有几个:Empty Project、MonoTouch Library Project 和 MonoTouch Binding Projects?我想在 Android 中 - Android 类库?
4

2 回答 2

12

这是一个非常普遍的问题,但这里有一些资源可以帮助您入门:

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

编辑(回答您的新问题)

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

  2. 我不能确切地说他们是如何创建他们的文件夹结构的,但我知道在很多情况下我会手动编辑项目或解决方案文件以获得我想要的文件夹结构,因为没有办法得到我想要的东西单独的IDE。这实际上归结为您希望如何构建文件夹的个人偏好。

  3. 最后,您需要的是针对您想要定位的每个平台的类库项目。使用链接文件方法时,放置物理文件的位置完全取决于您。我经常使用的一种方法是实际创建一个标准的 .NET 4.0 类库,将文件放入其中,然后将它们链接到我的 Mono for Android 和 MonoTouch 类库中。如果您关心的只是针对 iOS 和 Android,那可能比它的价值更麻烦,您可以让文件存在于一个项目中并将它们链接到另一个项目。

于 2012-05-18T16:46:00.497 回答
8

免责声明:我有一种特殊的 Mvvm 方法,用于跨多平台项目共享代码......

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

话虽如此,您可以在 Mono 开发方法中使用的一些工具是:

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

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

于 2012-05-18T18:11:44.730 回答