0

MS Word ドキュメントを作成して実行するアプリケーションがあります。そのコードをどのレイヤーに配置するかを考えています。

外部ドキュメントの実行は、プレゼンテーション層の一部ですか、それともビジネス ロジック層の一部ですか?

一方では、最終的にユーザーに何かを「提示」する結果になるため (外部アプリケーション内ではありますが)、プレゼンテーション層の一部であるべきだと思われます。一方、プレゼンテーション レイヤーは現在のアプリケーションの UI にのみ関心を持ちたいと考えているため、ビジネス ロジック レイヤーの懸念のように見えます。これは、すべてが「プレゼンテーション」の側面を持っているわけではない複数の外部プロセスに使用できます。

また、SOがこの質問に適した場所であるかどうかもわかりません。https://softwareengineering.stackexchange.com/を確認しましたが、これらのタグにはほんの一握りのフォロワーしかいませんでした。

4

1 に答える 1

0

「プレゼンテーション層の一部」が何を意味するかによって異なります。実際の実装を意味する場合は、そうではありません。はい、結果は開かれた Word ドキュメントですが、これはアプリケーションのプレゼンテーション層とは関係ありません。

  1. 実際の実装は、データベース、ファイル、およびサード パーティ アプリケーションを処理するすべてのコードが必要なインフラストラクチャ レイヤーに移動する必要があります。
  2. ドキュメント生成ロジックの実装が異なる場合があります。たとえば、コンソール アプリケーションの場合はファイルをフォルダーに書き込むだけでよく、Web アプリケーションの場合はファイルを応答に書き込み、ユーザーがダウンロードできるようにする必要があります。
  3. 実際のロジックはアプリケーション固有であるため、アプリケーション層で注入する必要があります。プレゼンテーション層がない場合は、ここでも問題ありません。
  4. また、特定のビジネス ケースに対して常にドキュメントが生成されるようにしたいと考えていると思います。次に、挿入されたドキュメント生成サービスをビジネス レイヤーに渡す必要があります。この場合、ビジネス ロジックを別のアプリケーションに移動したい場合、必要に応じて新しいドキュメント生成ロジックを実装することを忘れないでください。

したがって、コードは次のようになります。

public class BusinessLayerService
{
    private IDocumentGenerator _documentGenerator;

    public BusinessLayerService(IDocumentGenerator documentGenerator)
    {
        _documentGenerator = documentGenerator;
    }

    public void DoBusinessCase1()
    {
        // Do work here
        _documentGenerator.GenerateDocument();
    }
}

IoC コンテナーを使用する場合は、必要な実装 (Web、ウィンドウ、モービル、またはコンソール アプリケーション用) をアプリケーションのスターアップに登録するだけです。

それが役に立てば幸い!

于 2014-10-21T12:23:52.627 に答える