2009-04-22 12 views
4

私は現在、「ビジネスオブジェクト」プロジェクトであるプロジェクトを持っています。私たちの目標は、GUIとビジネスオブジェクトを明確に区別することです。しかし、私のプロジェクトはSystem.Windows.Formsへの参照を持っています。それは私のプロジェクトがうまく設計されていないということに大きな赤い旗です。「ビジネスロジック」レイヤーから「GUI」レイヤーを削除する方法はありますか?

私の問題は、「Active Query Builder」というサードパーティのコントロールを使用していることです。文字通りGUIのような「コントロール」、System.Windows.Forms.Controlです。 FormのControlsコレクションに追加されてもどこにでも表示されることはありません。また、ビジネスオブジェクトのコア機能の多くを提供します。

とにかく、System.Windows.Formsへの参照なし - 私はサードパーティのコントロールを使用することはできませんし、BOは恐ろしく壊れています。しかし、私はSystem.Windows.Formsへの参照を持つことができないと言われている。

私は何をすべきか完全に迷っています。

より多くのデザインパターンタイプの経験を持つ人がソリューションを提供できますか?

答えて

6

WindowsFormsを参照するライブラリがありますが、何も直接使用していませんか?あなたのBOプロジェクトはどのフォームでも邪魔していませんか?

私はあなたがうまくいると思う、参照は、私がこれをやっている待っていると言う赤い旗です。しかし、レイヤーがまだ論理的に分離されている限り、IMHOはあなたの大丈夫です。

これを抽象化して、クエリービルダーとやりとりする別のプロジェクトを作成することができます。だからあなたのBOプロジェクトは、このコントロールの使い方を知っているクエリービルダープロジェクトで動作します。

+0

これは意味があります - ありがとうございます。 –

+0

あなたが知っているなら、私はなぜこれで-1を得ているのか聞きたいです。私はあなたの意見を聞いて興味があります。 – JoshBerke

3

ここで間違いかもしれませんが、System.Windows.Formsは.NET Frameworkの一部であり、実際にはGUIを構成しません。それは何も表示しないであなたが利用するかもしれない多くの便利な機能を持っているかもしれません。私は、誰もそれが使用されるべきではないと主張したことは、原則を誤解している可能性があると考えています。

n層アプリケーションを開発する場合は、GUI-Business Logic-Data Storeの分離を操作するのが一般的ですが、GUIは厳密にユーザーにインタラクションを許可するユーザーインターフェイスであり、簡単なフレームワークではありません。

2

私はActive Query Builderを漠然とよく知っていますが、SQLクエリを作成するために使用されるGUIコンポーネントではありませんか?私は、その種のコンポーネントがビジネスオブジェクトにどのように属しているかを見失います。

+0

私はそれに慣れていませんが、設計時にクエリを構築して実行時にコンポーネントを実行する必要がある場合、それがインクルードされ、Formsを使用することは意味があります。 – Lazarus

+0

GUIコントロールとは別に、SQLを生成し、一般的にかなりクールな機能を提供する機能を提供します。基本的には、私は多数の「基準」を持っていて、一致するデータまたはそれらの一致を得るために必要なSQLを返すことを望みます。AQBコントロールはその中心にありますが、我々はそれをかなり構築し、他のBOにその機能を利用させたいと考えています。 –

+0

(私はそれがBOの中にあることを正当化するかどうかはわかりません。 –

1

必要なメソッドとのインターフェイスを実装するコントロールのラッパークラスを作成できます。ビジネスオブジェクトは、そのインターフェースに依存することができます。これは何でも実装できます(この場合はコントロール)。

この「コントロール」にはUIとは無関係の機能があることが懸念されます。それは間違っていると感じるだけです。

関連する問題