15

面接に行ったところ、ビジネスレイヤーのアーキテクチャを紹介するように依頼されました。私は3層アーキテクチャについていくつかの考えを持っていますが、インタビュアーの前で何を書くべきかについては実際にはわかりません。それで、私のプロジェクトが組織の従業員を扱っているとしたら、私はそこに何を書いただろうか。それは私が作成すべきどんな種類の図か、それともコーディング部分でしょうか。私はC#フレームワーク3.5で作業しました。この質問で他に何を言うべきか本当にわかりませんので、何か必要なことがあれば教えてください。ありがとう。

編集 私はwinformsで作業しました。私はビジネスレイヤーが何であるかを知っていますが、ビジネスレイヤーにはコードがあり、明らかに私のプロジェクトは少し大きかったので、インタビュアーに何を伝えるべきかわかりませんでした。だから私はそこに何を書くべきでしたか?

4

5 に答える 5

25

3層アーキテクチャは3つのメインレイヤーで構成されています

  • PLプレゼンテーション層
  • BLLビジネスロジックレイヤー
  • DALデータアクセス層

各最上層は下の層にのみ質問し、その上に何も表示されません。

彼らがあなたにあなたのBLLをどのように構築するかについて尋ねるとき、あなたは次のようなものを書くことができます:

namespace Company.BLL
{
  // let's create an interface so it's easy to create other BLL's if needed
  public interface ICompanyBLL
  {
      public int Save(Order order, UserPermissions user);
  }

  public class Orders : ICompanyBLL
  {
    // Dependency Injection so you can use any kind of BLL 
    //   based in a workflow for example
    private Company.DAL db;
    public Orders(Company.DAL dalObject)
    {
      this.db = dalObject;
    }

    // As this is a Business Layer, here is where you check for user rights 
    //   to perform actions before you access the DAL
    public int Save(Order order, UserPermissions user)
    {
        if(user.HasPermissionSaveOrders)
            return db.Orders.Save(order);
        else
            return -1;
    }
  }
}

私が作成しているプロジェクトの実例として:

ここに画像の説明を入力してください

PLはすべて公開されているサービスであり、私のDALはデータベースへのすべてのアクセスを処理します。サービスの2つのバージョン、古いASMXと新しいWCFサービスを処理するサービスレイヤーInterfaceがあります。これらは公開されているので、簡単です。ユーザーが使用するサービスをオンザフライで選択する

public class MainController : Controller
{
    public IServiceRepository service;

    protected override void Initialize(System.Web.Routing.RequestContext requestContext)
    {
        ...

        if (thisUser.currentConnection.ws_version == 6)
            // Use old ASMX Web Service
            service = new WebServiceRepository6(url, ws_usr, ws_pwd);

        else if (thisUser.currentConnection.ws_version == 7)
            // Use the brand new WCF Service
            service = new WebServiceRepository7(url, ws_usr, ws_pwd);

        ...

    }
}

上記のコードでは、依存性注入を使用して他のレイヤーの知識を分離しています。このレイヤー(これはMVCプロジェクトのコントローラーであるためプレゼンテーションレイヤー)では、サービスの呼び出し方法を気にする必要はなく、ユーザーがServiceA代わりに使用するServiceB...知っておく必要があるのは、aを呼び出すとIService.ListAllProjects()正しい結果が得られるということです。

提案の分割を開始し、サービス接続に問題が発生した場合、それはプレゼンテーション層とは関係がなく、サービス層(私の場合)であり、簡単に修正できservice.dll、Webサイト全体を公開する代わりに新しいものを簡単に展開できます。また...

また、すべてのプロジェクトで使用するすべてのビジネスオブジェクトを保持するヘルパーもあります。

お役に立てば幸いです。

于 2011-09-22T06:33:51.810 に答える
1

3層は次のとおりです。

  1. 1つのレイヤーでのプレゼンテーション。
  2. 他のレイヤーのアプリケーションロジック-ビジネスレイヤーと呼ばれます。
  3. 第3層のデータアクセスクラス。-データレイヤーと呼ばれます。

Webフォームはプレゼンテーション層になるため、ASP.Netコードビハインドファイルで何かを行う従業員クラスでは、if / elseなどを使用してビジネスルールを適用しているため、私の理解ではビジネス層と見なすことができます。App_Codeフォルダーのデータアクセスクラスはデータレイヤーになります。

デスクトップアプリの場合、フォームデザインはプレゼンテーション層になり、フォームコードはビジネス層になり、データベースへのアクセスに関連するものはすべてデータ層になります。

于 2011-09-22T06:27:20.030 に答える
1

ビジネスロジックは、アプリケーションデータの取得、処理、変換、および管理に関係するアプリケーションロジックとして定義されます。ビジネスルールとポリシーの適用。データの一貫性と妥当性を確保します。再利用の機会を最大化するために、ビジネスロジックコンポーネントには、ユースケースまたはユーザーストーリーに固有の動作またはアプリケーションロジックを含めないでください。ビジネスロジックは、さらに次の2つのカテゴリに分類できます。

  • ビジネスワークフロー。UIコンポーネントがユーザーから必要なデータを収集し、それをビジネスレイヤーに渡すと、アプリケーションはこのデータを使用してビジネスプロセスを実行できます。多くのビジネスプロセスには、正しい順序で実行する必要のある複数のステップが含まれ、オーケストレーションを通じて相互に作用する場合があります。ビジネスワークフローは、長期にわたるマルチステップのビジネスプロセスを定義および調整し、ビジネスプロセス管理ツールを使用して実装できます。これらは、ワークフローコンポーネントをインスタンス化して操作を実行するビジネスプロセスコンポーネントと連携します。
  • ビジネスエンティティビジネスエンティティエンティティ、またはより一般的にはビジネスオブジェクトは、アプリケーション内で顧客や注文などの実際の要素を表すために必要なビジネスロジックとデータをカプセル化します。それらはデータ値を保存し、プロパティを通じてそれらを公開します。アプリケーションで使用されるビジネスデータを含み、管理します。ビジネスデータおよび関連機能へのステートフルプログラムアクセスを提供します。ビジネスエンティティは、エンティティ内に含まれるデータを検証し、ビジネスロジックをカプセル化して、一貫性を確保し、ビジネスルールと動作を実装します。
于 2017-11-16T10:11:21.920 に答える
0

すべてのビジネスロジックを担当するビジネスレイヤーレイヤー。たとえば、Organizarionがあるので、従業員の組織とコレクションがあります。従業員オブジェクトでは、いくつかの制限またはいくつかのルールを実装する必要があります。このルールは、このレイヤーに実装されます。

于 2011-09-22T06:29:08.187 に答える
0

3層アーキテクチャは、論理コンピューティングの3つの「層」または「層」で構成されるソフトウェアアーキテクチャの一種です。これらは、特定のタイプのクライアントサーバーシステムとしてアプリケーションでよく使用されます。3層アーキテクチャは、ユーザーインターフェイス、ビジネスロジック、およびデータストレージレイヤーをモジュール化することにより、本番環境と開発環境に多くのメリットをもたらします。

ビジネスロジック層:ビジネスロジックは、エンドユーザーインターフェイスとデータベース間の通信を管理するプログラミングです。ビジネスロジックの主なコンポーネントは、ビジネスルールとワークフローです。

プレゼンテーション層とDAL間のデータ交換の仲介役として機能するビジネスロジック層(BLL)。実際のアプリケーションでは、プロジェクト構造を単純化するために、BLLをApp_Codeフォルダー内の個別のクラスライブラリプロジェクトとして実装する必要があります。以下に、プレゼンテーション層、BLL、およびDAL間のアーキテクチャ上の関係を示します。

BLLは、プレゼンテーション層をデータアクセス層から分離し、ビジネスルールを課します BLL

于 2018-12-27T12:14:24.110 に答える