問題タブ [three-tier]

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.

0 投票する
1 に答える
63 参照

asp.net - ビジネス レイヤー プロジェクトまたはデータ アクセス レイヤー プロジェクトでトレースを有効にする方法を教えてください。

ソリューションには 3 つのプロジェクトがあり、そのうち 1 つはデータ アクセス レイヤー プロジェクト、もう 1 つはレポート プロジェクトとメイン プロジェクトです。DAL およびレポート プロジェクトでトレースを有効にして表示するにはどうすればよいですか? メイン プロジェクトで行われたトレースを確認できます。そして、私はdalとレポートプロジェクトにtrace.writeを書くことができますが、それらを見ることができません。何か案は?

0 投票する
2 に答える
2780 参照

asp.net-mvc - asp.net mvc の 3 層アーキテクチャ

asp.net mvc で 3 層アーキテクチャを実装することの意味を知りたいですか?

このような方法で言及されている、これに関する多くの投稿を見てきました。しかし、私はそれでとても混乱しています。MVC モデルをビジネス層と呼ばれる別のソリューションに分離することは、mvc で 3 層アーキテクチャを実装することとして知られていますか? そうでない場合、mvc で 3 層アーキテクチャを実装する適切な方法は何ですか?

タイプ 1
プレゼンテーション層: MVC パターンの「コントローラーとビュー」。
ビジネス層 : MVC パターンの「モデル (データ)」。
データ アクセス層 : 元のデータ アクセス層。

タイプ 2
プレゼンテーション層: モデルを除く MVC 内のすべて
ビジネス層: モデルを分離
データ アクセス層: データベース自体

0 投票する
0 に答える
235 参照

security - 機密データでの 3 層アーキテクチャの使用

セキュリティで保護する必要がある Web アプリケーションでは、3 層アーキテクチャを使用することがベスト プラクティスであるという考えを聞いたことがあります。

このアーキテクチャに関する私の理解は次のとおりです。

  • Web 層サーバー - フィールド要求を行い、データベース通信のために中間層と通信します。データベースは、Web サーバー環境から完全に隔てられています。
  • 中間層サーバー - すべての情報の取得と保存を処理する API を公開します。Web サーバーは、このサーバーと通信してデータ操作を処理します。
  • データ層サーバー - すべてのユーザー データを格納します。中間層からの通信を許可しますが、Web 層からの通信は許可しません

もう 1 つのオプションは、Web サーバーからデータベースへの直接通信です。この通信は、アプリケーションが必要とするアクセス権のみを持つ特定のユーザーとして行われます (必要なテーブルの 、 ) SELECT。たとえば、このユーザーはユーザー テーブルからレコードを削除したり、テーブルを削除したりすることはできません。INSERTUPDATE

より安全な 3 層アプローチの背後にあるロジックは、Web サーバーが侵害された場合、攻撃者は API を使用できるのと同じ方法でしかデータを取得できないということです。

私の質問: このタイプのアプローチは、潜在的に機密性の高いデータが保存されている Web アプリケーションに必要ですか? 非常に機密性の高いデータはすべて保存時に暗号化されますが、その他の個人を特定できる情報は平文で保存され、検索が可能になります。

必要な場合、そのようなアプローチを確保する最善の方法は何ですか? 特定のユーザーのデータを取得するために、API で有効なセッション トークンを要求する必要がありますか? 私が懸念するのは、別のセキュリティ層がなければ、攻撃者が単に API を使用して必要なデータを取得できることです。これを防ぐために API をどのように保護しますか?

0 投票する
2 に答える
292 参照

c# - 3 層アプリケーション

1 層アプリケーション、つまり Mvc では、models というフォルダーを取得し、そこにクラスを作成して保存します。私が読んだことから、3 層アプリケーションになると、モデルをフォルダー内に保存するのが正しいように思われます。ビジネス レイヤー (第 2 層)、および UI (第 1 層) から、モデルを使用してメソッドを呼び出すことができるようにするプロジェクト参照を第 2 層に追加します。

第 2 層の観点からは、データ層 (第 3 層) を呼び出してデータベースに対して crud 操作を実行しますが、データ層にはビジネス層からのモデルが必要になるため、データ層からビジネス層へのプロジェクト参照を追加しようとするとエラーが発生します

「Business Layer」への参照を追加できませんでした。このプロジェクトを参照として追加すると、循環依存が発生します

参照として理解しているのは、ビジネスレイヤーからデータレイヤーへの参照がすでに行われていることです

どうすればこれを回避できますか?データ レイヤーで追加のモデルを作成し、データベースからの結果を入力して、それをビジネス レイヤーに渡し、ビジネス レイヤーから UI に戻しますか? 私はこれについて少し混乱しています。

** アップデート **

データ層について読んだことから、ビジネス層内の参照モデルまで、モデル マッピングを行う必要があります。モデル マッピングは非常に大きくなるため、共有ライブラリとなる第 4 層を含めることを考えています。データレイヤーとビジネスレイヤーが必要に応じてモデルにアクセスできるように、すべてのモデルで構成されています。

0 投票する
1 に答える
463 参照

c# - ドロップダウンリスト DataSource から値オブジェクトへ

私のアプリケーションは 3 層アーキテクチャで構築されています。ただし、値オブジェクト クラスのデータ ソースへのドロップダウン リストが必要です。現在、データ アクセス レイヤー -> ビジネス ロジック レイヤー -> プレゼンテーション レイヤーからドロップダウンリストをデータソーシングしています。しかし、値オブジェクトからリストをデータソースしたいと考えています。したがって、私が欲しいのは、データ アクセス レイヤー -> 値オブジェクト -> ビジネス ロジック レイヤー -> プレゼンテーション レイヤー (ドロップダウン) です。値オブジェクトにデータ ソース化しようとしましたが、「無効なデータ ソースです。タイプ IListSource、IEnumerable、または IDataSource である必要があります」というエラーが表示されます。ありがとうございます!

これが私のコードです:

宗教VO

宗教DAO

宗教BLO

ASPX

エラーメッセージのスクリーンショットは次のとおりです。 ReligionVO は無効なデータ ソースです

0 投票する
0 に答える
311 参照

asp.net - Entity Framework 6.0 - タイムスタンプ列によるオプティミスティック コンカレンシーの実装

背景: データ アクセスとして EF 6.0 を使用して ASP.Net Web フォーム アプリケーションを開発しています。私は3層..ウェブサイト - >ビジネス - >データアクセス(EFとEDMXはここにあります)..コードでデータベースの同時実行を処理したかったのです。

サンプル テーブルは次のようになります。 Table :EmployeeMaster Columns : EmpID, EMpName, Address, UpdatedBy, UpdatedOn (DataTime)

いくつかのブログで説明されているように、データベースにデータ型「タイムスタンプ」の列「ConcurrencyCheck」を持ち、モデルで同時実行モードを「固定」に設定することで、楽観的同時実行を実装しようとしました。うまくいきました。ただし、ほとんどすべてのテーブル (約 50 のテーブルがあります) に 1 つの列を追加するのは少し奇妙だと思います。

質問: 既存の列を同時実行チェックに使用して楽観的同時実行を実現する方法はありますか?

既存の列「UpdatedOn」(日時列、null不可)を同時実行モードで「固定」に設定しようとしました。同時実行チェックが行われていました。ただし、更新を行うと、同時実行チェックを実行するために以前のタイムスタンプが含まれているため、そのフィールドに最新の時刻を更新することはできません。

注: EF は、同時実行モード "固定" としてマークした列をその where 句に追加し、目的の結果を達成することを認識しています。メソッドを呼び出すたびに DB コンテキストを作成しています。