検索

三重建築と養豚

Apr 30, 2017 am 10:26 AM

初心者が簡単に始められるようにするために、ここでは、.NET 初心者の急速な上達に特化した、いくつかの共通の技術的なポイントについて説明する興味深い方法を引き続き使用します。知識は共通ですが、鍵となるのは学ぶという考え方です。テクノロジーは生活から生まれ、このようにしてテクノロジーを学ぶことができます。レンガとモルタルを投げるだけです。

階層構造は現実社会のいたるところで見られます。ある村長が妻に誇らしげに自慢したというジョークがあったのを覚えている。「中国で私よりも高い役職に就いているのは郷長、県長、省長、州首相の4人だけだ」評議会。」このジョークは現実社会の階層化現象も反映している。社会の人々も階層化され、会社の人事構造も階層化され、饅頭を作る籠も階層化される。レイヤリングの目的はさまざまですが、それらはすべて特定の問題を解決するために作成されます。したがって、階層構造は実際には、ある問題を解決するために作成されたソリューションです。

一般的に使用される 3 層アーキテクチャ設計

最も一般的に使用されるソフトウェア システムは、一般に 3 層アーキテクチャについて説明します。実際、ビジネス アプリケーション全体はプレゼンテーション層、ビジネス ロジック層、データ アクセス層などに分割されます。ビジネスの詳細、さまざまな機能コード 分散化は、システムの設計と開発にさらに役立ち、同時に、起こり得る変更に対してより小さな単位を提供するため、システムの保守と拡張に非常に役立ちます。

一般的な 3 層アーキテクチャは、図 1 に示すように、基本的に次の部分で構成されます。


図 1 一般的な 3 層アーキテクチャ

  • データ アクセス レイヤー DAL: データベースとの対話とアクセスを実装し、データベースからデータを取得したり、データベースにデータを保存したりするために使用されます。


  • ビジネス ロジック層 BLL: ビジネス ロジック層は上位層と下位層を接続し、ビジネス目標を達成するために上位層と下位層のインタラクティブ データを論理的に処理するために使用されます。


  • プレゼンテーション層 Web: 主にユーザーとのインタラクションを実装し、ユーザーのリクエストを受信したり、ユーザーがリクエストしたデータ結果の表示を返したりしますが、特定のデータ処理はビジネス ロジック層とデータ アクセス層に任されます。

日常の開発では、共通のものを再利用するために、各層で使用されるものの一部を抽象化することが多くなります。たとえば、モデルと呼ばれる複数のレイヤーを通過させるために、データ オブジェクトのエンティティとメソッドを分離します。データ検証やキャッシュ処理、暗号化・復号化処理など、共通の汎用補助クラスやツールメソッドの一部も、Commonと呼ばれる各層間での再利用を可能にするために別途分離され、独立したモジュールとして使用されます。

この時点で、3 層アーキテクチャは図 2 に示す状況に発展します。


図 2 3 層アーキテクチャの進化結果

  • ビジネス エンティティ モデル: エンティティ クラスのデータ構造をカプセル化するために使用され、通常、ビジネス内に存在するオブジェクトを客観的に記述するためにデータベースのデータ テーブルまたはビューをマッピングするために使用されます。モデルは、分離を改善し、階層化の役割をより適切に果たし、再利用と拡張を改善し、柔軟性を強化するために分離されています。


  • 共通クラスライブラリ Common: 汎用補助ツールクラス。

データベースの一般的な操作をデータ操作クラス (DbHelperSQL など) に抽象的にカプセル化し、再利用を改善し、コードを簡素化できます。データ層の最下層は、一般的なデータベース操作クラスを使用してデータベースにアクセスします。最終的な完全な 3 層アーキテクチャを図 3 に示します。


図 3 最終的な完全な 3 層アーキテクチャ

データベース アクセス クラス は ADO.NET のカプセル化であり、一般的に使用されるいくつかの反復的なデータベース操作をカプセル化します。たとえば、Microsoft のエンタープライズ ライブラリ SQLHelper.cs、Dongsoft の DBUtility/DbHelperSQL などは、データベースにアクセスするための補助ツール クラスを DAL に提供します。

上記の分析を通じて、現在一般的に使用されている 3 層アーキテクチャがどのようなものであるかがわかります。同時に、3 層アーキテクチャが使用されている間の進化プロセスの一部もわかります。では、なぜこのように階層化されているのか、また各層の構造の役割は何でしょうか?読み続けてみましょう。

興味深い理解: 3 層建築と養豚

豚肉の価格は常に上昇しており、プログラマーは、コードを書くことに未来はない、豚を飼うほうがよい、と言う人もいると言われています。豚の飼育には技術的な内容はなく、コードを書くよりも簡単だとは考えていません。実際、豚の飼育はコードを書くほど技術的なものではありません。 3 層アーキテクチャをよりよく理解するために、養豚を例に挙げてみましょう。ことわざにあるように、「豚肉を食べたことがない人は、豚が走っているのを見たことがありません。」

図 4 は、3 層アーキテクチャを備えた養豚産業の組立ラインの興味深い図です。


図4 三層構造と養豚

図 3 と図 4 を比較すると、次のことがわかります:

  • データベースは豚舎のようなものです。すべての豚は、エリアまたは番号ごとに異なる豚舎に順番に保管されます。


  • DALは屠殺場のようなものです。豚舎から豚を取り出して、必要に応じて部位(圃場)を取り出したり、分類して整理(統計)して一箱の豚肉を作ります。データセット)を食品加工工場(BLL)に送信します。当初はここで豚を捕まえるのも殺すのも同じ人が担当していましたが、効率が悪すぎると感じたので、豚を捕まえる担当者(DBUtility)を何人かに出して、指定された豚を捕まえるようにしました。要件に。


  • BLLは、豚肉をさまざまな食用食品に深く加工する食品加工工場のようなものです。


  • Web はショッピング モール のようなもので、食品を販売できる美しい製品にパッケージ化し、顧客に表示します (UI プレゼンテーション層)。


  • 豚肉はモデルのようなものです。どの工場(レベル)であっても、すべてのリンクで提供されるエッセンスは豚肉であり、豚肉は全工程を貫いています。


  • 共通クラスライブラリ Commonは、作業者が使用する様々な工具に相当し、肉切り包丁、ロープ、ハサミ、梱包箱、ツールカートなどの共通の工具(クラス)を工場(レベル)ごとに提供します。実際には、各部門が独自のツールを作成することもできましたが、それは効率が低く、専門的ではなく、多くの作業が繰り返されることになるでしょう。そこで、誰かがこのような工場を開設して、これらのツールを製造し、それをさまざまな工場に提供することで、工場は自分たちの業務に集中できるようになりました。

もちろん、これは単なる比喩であり、実際の状況は詳細には異なります。この例では、豚小屋からショッピング モールへの一方向のプロセスのみを示しています。実際の 3 層開発では、データのやり取りは双方向であり、取得または保存できます。しかし、豚を一方の端から追い込む機械があり、反対側の端からハムが出てくるという。ハムソーセージが売れない場合は反対側から入れ直すとそのまま豚が出てくる まさか三層に繋がっているとは思いませんでした。構造。上記は単なる冗談ですが、これにより 3 層アーキテクチャの基本概念が理解しやすくなります。

ここまで述べましたが、データベースからコンテンツを直接取得して直接操作できないのではないかと疑問に思う人もいるかもしれません。なぜわざわざ 3 層アーキテクチャを使用するのでしょうか? 3 層アーキテクチャの利点は何ですか?

階層化をしなくても、もちろん可能で、全工程が屠殺場や加工場などに分かれていないのと同じように、すべての作業(屠殺・加工・販売)が同じ場所(工場)で完結します。しかし、なぜ加工工場やショッピングモールなのでしょうか?なぜなら、比較的規模が大きくなると管理が非常に煩雑になり、このような飼育方法では規模のニーズに応えられなくなるからです。さらに、社会発展の観点から見ると、社会的分業は人類の進歩の現れです。社会的分業の利点は、適任者が得意なことを行うことができ、平均的な社会的労働時間が大幅に短縮され、生産効率が大幅に向上することです。高品質で効率的な労働生産物を提供できる者だけが、市場競争において高い利益と高い価値を獲得できるのです。人の才能を生かし、素材を最大限に活用することの最も深い意味は、社会の分業にあります。ソフトウェア開発でも同様で、小規模なプロジェクトに取り組む場合、階層化するかどうかに違いはなく、より面倒で冗長に思えます。しかし、プロジェクトが大きくなり、より複雑になると、階層化の利点が現れます。したがって、階層に分けるか否かはプロジェクトの実情に依存するため一概には言えません。

関連資料: 階層化開発アイデアと小籠包

以上が三重建築と養豚の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
C#と.NET:2つの関係を理解し​​ますC#と.NET:2つの関係を理解し​​ますApr 17, 2025 am 12:07 AM

C#と.NETの関係は切り離せませんが、同じものではありません。 C#はプログラミング言語であり、.NETは開発プ​​ラットフォームです。 C#は、コードの書き込み、.NETの中間言語(IL)にコンパイルされ、.NET Runtime(CLR)によって実行されるために使用されます。

c#.netの継続的な関連性:現在の使用法を見るc#.netの継続的な関連性:現在の使用法を見るApr 16, 2025 am 12:07 AM

C#.NETは、複数のアプリケーション開発をサポートする強力なツールとライブラリを提供するため、依然として重要です。 1)C#は.NETフレームワークを組み合わせて、開発を効率的かつ便利にします。 2)C#のタイプの安全性とゴミ収集メカニズムは、その利点を高めます。 3).NETは、クロスプラットフォームの実行環境とリッチAPIを提供し、開発の柔軟性を向上させます。

Webからデスクトップまで:C#.NETの汎用性Webからデスクトップまで:C#.NETの汎用性Apr 15, 2025 am 12:07 AM

c#.netisversatileforbothwebanddesktopdevelopment.1)forweb、useasp.netfordynamicapplications.2)fordesktop、equindowsorwpfforrichinterfaces.3)usexamarinforcross-platformdeveliment、enabling deshacrosswindows、

c#.net and the Future:新しいテクノロジーへの適応c#.net and the Future:新しいテクノロジーへの適応Apr 14, 2025 am 12:06 AM

C#と.NETは、継続的な更新と最適化を通じて、新しいテクノロジーのニーズに適応します。 1)C#9.0および.NET5は、レコードタイプとパフォーマンスの最適化を導入します。 2).Netcoreは、クラウドネイティブおよびコンテナ化されたサポートを強化します。 3)ASP.Netcoreは、最新のWebテクノロジーと統合されています。 4)ML.NETは、機械学習と人工知能をサポートしています。 5)非同期プログラミングとベストプラクティスはパフォーマンスを改善します。

c#.netはあなたにぴったりですか?その適用性の評価c#.netはあなたにぴったりですか?その適用性の評価Apr 13, 2025 am 12:03 AM

c#.netissuitableforenterprise-levelApplicationsとsystemduetoitsSystemdutyping、richlibraries、androbustperformance.

.NET内のC#コード:プログラミングプロセスの調査.NET内のC#コード:プログラミングプロセスの調査Apr 12, 2025 am 12:02 AM

.NETでのC#のプログラミングプロセスには、次の手順が含まれます。1)C#コードの作成、2)中間言語(IL)にコンパイルし、3).NETランタイム(CLR)によって実行される。 .NETのC#の利点は、デスクトップアプリケーションからWebサービスまでのさまざまな開発シナリオに適した、最新の構文、強力なタイプシステム、および.NETフレームワークとの緊密な統合です。

C#.NET:コアの概念とプログラミングの基礎を探るC#.NET:コアの概念とプログラミングの基礎を探るApr 10, 2025 am 09:32 AM

C#は、Microsoftによって開発された最新のオブジェクト指向プログラミング言語であり、.NETフレームワークの一部として開発されています。 1.C#は、カプセル化、継承、多型を含むオブジェクト指向プログラミング(OOP)をサポートしています。 2。C#の非同期プログラミングは非同期を通じて実装され、適用応答性を向上させるためにキーワードを待ちます。 3. LINQを使用してデータ収集を簡潔に処理します。 4.一般的なエラーには、null参照の例外と、範囲外の例外インデックスが含まれます。デバッグスキルには、デバッガーと例外処理の使用が含まれます。 5.パフォーマンスの最適化には、StringBuilderの使用と、不必要な梱包とボクシングの回避が含まれます。

テストC#.NETアプリケーション:ユニット、統合、およびエンドツーエンドテストテストC#.NETアプリケーション:ユニット、統合、およびエンドツーエンドテストApr 09, 2025 am 12:04 AM

C#.NETアプリケーションのテスト戦略には、ユニットテスト、統合テスト、エンドツーエンドテストが含まれます。 1.単位テストにより、コードの最小ユニットがMSTEST、ヌニット、またはXUNITフレームワークを使用して独立して動作することを保証します。 2。統合テストでは、一般的に使用されるシミュレートされたデータと外部サービスを組み合わせた複数のユニットの機能を検証します。 3.エンドツーエンドのテストでは、ユーザーの完全な操作プロセスをシミュレートし、通常、セレンは自動テストに使用されます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境