質問

次のデザインで3層アーキテクチャを実装するプロジェクトに取り組みました。

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

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

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

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

役に立ちましたか?

解決

あなたの3層がビュー、コントローラーモデルと同じであるように私には見えます。 PHPが主に#2レイヤーに電話をかけている場合、たとえば複雑なナビゲーションやユーザーがある場合、それ自体をMVCに編成する必要がある非常に複雑なプレゼンテーションレイヤーがない限り、それ自体はMVCである必要はないと思います。認証ロジック。

他のヒント

何もない 必要 プログラミングで。しかし、多くの慣行があります。これは、何年もの間、何年もかわい人のフォロウから得られたものとして賛成されていました。 N層分離は、そのプラクティスの1つにすぎません。

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

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

しかし、覚えておいてください、あなたは何もするべきではありません - あなたにとって快適な方法に従ってください。そして将来、あなたはあなたのためにあなたのために働くあなた自身の一連のプラクティスを持っています。

あなたの合併症は、あなたがPHPと.NETを使用しているという事実に起因すると思いますが、これは直接互換性がありません。それらのいずれかを排除した場合(PHPのみ、または使用されている.NETのみ)、物事を簡素化します。そうでなければ、あなたは良いアプローチを使用していると思います。

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

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

問題は、2つの言語を使用しているため、n層アーキテクチャを使用しているわけではないため、お互いを反映する2つの中間層があることです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top