多くの人は、プログラミング パラダイム、プログラミング アーキテクチャ、プログラミング ソース コード フレームワーク、ミドルウェア、研究開発ツール パイプラインの違いを見分けることができません。

多くの人は、プログラミング パラダイム、プログラミング アーキテクチャ、プログラミング ソース コード フレームワーク、ミドルウェア、R&D ツール パイプラインの違いが分からないので、もう一度説明しましょう。

(1) プログラミングパラダイム

1.機能

プログラミングは大きなフローカードから始まります。

関数を作成します。

  • 1 つは、大きなフロー カードを再入力せずに再利用するためです (当時、パンチカードは非常に面倒でした)。

  • 2 つ目は、プログラムを明確で読みやすいものにし、プログラマが保守しやすいようにすることです。

2、オブジェクト

自分自身に表示され、サブクラスに表示され、全員に表示されます。プログラムを明確で読みやすくし、悪いプログラマによるコードの悪用を防ぐためです。

3. コンポーネント

メソッド、属性、イベントはコンポーネントであり、より豊かなプログラミング表現を実現します。

(2) プログラミングパラダイム

前の学校のプログラミングパラダイムは常に大きくなり、これから話す学校のプログラミングパラダイムは常に小さくなり、原点に戻った方が良いです。

1. インターフェース

関数の定義と実装は非常に早い段階で分離されました。

しかし、異種プログラミング言語で開発されたコード間で呼び出しを行いたい場合はどうすればよいでしょうか?

インターフェイス定義標準とデータ型標準が必要であり、お互いを呼び出す前に全員がそれらに従う必要があります。これが IDL のやっていることです。

2. Webサービス技術基準

従来、本機の各ソフトウェアは相互に呼び出しを行っており、共有メモリ技術/DDE動的データ交換技術、DLL共有オブジェクトコード/DLLインターフェース仕様準拠、IPCイン​​ターフェース呼び出し技術が一般的に採用されていました。その後、2 台のマシンのさまざまなソフトウェアが相互に呼び出しを行うようになり、RPC 呼び出しテクノロジが誕生しました。

その後、インターネット テクノロジーと RPC のアイデアを活用して、W3C 組織は Web サービス技術標準 (HTML/XML/JSON、HTTP、WSDL、UDDI、SOAP) を作成しました。

3. サービス

1. SOA-SCA サービス: これは、WS 標準を利用して IBM によって定義されており、サービスとコンポーネントの過渡的な製品です。SCA-SDO など。

2. マイクロサービス: これは一般的なクラスであり、コンポーネントの概念はもはや必要ありません。WS さえも必要なくなり、JSON、HTTP、Restful だけが必要になります。

3. サービス数が少ないサーバーレス: 粒度は関数レベルまでさらに小さく、関数レベルであるため、ソース コード フレームワークさえも使用されません。

(3) アーキテクチャの考え方と手法

アーキテクチャ上のアイデアや手法は数多くありますが、一般的なものは次のとおりです。

  • 顧客消費・サービス生産モード:C/Sなどの考え方

  • RPC/CORBA などのリクエスト エージェント モードがアイデアです

  • メッセージ送信、メッセージ購読ミドルウェアなどのメッセージ バス モードのアイデア

その上:

  • マスター/スレーブ クラスター アーキテクチャ: パフォーマンスの分散を促進し、単一障害点を防止します。

  • P2P 均等クラスタ アーキテクチャ: パフォーマンス分散に便利で、単一点障害も防止できます。

  • 読み取り/書き込み分離アーキテクチャ: 便利なパフォーマンスのオフロード

  • データとアプリケーション アーキテクチャの分離: 便利なパフォーマンス分散

  • ストレージとコンピューティングの分離アーキテクチャ: 便利なパフォーマンス分散

その上:

  • MVC アーキテクチャ パターン: モデル-ビュー-コントローラー。これにより、コードは分離され、関連付けられます。

  • MVVM アーキテクチャ パターン: コードの分離と関連付けの両方が行われるように、モデル ビューが分離と関連するデータの同期を実行すると便利です。

  • ORM アーキテクチャ モード: コードが分離され関連付けられるため、モデルとリレーショナル データベースのマッピングに便利です。

その上:

  • AOP アーキテクチャ モード: 既存のコードが非侵襲的であることは便利ですが、新しい機能を追加できるため、コードは分離され、関連付けられます。

  • IOC アーキテクチャ モード: 便利なコード分離だが関連付けられている

(4) プログラミングソースコードクラスライブラリフレームワーク

たとえば、SSH は、MVC アーキテクチャ スタイルのオープン ソース ソース コード プログラミング フレームワークであり、MVC アーキテクチャ メソッドでコードを記述するのに便利です。

その後、Spring オープンソースのソース コード プログラミング フレームワークが世界を席巻し、Spring MVC が登場しました。

マイクロサービスの時代、人々は Spring プログラミング フレームワークを使いたいが、Spring MVC アーキテクチャ手法やプログラミング フレームワークは使いたくないということで、Spring Boot が登場します。

サービスが少ないサーバーレス時代に、サービスを早く作成・早く提供・早く破棄するために、面倒なミドルウェアや各種プログラミング言語の仮想マシンに依存するなど、あまり依存関係を巻きたくないためにSpring Nativeが行われています。 GraalVMコンパイル技術を搭載した新機能が登場。

(5) ミドルウェア

最も初期のミドルウェアは 3 つの古典的なもので、いずれも分散システムの問題を解決するためのものです。

  • 分散リモート呼び出しミドルウェア: Microsoft WCF、IBM WebSphere ESB など。以前は、呼び出し可能な単純な RPC 呼び出しテクノロジに過ぎず、登録検出センター、構成センター、ルーティングなどのガバナンスに加え、ロード バランシング、ヒューズなどの品質保証が追加されました。

  • 分散メッセージ送信ミドルウェア: Microsoft MQ、IBM MQ など

  • 分散トランザクション管理ミドルウェア: BEA Tuxedo、Microsoft MTS など

その後、Web 時代が到来すると、当時はコンポーネントという新しいプログラミング パラダイムも人気があったため、次の 3 つの新しいミドルウェアが登場しました。

  • Webコンテナミドルウェア: IBM WebSphere HTTP Serverなど

  • ページコンテナミドルウェア: IBM WebSphere JSP Server など

  • コンポーネントコンテナミドルウェア: IBM WebSphere EJB Serverなど

ここでミドルウェアについて言及したのは、ミドルウェアが次の 2 つに関連しているためです。

  • 1 つはプログラミング パラダイムに関連するものです。EJB などのコンポーネント パラダイムです。

  • 2 つ目は、リクエスト エージェント、メッセージ バスなどのアーキテクチャ スタイルに関連しています。

しかし、商用ミドルウェア市場は最終的に消滅しました。扇動者はインターネット企業です。その理由は次のとおりです。

  • インターネット企業は多数のユーザーと同時実行性の高い大量のデータを抱えているため、インターネットは高機能なミドルウェアを独自に開発する必要があります。

  • しかし、インターネット企業のビジネスモデルは犬から毛が取れるというものであるため、実際の運用で検証された高強度のミドルウェアをオープンソースにして無償公開する。

その結果、商用ミドルウェア市場は消滅しました。

クラウドネイティブテクノロジーの時代の今、

  • 分散リモート呼び出しミドルウェア: gRPC など

  • 分散メッセージ送信ミドルウェア: ActiveMQ、RabbitMQ、RocketMQ、Kafka は以前はオープンソースで人気がありましたが、現在は Pulsar が人気です

  • 分散トランザクション管理ミドルウェア: Seata など

  • Webコンテナミドルウェア:ApacheからNginx、現在はEnvoyまで

  • ページコンテナミドルウェア: 現在、プログラミングのアイデアが人気です. 純粋なフロントエンドの HTML+CSS+JS テクノロジーは MVVM アーキテクチャで構築され、サーバー層は AJAX テクノロジーを通じて呼び出されます. JSP/ASP テクノロジーの使用

  • コンポーネント コンテナ ミドルウェア: コンポーネントは必要なくなりました。コンポーネントはすべて共通のクラスであるため、コンポーネント コンテナ サーバーは必要ありません。

(6) ソフトウェアエンジニアリング - 研究開発ツールパイプライン

コード ストレージ - コード バージョン管理 - 自動コンパイル ツール - 自動テスト ツール - パッケージ化ツール - リリース ツール - 自動デプロイメント ツール - DevOps ツール (ログ、アラーム、サービス チェーン追跡ツールなど)。

以前は、パッケージ化は Microsoft の EXE インストール パッケージや Java の WAR インストール パッケージなどのインストール パッケージにパッケージ化されるのが一般的でしたが、現在ではコンテナにパッケージ化することが一般的です。Docker コンテナー テクノロジーは過去に人気がありましたが、今後は wasm コンテナー テクノロジーが人気になるでしょう。

この研究開発ツールの組立ライン、マイクロサービスミドルウェア、マイクロサービスプログラミングフレームワークを総称してクラウドネイティブと呼ぶ人もいますが、なぜクラウドネイティブと呼ばれているのかは分かりませんが、今ではこの名前が非常に普及しています。

05bfc7a9ba856ff65501b01ff0c9a311.jpeg

おすすめ

転載: blog.csdn.net/david_lv/article/details/132331678