使用adobe flex web和桌面应用程序

时间:2011-01-28 06:19:34

标签: flex air adobe desktop-application

我需要使用flex开发一个应用程序。要求是开发Web应用程序和桌面应用程序。我需要为此应用程序使用数据库。我了解到有一个可用于空中应用的本地数据库。

我不想最终编写两个应用程序,因此希望尽可能多地重用代码。

所以,这是我的计划:

  1. 制作图书馆项目。
  2. 编写一个类似于httpservice的类,用于在空中与本地数据库进行交互。
  3. 一个负责调用正确服务的中间层(httpservice或自定义服务)。
  4. 仅与上述中间层交互数据的UI。
  5. 任何人都可以建议这是可行的还是可以分享他们以前的经验或有任何其他想法?

2 个答案:

答案 0 :(得分:1)

你的方法是正确的。您需要创建希望应用程序与之通信的服务的抽象,然后提供2种不同的实现:1用于Web应用程序,可能使用通过AMF,Web服务或http服务进行远程处理,1用于桌面应用程序,这将是有一个SQLite实现。

这种方法基本上是战略模式的实现,它是Spring ActionScript框架中的核心模式。包括Operation API,它将帮助您创建服务类的接口,因为它们将具有异步签名。好处是,还支持创建存根服务实现,因此您可以在不依赖Web或桌面客户端的实际实现的情况下测试应用程序。该框架还提供了不同的配置机制,以便您可以部署应用程序并提供必须在运行时使用的策略。

我在Spring ActionScript上讨论了操作API:http://parleys.com/#sl=25&st=5&id=1566

在代码中,您的服务代码可能是这样的:

// interface
public interface IUserService {
  function getUserByID(id:String):IOperation;
}

// implementation A
public class UserServiceA implements IUserService {
  public function getUserByID(id:String):IOperation {
    // return implementation specific operation
  }
}

// implementation B
public class UserServiceB implements IUserService {
  public function getUserByID(id:String):IOperation {
    // return implementation specific operation
  }
}

最终结果是您的应用程序与IUserService进行通信,并且对实际实现一无所知。可以在Spring ActionScript容器中配置和管理实现,并自动为您注入。

答案 1 :(得分:0)

这是一个好的开始。您还需要隔离平台相关代码。

有关详细信息,请参阅此帖:

File() FileStream in web app