4

私は、次の設計で 3 層アーキテクチャを実装するプロジェクトに取り組んできました。

  1. プレゼンテーション レイヤー - MVC フレームワークで PHP を使用して、フロントエンドのプレゼンテーションとビジネス ロジックを処理します。この層は、データにアクセスするサービス層を呼び出します。
  2. データ アクセス層 - C# .NET を使用し、サービス、ビジネス ロジック、およびデータ層に分かれています。プレゼンテーション層によって呼び出されます。データベースを呼び出し、応答をシリアル化してプレゼンテーション層に返します。
  3. データ層 -データベース。上記の 2 つのレイヤーのすべてのデータを提供します。

プレゼンテーション層が侵害された場合でもデータにアクセスできないため、3 層のアプローチがセキュリティに役立つことを理解しています。これは事実ですが、特に最初の 2 つのレイヤーで同じオブジェクトに対して 2 つのモデルを作成する必要があるため、このアプローチは少し複雑すぎるようです。

私の質問: これは 3 層アーキテクチャの不適切な実装ですか? もしそうなら、どのように改善できますか?データベースにアクセスできる MVC 実装を単純に持つことの欠点は何ですか? Web アプリケーションにどのようなアプローチを使用していますか?

助けてくれてありがとう!

4

4 に答える 4

3

あなたの3層はView、Controller Modelと同じように見えます。あなたのphpが主に#2レイヤーを呼び出している場合、複雑なナビゲーションやユーザーを持っている場合など、MVCに編成する必要がある非常に複雑なプレゼンテーションレイヤーがない限り、それ自体はMVCである必要はないと思います認証ロジック。

于 2010-12-16T14:45:37.157 に答える
0

プログラミングに必要なものは何もありません。しかし、より良い結果を得るために従うことができるものとして何年にもわたって証明された多くのプラクティスがあります. N 層の分離は、そのプラクティスの 1 つにすぎません。

http://en.wikipedia.org/wiki/Multitier_architecture

あなたの説明は wiki の説明に従っているので、3 層アプリを実装するのに適した方法です。

ただし、何もする必要はありません。自分にとって快適な方法に従ってください。そして将来的には、あなたに特に役立つ独自の一連のプラクティスを手に入れることができます。

于 2010-12-16T14:43:03.053 に答える
0

このアプローチの価値は、セキュリティだけでなく、保守性も促進します。

「特に、最初の 2 つのレイヤーで同じオブジェクトに対して 2 つのモデルを作成する必要があるため」という懸念を理解しているかどうかはわかりません。これは、UI とバックエンドに 2 つの異なるプログラミング言語を使用しているためと思われます。C# の「データ アクセス レイヤー」には、フロント エンドで複製する必要がある完全なオブジェクト モデルが含まれていると思います。

問題は、n 層アーキテクチャを使用しているのではなく、2 つの言語を使用しているため、互いにミラーリングする 2 つの中間層があることです。

于 2010-12-16T14:51:08.490 に答える
0

あなたの複雑さは、直接互換性のない PHP と .NET を使用しているという事実に起因すると思います。それらの 1 つ (PHP のみを使用するか、.NET のみを使用する) を排除すると、物事が簡素化されます。それ以外の場合は、良いアプローチを使用していると思います。

于 2010-12-16T14:49:37.620 に答える