問題タブ [n-layer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
rest - クライアント (およびサービス?) の REST インターフェイス
N 層アーキテクチャでは、REST インターフェイスがいくつかのリソースを公開しています。クライアントは、TLS 経由の基本認証で認証される必要があります。ビジネス ロジックは、データが有効であり、システムによって受け入れられることを確認します。フィルターを適用して、テナントが自分のデータのみを表示および変更できるようにします。サービスが同じデータを操作する必要がある場合、
1) 同じ REST インターフェイスを使用するが、サービス レベル フィルターを適用し、認証にテクニカル アカウントを使用する
方がよいでしょうか、それとも
2) サービス アカウントにビジネス (ドメイン) レイヤーに直接?`
どちらか一方のアプローチを使用するためのあなたの意見または論理は何ですか?
c# - Mvc asp.net と n 層アーキテクチャ
asp.net mvc プロジェクトに取り組んでいます。また、n層ソリューション構造を使用したいです。そのため、ソリューションに次の構造を使用しています。それは私が疑問を持っている解決策の部分を特別に示しています。コードを繰り返さず、dal からプレゼンテーションにデータ (リストまたはオブジェクト) を渡すときに問題が発生しないようにするために、必要なエンティティごとにインターフェイスを作成する予定です。どう思いますか?それは良いアプローチですか?
[
asp.net-mvc - ASP.NET MVC 3 層アーキテクチャ アプリケーションで ID データと設定を配置する場所は?
私は ASP.NET MVC アプリを使用しており、それを 3 層アーキテクチャに移行しようとしています。ID データを配置する場所がわかりません。どのレイヤーですか? 2 つの DB コンテキスト (2 つのレイヤー内) を作成するか、プレゼンテーション層から DAL への参照を作成する必要がありますか? PL と DAL の間に参照があってはならないという人もいます。いくつかのヒントをお願いします。
回答ありがとうございます
c# - 2 つの SQL コマンドを別々のメソッドで実行し、2 番目のコマンドで例外が発生した場合にロールバックする方法
問題を説明するのに苦労しています。でも、ここでもっといい仕事ができるかもしれません。
私の 4 層アーキテクチャ アプリケーションでは、倉庫管理システム (単純なもの) を備えたオンライン ストアですが、多くのビジネス ルールがあります。
例 1:
Presentation Layer
を呼び出しBusiness Layer
て、Product
BL.SaveProduct
メソッドは を呼び出してからDL.SaveProduct
メソッドをDL.DecreaseBalance
呼び出します
で例外が発生した場合DL.DecreaseBalance
、製品はビジネス ルールに違反して保存されます。DL に両方のトランザクションを処理させることで SoC にも違反できない場合
この問題を解決するのに役立つ設計パターンまたはトリックはありますか?
私のBLメソッド
すべてが同じアプローチを使用して構築された DL メソッドの例
TransactionScope が機能していません
winforms - Entity Framework 6 を使用して n 層設計で新しいレコードを保存するためのサンプル フローは正しいですか?
Entity Framework を使用して WinForms アプリケーションで N 層設計を開発しようとしています。
次のサンプル フローは、Entity Framework を使用して n 層設計で新しいレコードを保存する場合に正しいですか?
プレゼンテーション層
A) UI は、ライト スクリーン入力データの検証を実行します。次に、UI はビュー モデルを DTO に変換し、それをアプリケーション層に渡します。
アプリケーション層
A)アプリケーション層はDTOをドメイン層のドメインモデルに送信します
ドメイン層
A) ドメイン モデル SoftwareRequest エンティティの新しいインスタンスを作成する前に、ビジネス ルールに準拠するために着信 DTO 値を検証します。
B) すべての値が検証されたら、ドメイン モデル SoftwareRequest エンティティの新しいインスタンスを作成します。
C) 終了してアプリケーション層に制御を戻す
アプリケーション層
A) Infrastructure Layer SoftwareRequest リポジトリを呼び出し、ドメイン モデルによって提供された新しいドメイン モデル SoftwareRequest エンティティを渡します。
インフラストラクチャ層のデータ アクセス
A) SoftwareRequest リポジトリは、アプリケーション層から新しいドメイン モデル SoftwareRequest エンティティを受け取ります。
B) 新しいドメイン モデル SoftwareRequest エンティティをエンティティ フレームワーク DBContext に追加する - context.SoftwareRequests.Add(NewDomainModelEntity)
C) 新しいエンティティを保存する - context.SaveChanges()
D) 終了して制御をアプリケーション層に戻す
アプリケーション層
A) 保存操作の結果を DTO に変換する
B) 終了して、新しい SoftwareRequest を追加した結果を含む DTO を使用して制御を UI に戻します。
UI
A) 受信した DTO を View Model に変換する
B) View Model データを画面に表示し、新しいソフトウェア要求を追加した結果を示します。
--------- 2016 年 2 月 22 日午前 6 時 49 分 (PST) に追加された以下の情報 ---------
依存関係の概要:
プレゼンテーション層 - アプリケーション層を参照してリクエストを行います - UI から送信されるかアプリケーション層から受信される DTO を記述するインターフェイスを操作する目的でのみドメイン層を参照します
アプリケーション層 - DTO を記述するドメイン層インターフェースを参照します。また、ドメイン モデル エンティティのインターフェイス定義を使用して、インフラストラクチャ レイヤーからのエンティティ応答を UI に返される DTO に変換できるようにします。インフラストラクチャ レイヤー データ アクセスへの参照もここにあるため、関連するドメイン モデル エンティティがドメイン レイヤーによってルールと値について検証された後、CRUD 操作を実行するためにリポジトリにアクセスできます。
ドメイン レイヤー - 上下のレイヤーへの参照はありません。どのレイヤーからも依存関係が注入されたサービスはありません。これには、インフラストラクチャ リポジトリでの CRUD を含むタスクは含まれません。ルールの検証などのすべての要求は、要求されたドメイン タスクを実行するために必要なすべての情報を含む DTO を受け取ります。
インフラストラクチャ レイヤー データ アクセス - リポジトリでエンティティ フレームワーク操作 (つまり、CRUD 操作) を実行するために使用されるドメイン モデル エンティティを記述するドメイン レイヤー インターフェイスを参照します。ここでインフラストラクチャ層のデータ アクセスに実装されているリポジトリのインターフェイスの定義については、ドメイン層も参照します。この層では DTO は使用されません。この層は通常、ドメイン モデル エンティティでアプリケーション層に応答します。アプリケーション層は、すべてのドメイン モデル エンティティの応答 (IEnumerable など) を DTO に変換し、UI に送り返します。
c# - アプリケーション サービスはドメイン層またはアプリケーション層に属しますか?
次のように、4層のN層Winformsアプリケーションがあります。
プレゼンテーション層
アプリケーション層
ドメイン層
インフラ層
私のアプリケーション層には、製品のすべてのリポジトリ関連アクションに使用される製品サービス クラスがあります。
Product Services クラスのインターフェース ファイルは、アプリケーション層またはドメイン層に属しますか? 私のリポジトリのインターフェイス ファイルは、インフラストラクチャ レイヤーに実装されているにもかかわらず、ドメイン レイヤーで定義されているためです。
前もって感謝します。
c# - 検証に必要なデータ定数がドメイン エンティティまたはデータベース ストアド プロシージャに存在する必要がある
Order エンティティのドメイン層で検証するビジネス ルールがあります。ルールは、顧客が特定の割引を受ける資格を得るには、少なくとも 30 日間ストアでアカウントを持っている必要があるというものです。値 30 は、ドメイン層の Order Entity で定数として定義することも、ストアド プロシージャの一部として定義することもできます。この場合、定数として定義され、アプリケーション サービスによって呼び出されたときに返され、ルール検証のために Domain Entity に渡されますか?
ストアド プロシージャ内にある場合は、データベース内の番号を変更し、ストアド プロシージャを再コンパイルできます。これは、他のユーザーにほとんど関与せずに非常に簡単に行うことができます。しかし、エンティティに入れると、再コンパイルだけでなく再配布が必要なアプリケーション コードの一部になります。
DDD 設計を実装しようとしている N 層設計アプリケーションのために、これらの種類の数値定数はどこに保存されていますか?