6

DBレイアウト(またはビジネスオブジェクト、またはその他のビジネスレイヤー)からUIを自動的に生成することは悪い考えであるという声明をどこかで読みました。また、このようなものを作るために直面​​しなければならないいくつかの良い課題も想像できます.

しかし、私はそれを試みている人々の例を見たことがありません (見つけることもできませんでした)。だから私は疑問に思っています - それは本当に悪いですか?それは間違いなく簡単ではありませんが、ある程度の成功を収めることができますか? 主な障害は何ですか?成功と失敗のいくつかの例を見るのは素晴らしいことです。

明確にするために-「UIを自動的に生成する」とは、おそらくデータの表現方法に関するメタデータのヒントに基づいて、すべてのコントロールを含むすべてのフォームが(実行時またはコンパイル時に)完全に自動的に生成されることを意味します。これは、手作業でフォームをデザインするのとは対照的です (ほとんどの人がそうしています)。

追加:このやや関連する質問を見つけました

追加 2: OK、これがかなり公正な結果を得る 1 つの方法は、十分なプレゼンテーション関連のメタデータが利用可能である場合です。このアプローチでは、どれだけ「十分」であり、フォームを手動で設計するよりも作業が少なくて済みますか? また、将来の変更に対する柔軟性も向上しますか?

4

8 に答える 8

5

ビジネス クラスからデータベース テーブル/ストアド プロシージャと UI を生成するプロジェクトがありました。これは .NET で行われ、クラスとプロパティで多くのカスタム属性を使用して、希望どおりに動作するようにしました。しかし、それはうまく機能し、設計に従うことができれば、ソフトウェアのカスタマイズを非常に簡単に作成できます. また、いくつかの非常に例外的なケースのために、「カスタム」ユーザー コントロールを配置する方法もありました。

全体として、それは私たちにとってうまくいきました。残念ながら、これは販売済みの銀行商品であり、利用可能なソースはありません。

于 2009-04-08T09:11:57.743 に答える
4

データを取得するための実用的な方法だけが必要な小さなものでも問題ありません。

ただし、実際のアプリケーションに似ているものについては、それはひどい考えです。優れた UI を実現するのは、ヒューマニゼーションの要素です。これは、このマシンが人のタッチに適切に反応するように微調整することです。

インターフェイスが機械的に生成されている場合は、それを取得できません....AIに近づいている可能性があります。:)

編集 - 明確にするために: code/db から生成された UI は出発点としては問題ありませんが、それはゴミの終点です。

于 2009-04-08T10:08:28.700 に答える
0

ほとんどの場合、データは UI 生成には適していません。そのため、DB 情報をユーザーに解釈するために、ほとんどの場合、その間にロジックのレイヤーを配置します。もう 1 つのことは、DB から UI を生成すると、通常はやりたくないシステムの内部動作を表示することになります。

ただし、DB がどこから来たかによって異なります。システムのユーザーの目標が何であるかを正確に反映するように作成されている場合。アプリケーションがユーザーを支援する必要があるユーザーのメンタル モデルが DB に格納されている場合。それならうまくいくかもしれません。しかし、ユーザー側から始めなければなりません。そうでない場合は、そのように行かないことをお勧めします。

于 2009-04-08T12:51:58.853 に答える
0

Can you look on your problem from application architecture perspective? I see you as another database terrorist – trying to solve all by writing stored procedures. Why having UI at all? Try do it in DB script. In effect of such approach – on what composite system you will end up? When system serves different businesses – try modularization, selectively discovered components, restrict sharing references. UI shall be replaceable, independent from business layer. When storing so much data in DB – there is hard dependency of UI – system becomes monolith. How you implement MVVM pattern in scenario when UI is generated? Designers like Blend are containing lots of features, which cannot be replaced by most futuristic UI generator – unless – your development platform is Notepad only.

于 2013-05-20T03:23:53.223 に答える
0

私の意見では、あなたが考えるべきことがいくつかあります:

  1. 顧客は、UI をカスタマイズする機能を必要としていますか?
  2. さまざまな属性や要素がたくさんありますか?
  3. そのような「レンダリング エンジン」を作成する努力は、それだけの価値がありますか?

さて、これらについて考えるべき理由は明らかだと思います。その種のモデルが理にかなっている場合は、本当にプロジェクトに依存します...実行時にカスタマイズできる多くのフォームを作成したい場合、このモデルは非常に便利です。また、多くの小さなツールを実行する必要があり、これをある種の「エンジン」として使用する場合、多くの時間を節約できるため、この努力は価値があります。そのような「レンダリング エンジン」を使用すると、エラー レポートを自動的に追加したり、値をチェックしたり、常に同じパターンで構築される他のものを追加したりできます。しかし、この要素や属性が多すぎると、パフォーマンスが急速に低下する可能性があります。大規模なプロジェクトで興味深いもう 1 つのことは、各フォームで発生する必要がある変更は、エンジンで行う必要があることです。それぞれの形ではありません。完成したアプリケーションにバグがある場合、これにより多くの時間を節約できます。

私たちの会社では、現金ソフトウェア(今はそれを表す適切な言葉を思い出すことができません...)とアプリケーションの間のインターフェースジェネレーターに同様のモデルを使用しています.UIを作成するのではなく、いずれかの出力ファイルを作成します.アプリケーション。XML を使用して構造を定義し、値を変換する方法などを定義します。

于 2009-04-08T10:48:25.450 に答える
0

ねえ、これを達成するのはまったく難しくありませんし、悪い考えでもありません。それはすべてプロジェクトのニーズに依存します。多くのソフトウェア製品 (プロジェクトではなく製品に注意してください) はこのモデルに依存しているため、さまざまなクライアントのニーズに合わせてコードや UI ロジックを書き直す必要はありません。クライアントは、管理システムのデザイナー フォームを使用して、UI を好きなようにカスタマイズできます。

この種のもののメタデータを保存するためにxmlを使用しました。すべてのフィールドに保存した属性のいくつかは次のとおりです。

  1. フレンドリーネーム (ラベルのキャプション)
  2. haspredefinedvalues (ドロップダウン リスト/マルチ チェック ボックス リストの場合ははい)
  3. 複数選択 (はいの場合はチェック ボックス リスト、いいえの場合はドロップ ダウン リスト)
  4. データ・タイプ
  5. 最大長
  6. 必要
  7. 最小値
  8. 最大値
  9. 正規表現
  10. 有効 (表示または非表示)
  11. sortkey(Webフォームでの注文)

配置に関して - 私はあまり気にせず、単純にテーブル tr td タグを 1 つ下に生成しました - ただし、これも実装したい場合は、UI 固有のプロパティ (ルック アンド フィール、ポジショニングなど)こちら

更新: また、多くの e コマース製品は、製品情報を入力するときにこの種の動的 UI に従っていることに注意してください。クライアントは、家具から大人のおもちゃまで、太陽の下であらゆるものを販売する可能性があるためです ;-) そのため、異なるコードごとにコードを書き直す代わりに業界では、管理フォームを介してクライアントに製品属性のメタデータを入力させるだけです:-)

Entity-attribute-value モデルも検討することをお勧めします。これには独自の長所と短所がありますが、要件に合わせて非常にうまく使用できると感じています。

于 2009-04-08T10:00:12.993 に答える