2011-01-28 11 views
0

flexを使用してアプリケーションを開発する必要があります。要件は、Webアプリケーションとデスクトップアプリケーションの両方を開発することです。このアプリケーションにはデータベースを使用する必要があります。私は空気のアプリケーションに使用できるローカルデータベースがあることを知った。adobe flex webとデスクトップアプリケーションの両方で作業する

私は2つのアプリケーションを作成したくないので、可能な限り多くのコードを再利用したいと考えています。

ので、ここでは、このための私の計画は次のとおりです。

  1. は、ライブラリプロジェクトを作成します。
  2. 大気中のローカルデータベースと対話するためのhttpserviceのようなクラスを作成します。
  3. 正しいサービス(httpserviceまたはカスタムサービス)を呼び出すための中間層。
  4. 上記の中間層とだけ相互作用してデータを扱うUI。

これが実現可能なのか、以前の経験を共有することができますか、他のアイデアはありますか?

答えて

1

あなたのアプローチは正しいです。アプリケーションと話したいサービスの抽象化を作成し、次に2つの異なる実装を提供する必要があります.1つは、AMF、WebサービスまたはHTTPサービス経由のリモート処理を使用するWebアプリケーション用、もう1つはデスクトップアプリケーション用です。 SQLiteの実装があります。

このアプローチは基本的にSpring ActionScriptフレームワークのコアパターンである戦略パターンの実装です。サービスクラスのインターフェイスの作成に役立つOperation APIが含まれています。これは、非同期シグネチャを持つためです。素晴らしいことには、スタブサービス実装の作成もサポートされているため、Webまたはデスクトップクライアントの実際の実装に頼らずにアプリケーションをテストできます。また、フレームワークはさまざまな構成メカニズムを提供するため、アプリケーションをデプロイして実行時に使用する必要のある戦略を提供できます。

私は操作APIを議論した春のActionScriptについて講演しました:あなたのサービスコードはこのような何か、コードで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

0

いいスタートです。また、プラットフォームに依存するコードを分離する必要もあります。

は、いくつかの詳細については、この記事を参照してください:

File() FileStream in web app

関連する問題