1

私はコンテントネゴシエーションを使用しているので、リクエストのヘッダーに応じてJSON/XML出力を提供します。今、私はこの機能を提供するのに最適な場所はどこか疑問に思いました。

情報:BLL=ビジネスロジック層
DTO=データ転送オブジェクト
DAL=データアクセス層

DTOの擬似コードの例

class ExampleDTO{
    propertie name;
    propertie description;
}

BLLの擬似コードの例

class ExampleBLL{
    GetExample(name) returns ExampleDTO;
    GetExamples() returns List<ExampleDTO>;
}

1)BLLオブジェクトを使用するGUIの場合:BLLからのDTO結果をJSON / XMLに変換します
2)BLLの場合:次のようなもの... getObjectJSON()-> DTO入力をJSON形式に変換して返します
3) DTOの場合:toJSON()toXML()toString()のような動作
4)または1つのプロパティ(json / xml)のみを持つ追加のDTO
5)他に何かありますか?..。

*個人的には、(1)ロジックをGUIから除外する理由で間違っていると思います。(4)WebJsonExampleDTOやWebXmlExampleDTOのよ​​うな追加のDTOを1つのプロパティだけで使用するのはやり過ぎのようです。

4

1 に答える 1

1

どの応答を返すかを知っていると仮定して、次のアプローチをお勧めします。

  1. BLLは応答タイプについて何もする必要がないため、応答タイプをBLLとは別にしてください。

  2. 2つのパラメーターを受け入れる1つのレイヤーが必要です。1つは応答タイプで、もう1つは呼び出される関数です。

    • このレイヤーはBLLを呼び出します
    • BLLはDTOを返します
    • 次に、DTOを要求されたタイプ、つまりJSON/XMLに変換します。
    • 変換されたDTOをcallyに返します。
  3. 最後に、3つ以上のレイヤーのGUI、変換レイヤー、およびBLLがあります。また、BLLはDALと相互作用します。

応答タイプに関係なくコードを記述することには、応答タイプをいくつでも持つことができるなどの利点があります。XML、JSONを使用できるように、別の文字列などを使用できます。また、あなたはまたより良いコントロールを持つでしょう。

于 2011-10-15T11:52:11.917 に答える