7

完全に Web ベースの ColdFusion アプリケーションの設計を開始しました。Flash フォームや AJAX はあまり使用しません。

最初のバージョンは厳密な Web アプリです。バージョン 2 は Flex フロント エンドになります。

Flex レイヤーが既存のロジックを使用できるように設計および構築したいと考えています。バージョン 1 で余分な作業をしなければならないということであれば問題ありません。一度ロジック コードをハード化して、リファクタリングはしたくありません。

この方法でアプリを設計できるようにするために、今すぐ検討/設計/実装する価値のあるものは何ですか?

4

3 に答える 3

6

どこから来たのかにもよりますが (かなり大きな質問なので)、1 つの大きな提案は、ColdFusion コンポーネント (CFC) を可能な限り活用することです。CFC アーキテクチャは優れており、用途が広く、強力であり、Flex と非常にうまく統合されます (Flex と CF の次のバージョンではさらにうまく統合されます)。そのため、それを念頭に置いてコンポーネント層を設計できる限り、喜んでください。

CF コードを作成してからしばらく経ちましたが、CF コードを使用して最後に行った大きなプロジェクトでは、かなりの時間を費やして、CFC から機能層を設計し、普通の Web アプリで使用できるようにしました。あなたがやっているように -- そしてその後、サイトのサブセクションに Ajax UI を追加するときが来ました (Flex の可能性もありましたが、私の場合はたまたま YUI 実装でした)。公開された CFC のファサード層を作成し、その役割は、第 1 層によって提供される機能の特殊なサブセットをラップして公開することでした。そうすることで、基盤となる (第 1 層の) CFC を直接公開することなく、必要なサービスに固有の方法で既存のコードを活用および拡張することができました。

他の人たちがもっと多くの (そしておそらくもっと詳細な) 提案をしてくれると確信していますが、それは私が最初にあなたに提供する 1 つの大きな提案です。それは、CF コンポーネントを学び、知り、使用することです。幸運を!

于 2009-02-04T03:50:00.363 に答える
6

データベース ロジックまたはアプリケーションのその他のロジックまですべてを CFC に配置することが最善であるという Christian の意見に同意します。より具体的には、Web サービスの使用をお勧めします。これの主な理由は、最終的に cf コード (データベースの永続性とロジックのすべて) を、フレックス アプリケーションを提供するサーバーとは別のサーバーに配置できるようになり、他のアプリケーションでもコードを再利用できるようになるためです。 . CFC を Web サービスとして記述することの良い点は、それらを Web サービスとして、または AMF (リモート オブジェクト) を使用して Flex のコンポーネントとして直接使用できることです。もちろん、これらのメリットが実際にどの程度適用されるかは、状況によって異なりますが、従うのに適した計画です.

ただし、主な提案は、アプリケーションをプレゼンテーション層とロジックおよび永続化層を持つものと考えることです。意思決定を行う場合、それはロジック レイヤーに入ります。画面を表示している場合や、プレゼンテーションで何かをしている場合は、そのレイヤーに入ります。これらを分離しておくと、後でプレゼンテーション層をフレックスに簡単に切り替えることができます。

また、スローされたすべてのエラーをトラップし、すべてのメソッドからの結果としてメッセージを (構造体などの結果と共に) 返すと便利な場合があります。Flex には、問題が発生したことを通知するが、エラー情報は渡さないという厄介な癖があります。これにより、スローされたエラーのデバッグと処理がはるかに簡単になります。

于 2009-02-04T13:58:14.460 に答える
3

このトピックに関するMatt Woodward のプレゼンテーションをご覧ください。非常に有益です。

そして、他の人が提供した回答に追加する一般的な事項がいくつかあります。

  • データのやり取りを CFC にカプセル化します (通常は、ゲートウェイと DAO に委任するサービス内)。
  • ほとんどの場合、ビジネス オブジェクト (ユーザー、ウィジェットなど) を表す「bean」CFC を作成する必要があります。これらは、ActionScript クラスとして Flex に転送されます。それらに cfproperty タグを追加して、ActionScript にシリアル化できるようにする必要があります (大文字と小文字と順序が区別されます!)。後で処理する必要がないように作成するときは注意して、コードの 1 つを使用してください。Adobe CF Extensions for EclipseIlludium PU36などの生成ツール がそれを行います。
  • メソッドをサービスに委任するリモート ファサード CFC (またはアプリの大きさに応じて CFC のセット) を作成します。これは、メソッドのアクセスを「リモート」に設定する場所です。通常、これを実行する唯一の場所です (多くの委任を行っているように感じますが、すべてのリモート サービスを一元化することで成果が得られます)。
  • HTML を使用して開発するときは、リモート ファサード CFC を API として扱い、HTML ビューをできるだけ「ダム」にします。次のように考えてください。CF ビューに記述したロジックはすべて、Flex ビューに複製する必要があります。リモート API のみを使用してプロジェクトをビルドすると、Flex がアプリケーションとどのように対話するかについてかなり良い感触が得られます。
  • ColdSpringを確認してください。作成するすべてのオブジェクトを管理するための優れた機能が多数用意されています。

私はアーキテクチャの専門家であるとは主張していません。簡潔にするためにここで多くの専門用語を投げかけたことは知っていますが、CF ブログをグーグルで検索すると、私が言及した設計パターンに関する多くの情報が表示されるはずです。幸運を!

于 2009-02-20T04:27:54.030 に答える