フレームワークがアプリケーションの全体的なアーキテクチャに影響を与えることを 4 人組の「デザイン パターン」の本で読みました。たとえば、.NET を使用しSystem.Windows.Form
てフォームを作成するために継承する必要があることを知っています (ただし、ここでは大きな誤解があると思います)。しかし、フレームワークがアプリケーション アーキテクチャにどのように影響するかを、フレームワークを使用してコードで記述できる人はいますか?
3 に答える
ウィキペディアには、このトピックに関する興味深いメモがいくつかあります。
ソフトウェア フレームワークは、フリーズ スポットとホット スポットで構成されます。凍結スポットは、ソフトウェア システムの全体的なアーキテクチャを定義します (...)。これらは、アプリケーション フレームワークのどのインスタンス化でも変更されません (凍結されます)。ホット スポットは、フレームワークを使用するプログラマーが独自のコードを追加する部分を表します (...)。
それによると、使用しているフレームワークによってアプリケーションを定義できます。たとえば、Java の世界で Struts フレームワークを使用することは、MVC アーキテクチャを使用していることを意味します。または、Spring Framework を使用すると、依存性注入パターンを適用する必要があります。ソフトウェア アーキテクチャがソフトウェア パターンによって定義されている場合、一部のフレームワークは、利用するための事前に構築されたパターンです。
一方、ソフトウェア アプリケーションはパターン/フレームワークだけで作成されるわけではありません。また、ホット スポットが有用であることがありました。それらは、ソフトウェア フレームワークがフレームワーク機能を拡張/使用し、要件とドメインに従ってアプリケーションを構築するために提供する方法です。 .
たとえば、Spring MVC Frameworkを使用して Web アプリケーションを構築しているとします。プロジェクトでフレームワークを構成すると、アプリケーションのすべてのリクエストが というクラスに委譲されDispatcherServlet
ます。このクラスはフレームワークに組み込まれており、変更しないでください。したがって、これはFrozen Spotの完璧な例です。はDispatcherServlet
プロジェクト構成を検索し、リクエスト処理を に委譲しますController
。通常、これController
はプログラマーによって作成されたクラスであり、要求を処理する責任があります。したがって、手作りのコントローラーは、フレームワークを拡張するためのホット スポットです。
DispatcherServlet はFront-Controllerller パターンの実装であり、コントローラーの使用法は MVC アプリケーションの典型です。したがって、アプリケーションは、使用しているフレームワークによって高度に定義されます。
クリーンなアーキテクチャ (デザイン パターンも) は、使用されているフレームワーク、ツールキット、またはライブラリに依存しないと言わざるを得ません。アーキテクチャは、実装方法の詳細ではなく、ソフトウェア システムの高レベルの構造 (レイヤーと層) を記述します。これは、セキュリティ、使いやすさ、拡張性、信頼性、保守性、可用性などの特定の目標を達成するのに役立つ一連の原則です...簡単な例を見てみましょう:
モデル ビュー コントローラー (MVC) は、ドメインのモデリング、プレゼンテーション、およびユーザー入力に基づくアクションを 3 つの別個のクラスに分離するソフトウェア アーキテクチャ (またはデザイン パターン) です。MVC の背後にある中心的な考え方は、コードの再利用性と関心の分離です。ASP.Net MVC、Java Strut、PHP DRY、CAKEPHP などの多くのプログラミング言語またはフレームワークを使用して MVC を適用できます。
さまざまなフレームワークでデータを渡したり、保存したり、評価したりする方法には、さまざまなアプローチがあります。Windows フォーム アプリケーションを使用している場合は、プロジェクトのどこからでもビュー要素にアクセスできます。これは、ビュー要素がすべてコンピューターのローカル メモリ内にあり、それ以外の場所にないためです。
ただし、ASP.NET アプリケーションを使用している場合は、プロジェクト、クライアント、およびサーバーを使用するさまざまな側面があり、事態はより複雑になります。あなたが作成しているデザインは、Forms とほとんど共通点がありません。
ASP.NET MVC アプリケーションを使用している場合、ModelViewController の 3 つの層があり、操作はこれらに分割されます。今後は、これらの層に適合する方法で設計を行う必要があります。MVC によって提供されるデータベース テーブルとオブジェクトの関係があり、設計が完全に変更される可能性があります。
また、プログラムの下にあるプログラミング言語は、機能的、オブジェクト指向などになる可能性があるため、設計を変更します.
要するに、これは建設的な質問ではありません。この質問の答えは、さまざまなプログラミング言語とテクノロジを使用した後にわかります。