2011-01-28 71 views
0

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

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

所以,这里是我的这个计划:

  1. 使库项目。
  2. 写一个类似httpservice的空间与本地数据库进行交互。
  3. 负责调用正确服务(httpservice或定制服务)的中间层。
  4. 仅与上述中间层交互数据的UI。

任何人都可以建议,如果这是可行的,或可以分享他们以前的经验或有任何其他想法?

回答

1

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

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

我做了春天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容器中配置和管理,并为您自动注入。

+0

非常感谢Christophe。你的谈话非常有帮助。你可以让我知道我从哪里可以得到你在该视频中显示的演示的来源。 – Anji 2011-01-28 11:48:52

相关问题