長寿命(20年以上)向けのWebアプリケーションの開発


160

現在、政府の土地計画用のWebアプリケーションを開発しています。アプリケーションは主にブラウザで実行され、ajaxを使用してデータをロードおよび保存します。

最初の開発をしてから卒業します(学生の仕事です)。この後、チームの残りのメンバーは、必要に応じて随時機能を追加します。彼らはコーディングの方法を知っていますが、大部分は土地計画の専門家です。

Javascriptテクノロジーが変化するペースを考えると、20年経った今でも動作するコードをどのように書くことができますか?具体的には、コードを将来に備えて使用する(または避ける)必要があるライブラリ、テクノロジ、および設計のアイデアはどれですか


94
私は1966年後半にFortranでプログラミングを始めたので、まさにその種の問題について考える十分な時間がありました。50%の信頼できる答えに出くわした場合は、お知らせください。一方、単に「雇用保障」:)とほぼ-特定の必然的な陳腐化を考える
ジョンForkosh

11
ソフトウェアエンジニアにとって永遠に続くものはありません。そのような重要なシステムを更新する勇気のある人はいないので、銀行でホストするだけです。まあ、Voyagerで実行されているプログラムも重要だと思います。
ライヴ

9
@Laivしばらく前、私はVax / VMSで実行されているSwiftメッセージングを使用して、Bankers Trustの送金アプリケーションに取り組みました。数年後、SwiftはすべてのVMSサポートを廃止(サポート終了)しました。男の子、それはいくつかの問題を引き起こしました...そしてBTCoでさらに別の契約を私に提供しました。上で言ったように、「ジョブのセキュリティ」:)。とにかく、私の重要な点は、重要な金融市場のアプリケーションでさえ陳腐化の影響を受けないということです。
ジョンフォーコッシュ

102
「次の開発者が理解できるコードを書く」のはどうですか?更新するプログラマを見つける必要があるほどコードが陳腐化した場合、最良のシナリオは、コードが何をしているのか(そしておそらく特定の決定が行われた理由)を理解することです。
デビッドスターキー

38
単純な古いHTML、JS、プラグイン、空想のないものを使用するだけです。Lynxで動作する場合は、常に有効です。
ガイウス

回答:


132

そのような寿命のためにソフトウェアを計画することは困難です。なぜなら、私たちは未来がどうなるかわからないからです。ちょっとしたコンテキスト:Javaは21年前の1995年に公開されました。XmlHttpRequestは、17年前に1999年に公開されたInternet Explorer 5の独自の拡張機能として初めて利用可能になりました。すべての主要なブラウザで利用できるようになるまで、約5年かかりました。将来を見据えようとしている20年は、リッチなWebアプリケーションが存在する頃です。

それ以降、確かに同じものがいくつかあります。強力な標準化努力が行われており、ほとんどのブラウザは関連するさまざまな標準によく適合しています。15年前にブラウザー間で機能したWebサイトは、各ブラウザーの回避策を使用したためではなく、すべてのブラウザーの共通サブセットを対象としたために機能する限り、同じように機能します。

他のこともあります-最も顕著にフラッシュ。Flashにはさまざまな問題があり、その終miseに至りました。最も重要なことは、単一の会社によって管理されていたことです。Flashプラットフォーム内での競争の代わりに、FlashとHTML5の間で競争があり、HTML5が勝ちました。

この歴史から、いくつかの手がかりを集めることができます。

  • シンプルに保つ:回避策を使用せずに、今すぐ動作することを実行してください。この振る舞いは、後方互換性の理由から、今後もずっと利用可能です。

  • 独自技術への依存を避け、オープンスタンダードを好みます。

今日のJavaScriptの世界は、ライブラリとフレームワークの流動性が高く、比較的不安定です。ただし、20年以内にそれらのほとんどが問題になることはありません。それまでに使用されると確信している唯一の「フレームワーク」はVanilla JSです。

ライブラリやツールを使用すると、開発が大幅に容易になるため、まず、今日のよくサポートされている標準に基づいて構築されていることを確認してください。次に、ライブラリまたはツールをダウンロードして、ソースコードに含める必要があります。コードリポジトリには、システムを実行可能にするために必要なすべてが含まれている必要があります。外部のものはすべて、将来壊れる可能性のある依存関係です。これをテストする興味深い方法は、コードをサムドライブにコピーし、別のオペレーティングシステムを使用する新しいコンピューターに移動し、インターネットから切断して、フロントエンドを動作させることができるかどうかを確認することです。あなたのプロジェクトがプレーンなHTML + CSS + JavaScriptとおそらくいくつかのライブラリで構成されている限り、あなたはおそらく合格するでしょう。


4
現在、バニラjsでは大規模なアプリケーションはメンテナンスされていません。ES6はすでに何らかの形でこの問題を修正していますが、flowまたはTypeScriptが人気を博しているのには理由があります。
アンディ

34
@DavidPacker絶対に、TypeScriptなどは優れており、開発を容易にします。しかし、ビルドプロセスを導入するとすぐに、ビルドプロセスに必要なすべてのツールが依存関係になります。NodeJS、Gulp、NPM – NPMは20年後にもオンラインになると誰が言いますか?確実に行うには、自分のレジストリを実行する必要があります。これは不可能ではありません。しかし、ある点は、開発をすぐに簡単にするだけでなく、長期的にはそうしないものを手放す方が良いということです。
アモン

30
@DavidPacker動的言語はたくさんありますが、驚くべきことに、Smalltalk、Ruby、Perl、Python、さらにはPHPやJSでさえ、成功したシステムがたくさん作られています。静的に型付けされた言語は保守性が高い傾向にありますが、動的言語はラピッドプロトタイピングに適している傾向がありますが、保守可能なJSを書くことは不可能ではありません。コンパイラが存在しない場合、チームの高い中央値スキル、職人技、明確なコード編成への特別な重点がさらに重要になります。個人的には、型によってすべてが簡単になると思いますが、それらは特効薬ではありません。
アモン

4
「USBを取り、別のマシンでテストする」を読んだだけですか?なぜvirtualboxをスピンアップするだけでなく、シークレットモードを使用しないでください(ethXを無効にして)。
キスリック

5
20年後、バニラJS 確実なものになるとは思いません。その歴史は岩だらけで実験的であり、楽しく効果的な言語として浮上してきたにも関わらず、その過程でかなりの量の苦労を拾いました(私は個人的にJavaScriptまたはTypeScriptを好みます)。GoogleがDartを提案しているように見えたとしても、ベンダーがその代替案の一部または全部を捨てることを望むのは想像に難くない。 —またはJSの一部を廃止してから削除することにより。
KRyan

178

コードが20年間存続することよりもさらに重要なことは、データが20年間存続することです。チャンスは、それは保存する価値があることです。データの操作が簡単な場合、新しいテクノロジーを使用してその上に代替システムを構築するのは簡単です。

  • そのため、明確で十分に文書化されたデータモデルから始めます。
  • Oracle [1]やSQL Server など、確立され、十分にサポートされているデータベースシステムを使用します。
  • 基本的な機能を使用し、派手な新しい機能を絞り込もうとしないでください。
  • 賢いよりもシンプルを好む。
  • パフォーマンスなどの側面を犠牲にして、将来の保守性がもたらされる可能性があることを受け入れます。たとえば、ストアドプロシージャを使用したくなるかもしれませんが、誰かがシステムをよりシンプルなストレージソリューションに移行できないようにすると、将来の保守性が制限される可能性があります。

それができたら、アプリ自体の将来の保証はより簡単です。これは、データモデルのラッパーであり、たとえば10年後に誰もJavascriptを使用しなくなった場合に置き換えることができ、アプリをWASMまたは何か。物事をモジュール化し、相互依存性を低く保つことで、将来のメンテナンスが容易になります。


[1]この回答へのほとんどのコメントは、OracleをDBに使用することに対して強いスタンスを取ります。DBとしてOracleを選択する場合、これらは完全に有効な懸念事項ですが、このケースでは、汎用DBを探しているのではなく、主な懸念事項が保守性であるものを探しています。Oracleは70年代後半から存在しており、今後何年もサポートされる予定です。また、コンサルタントとサポートオプションの巨大なエコシステムがあり、それを実行し続けるのに役立ちます。これは多くの企業にとって高額な混乱ですか?承知しました。しかし、データベースを20年間実行し続けますか?非常に可能性が高いです。


141
すみませんが、これを言わなければなりません。Oracleを使用している場合、「作業しやすい」という点で全員を撃ちます。Oracleは、少しでも簡単に使用できません。SQL Server、PostgreSQL、そしておそらくMySQLでさえも簡単にする多くの機能。Oracleは完全に持っていないか、過度に難しくしています。私は、他のDBに関して、Oracleほど愚かな問題を抱えることはありません。クライアントをセットアップするだけでも、大きな苦痛です。グーグルでさえも難しいです。「使いやすい」ようにしたい場合は、Oracleに近づかないでください。
jpmc26

4
データをできるだけシンプルに保つために+1。これには標準SQLを使用します。たとえば、oracle固有の+演算子の代わりにOUTER JOINを使用します。シンプルなテーブルレイアウトを使用します。テーブルを絶対最大レベルに正規化しないでください。一部のテーブルに冗長データを含めることができるか、またはすべての値が一度だけ存在するように新しいテーブルを本当に作成する必要があるかを決定します。ストアドプロシージャはベンダー固有ですか?はいの場合、それらを使用しないでください。現在選択している言語の最もホットな機能を使用しないでください。OOP -Featuresを使用せずに、さらに多くのCOBOLプログラムを使用しています。そして、それはまったく問題ありません。
some_coder

3
@ jpmc26オラクルについてのあなたの感情に同意しますが、私が言ったように、「一緒に仕事をするのは簡単」であるとは限りません。私はここでしっかりとサポートされているプラ​​ットフォームを好みます。なぜなら、20年にわたって償却されたとき、それはそれほど悪くないからです。
アヴナーシャハルカシュタン

8
実際、Oracleは避けてください。20年以内に悪い選択のように見えない可能性が高い、今日存在する唯一のDBはPostgresqlです。
ジョシュア

3
素晴らしいオープンソースDBMSが死なない可能性が高いため、望ましいと付け加えたいと思います。Oracleが10年で収益を上げるのをやめた場合、11年でそれはなくなります。PostreSQLは賭けに最適な馬のようです。
シャウティエ

36

amonによる以前の答えは素晴らしいですが、言及されなかった2つの追加ポイントがあります。

  • ブラウザーだけではありません。デバイスも重要です。

    amonは、「15年前にブラウザー間で機能していたWebサイトが同じように機能するという事実に言及していますが、これは事実です。ただし、15年ではなく10年前に作成されたWebサイトを見てください。作成されたWebサイトは、ほとんどのユーザーのほとんどのブラウザーで機能していました。今日、ユーザーの大部分は、ブラウザーが変わったためではなく、デバイスが変わったため、これらのWebサイトをまったく使用できません。これらのWebサイトは、モバイルデバイスの小さな画面ではひどく見え、開発者がJavaScript clickイベントに依存することを決定した場合、そのtapイベントが重要であることを知らずに最終的にはまったく機能しません。

  • あなたは間違った主題に焦点を合わせています。

    技術の変更は1つのことですが、より重要なことは要件の変更です。製品のスケーリングが必要な場合、追加機能が必要な場合、または現在の機能を変更する必要がある場合があります。

    ブラウザ、デバイス、またはW3Cなどに何が起こるかは関係ありません。

    リファクタリング可能な方法でコード記述すると、製品はテクノロジーとともに進化します。

    誰も理解して保守できない方法でコードを作成する場合、テクノロジーは重要ではありません。環境の変化は、アプリケーションをダウンさせることになります。 。

    例として、私はソフトウェア開発に10年間携わっています。数十件のプロジェクトの中で、テクノロジーのために変更することに決めたのは2つだけでした。より正確には、過去10年間でPHPが大きく進化したためです。それは顧客の決定でさえありませんでした:サイトがPHPの名前空間またはクロージャを使用している場合、彼はそれほど気にしません。ただし、新しい要件とスケーラビリティに関連する変更には、たくさんありました!


4
さまざまな画面サイズへの採用は一般的な問題です。現時点ではモバイルが大いに注目されていますが、十分な解像度の画面上のフルスクリーンブラウザウィンドウでこのWebサイトを見ると、多くの空の(無駄な)スペースがあります。利用可能なピクセルを最大限に活用するためにレイアウトや情報の表示方法を変更することは、実際には決してスマートな方法では起こりませんでした。モバイルはこれを明らかにしました。しかし、目前の質問にとっては、他の方向で考えることがより重要かもしれません。
ナル

9
@null:私はあなたのコメントに同意しますが、StackExchange Webサイトはあなたの主張の最良の例ではないかもしれません。表示するデータを考えると、StackExchangeのデザイナー/開発者は、大きなモニターを含めて、表示する必要があるデータを表示するのに素晴らしい仕事をしたと思います。テキストは読みにくくなるため、メインの列を広くすることはできません。短い質問と回答では見栄えがよくないため、複数の列を使用することはできません。
Arseni Mourzenko

別の良い例は、メニューシステムでよく使用される「ホバー」イベントです。これらのメニューの多くは、タッチデバイスではひどく失敗します。
ジャス

デバイスについては110%(またはそれ以上)であり、数十年前の例を提供できます。1980年代後半に、IBMメインフレームおよび同期3270ターミナルで実行されるCICSアプリケーションに取り組みました。CICS領域は、サーバー側アプリに似ており、一度に画面いっぱいのデータを同期端末に送信します。したがって、専用端末ブラウザーに似ています。そして、CICSプログラミングはおそらく80%Cobol、20%PL / 1でした。どちらも、これらの言語は、最近ほとんど廃止され、初期の1990年代のUnixワークステーション(Sunとアポロ)の外観はかなり完全にCICSを殺した
ジョンForkosh

31

あなたは20年間続くことを計画していません。簡潔でシンプル。代わりに、目標を区分化にシフトします。

アプリデータベースは非依存ですか?今すぐデータベースを切り替える必要がある場合は、できますか。論理言語にとらわれません。今すぐアプリをまったく新しい言語で書き直さなければならない場合は、できますか?SRPやDRYなどの優れた設計ガイドラインに従っていますか?

私は20年以上もプロジェクトを稼働してきましたが、状況が変わることを伝えることができます。ポップアップのように。20年前にはポップアップに頼ることができましたが、今日ではできません。XSSは20年前のものではありませんでしたが、今ではCORSを考慮する必要があります。

そのため、ロジックが適切に分離されていることを確認し、特定のベンダーに固定するようなテクノロジーを使用しないようにします。

これは時には非常に注意が必要です。たとえば.NETは、他のアダプターに相当するものがないMSSQLデータベースアダプターのロジックとメソッドを公開するのに優れています。MSSQLは今日では良い計画のように思えるかもしれませんが、20年間はそうでしょうか?知るか。これを回避して、データレイヤーをアプリケーションの他の部分から完全に分離する方法の例。その後、最悪の場合、データ層全体を書き直すだけで、アプリケーションの残りの部分は影響を受けません。

言い換えれば、車のように考えてください。あなたの車は20年も経たないでしょう。しかし、新しいタイヤ、新しいエンジン、新しいトランスミッション、新しい窓、新しい電子機器などにより、同じ車が非常に長い間道路を走ることができます。


2
「今すぐデータベースを切り替えなければならなかったなら、できますか」これは、一度に1行でCRUD以外のことを行うと達成するのはほとんど不可能です。
jpmc26

1
多数のORMはデータベースに依存しません。私はgaurenteeで作業しているプロジェクトのうち、SQLLiteからMySqlおよびPostgreに簡単に切り替えることができるプロジェクトを1つ与えることができました。
coteyr

5
ORMは、一度に1つのレコードに対して単純なCRUD以上のことを行うと、仕事に非常に適したツールではなくなります。それが私がそれを修飾した理由です。私はもう試した。クエリの複雑さが増すにつれて、最高のORMでさえ、クエリを記述するだけでなく、クエリを強制する場合でも、データベース固有の機能や最適化を使用していることにすぐ気づきます。
jpmc26

1
「複雑」を定義します。これは一括操作でしたか?ウィンドウクエリが含まれていましたか?サブクエリ?CTE?組合?複雑なグループ化条件?各行と集計の複雑な計算?単一のクエリにいくつの結合がありますか?どんな種類の結合?一度に処理された行数は?確かに、単一行のCRUD(Webリクエストなどではなく、クエリごとに1行を意味します)で何かを言うことは少し誇張されていますが、ORMが価値以上にトラブルになったときの道は、あなたは考える。また、クエリを適切に実行する手順は、データベース固有です。
jpmc26

4
「アプリのデータベースは不可知ですか?今すぐデータベースを切り替える必要がありますか?あなたのロジック言語は不可です。今すぐアプリをまったく新しい言語で書き直さなければならなかったでしょうか?」-これは絶対にひどいアドバイスです!プログラミング言語やデータベースの最大の共通点と思われるものに人為的に制約しないでください。これにより、常に車輪の再発明を余儀なくされます。代わりに、プログラミング言語と選択したデータベースで目的の動作を表現する自然な方法を見つけてください。
fgp

12

@amonや他のいくつかの回答は素晴らしいですが、別の観点からこれを見ることをお勧めします。

私は20年以上も使用されてきたプログラムやコードベースに依存している大手メーカーや政府機関と仕事をしてきましたが、それらはすべて共通点が1つありました。会社がハードウェアを制御していました。実行するものを制御する場合、20年以上にわたって実行可能で拡張可能なものを用意することは難しくありません。これらのグループの従業員は、展開マシンよりも数百倍速い最新のマシンでコードを開発しました...しかし、展開マシンは時間内に凍結しました。

Webサイトでは、サーバーとブラウザーの2つの環境を計画する必要があるため、状況は複雑です。

サーバーに関しては、2つの一般的な選択肢があります。

  • さまざまなサポート機能をオペレーティングシステムに依存します。サポート機能ははるかに高速ですが、OSを「凍結」する必要がある場合があります。その場合は、サーバーのOSインストールのバックアップを準備する必要があります。10年以内に何かがクラッシュした場合、OSを再インストールしたり、別の環境で動作するようにコードを書き直そうとして、誰かを夢中にさせたくありません。

  • 特定の言語/フレームワーク内でバージョン管理されたライブラリを使用します。これは低速ですが、仮想環境にパッケージ化でき、異なるオペレーティングシステムまたはアーキテクチャで実行される可能性があります。

ブラウザに関しては、サーバー上ですべてをホストする必要があります(つまり、グローバルCDNを使用してファイルをホストすることはできません)。将来のブラウザはHTMLとJavascriptを(少なくとも互換性のために)引き続き実行すると想定できますが、それは実際には推測/仮定であり、それを制御することはできません。


11
セキュリティも考慮する必要があります。20年前のサポートされていないOSは、おそらくセキュリティホールでいっぱいになるでしょう。私は会社に勤め、この問題を引き継ぎました。政府機関、古代のOS(すべて仮想化され、幸いなことに)、これは大きな問題であり、ソフトウェアを完全に書き換える必要があるため、アップグレードはほぼ不可能でした(それぞれがデータベース呼び出しを行う何百もの個々のスパゲッティコードPHPスクリプト)ハードコーディング、新しいドライバーが/ shudderをサポートしていなかった廃止された関数を使用)。

OSのルートに進むと、せいぜいセキュリティパッチが適用され、将来のメンテナーがネットワーク層で物事を保護できるようになることを期待できます。長期的に(OPが学生であるため、大きな予算がない場合は特に)このように機能するように計画するには、基本的にアプリケーションとサーバーが安全でなくなることを受け入れる必要があります。たとえば、20年後には最終的にサーバー上のSSLバージョンの既知のエクスプロイトが存在するようになりますが、そのOSは10年後にはopensslバージョンと互換性がない可能性があります。これは、トレードオフを最小限に抑えることです。
ジョナサンヴァナスコ

@FighterJetは、サポートされているOSでいつでもファイアウォールを実行でき、SQLインジェクションなどのリスクはほとんどありませんが、とにかくコーディングする必要があります。
イアン

@イアン:願っています。ファイアウォールがありました。しかし、私はコードを記述せず、継承しました。そして、はい、修正したいSQLの脆弱性は何千もありましたが、本当の問題は、コードが特定のバージョンのPHP4に依存していたことです(永久に廃止され、セキュリティホールがぎっしり詰まっています)。特定のバージョンのデータベースドライバー(新しいOSでは機能しませんでした)により、新しいバージョンのデータベースへのアップグレードができませんでした...ポイントは、常に同じものに依存していると機能しないことです。私はもうそこで働かないことを嬉しく思います。

1
@FighterJetそれは実際、私が話したいことの本当に良い例です。PHP4の特定のバージョンでのみ動作するコードと、特定のOSでのみ実行されるドライバーを継承することになりました。そのため、サーバーをアップグレードすることはできません。私はそれをしている人を支持しませんが、それは起こります。 - たくさん。FWIW、私はあなたに同意します、しかし、私は推薦をしないで、それらのタイプのシナリオについて考えることを促進するために私の答えが欲しかったです。
ジョナサンヴァナスコ

6

ほとんどのアプリケーションの中核はデータです。データは永遠です。コードはより使いやすく、変更可能で、順応性があります。ただし、データは保存する必要があります。そのため、本当に堅実なデータモデルの作成に焦点を当てます。スキーマとデータをきれいに保ちます。新しいデータベースが同じデータベースの上に構築される可能性があることを予想してください。

整合性制約を実施できるデータベースを選択します。時間の経過とともに、強制されていない制約に違反する傾向があります。誰も気づかない。外部キー、一意の制約、チェック制約、検証のトリガーなどの機能を最大限に活用します。インデックス付きビューを悪用して、テーブル間の一意性制約を強制するいくつかのトリックがあります。

そのため、アプリケーションがいつか書き換えられることを受け入れる必要があるかもしれません。データベースがクリーンな場合、移行作業はほとんどありません。移行は、労力と欠陥の点で非常に高価です。

テクノロジーの観点からは、クライアント上のJavaScriptフォームではなく、ほとんどのアプリケーションをサーバー上に配置することをお勧めします。仮想化のおかげで、おそらく同じアプリケーションを同じOSインスタンスで非常に長い時間実行できるでしょう。これはあまり良いことではありませんが、高価なメンテナンスやハードウェアのコストなしで、アプリが20年後に機能することを保証します。これを行うと、少なくとも、古い作業コードを実行し続けるという安全で安価なフォールバックが得られます。

また、一部の技術スタックは他の技術スタックよりも安定しいることがわかりました。.NETには、現在、可能な限り最高の下位互換性のストーリーがあります。マイクロソフトはそれについて非常に深刻です。JavaとC / C ++も非常に安定しています。Python 3の重大な変更により、Pythonは非常に不安定であることが証明されました。Webを壊すことはブラウザベンダーにとって選択肢ではないため、JavaScriptは実際には非常に安定しているように見えます。ただし、実験的またはファンキーなものに頼るべきではありません。(「ファンキー」は「見ればわかる」と定義されています)。


.netの後方互換性について -対照的に、古いバージョンのJavaを要求するJavaアプリを見たことはないと思います。これはJava 9以降で変わる可能性がありますが、まだ実現していません。
eis

実際には驚くほど互換性があり、古いバージョンを並べてインストールすることは問題ではありません。また、.NET BCLはJavaの組み込みクラスよりも10〜100倍大きいと推定されています。
usr

下位互換性とは、古いバージョンもインストールする必要がないことを意味します。しかし、元の質問から脱線します。これはOPには実際には関係ありません。
eis

0

他の答えは理にかなっています。ただし、クライアントテクノロジーに関するコメントは、物事の複雑化を超えていると感じています。私は過去16年間、開発者として働いてきました。私の経験では、クライアントコードを直感的に保つ限り、大丈夫です。したがって、フレーム/ iframeなどを使用した「ハッキング」はありません。ブラウザでは、明確に定義された機能のみを使用してください。

ブラウザーの互換モードを常に使用して、それらを機能させ続けることができます。

私の主張を証明するために、ほんの数か月前に、私は17年間Webアプリを実行している顧客のjavascriptコードのミレニアムバグを修正しました。最近のマシン、最近のデータベース、最近のオペレーティングシステムでも動作します。

結論:シンプルでクリーンな状態に保つと、大丈夫です。


1
フレームとiframeは、HTML仕様で非常によく定義されています。それらが不適切な理由は何ですか?
-curiousdannii

3
@curiousdannii:iframeの使用はそれほど多くありません(フレームはHTML5でサポートされなくなりました)。スクリプトなどを使用してコンテンツを非同期に読み込むためにフレームやiframeを使用します。セキュリティの変更の対象となります。
ジョナサンヴァンデヴィーン

-2

いくつかの公理:

  • 真実は生き残る。このコンテキストでは、アルゴリズムとデータモデルになります。これは、問題空間の「何」と「どのように」を忠実に表します。しかし、常に改善と改善の可能性、または問題自体の進化の可能性があります。
  • 言語は進化します。これは、自然言語の場合と同様にコンピューター言語の場合にも当てはまります。
  • すべてのテクノロジーは陳腐化に対して脆弱です。一部のテクノロジーでは他のテクノロジーよりも時間がかかる場合があります

最も安定した技術と標準(陳腐化に対する脆弱性が最も低いもの)は、所有権がなく、最も広く採用されているものです。採用範囲が広いほど、ほとんどすべての形態の変化に対する慣性が大きくなります。独自の「標準」は、常に所有者と競争力の運命と気まぐれに対して脆弱です。

コンピューター業界では20年が非常に長い時間です。5年がより現実的な目標です。5年後には、アプリケーションが解決しようとしている問題全体が完全に再定義される可能性があります。

説明するいくつかの例:

CとC ++は長い間使用されてきました。ほぼすべてのプラットフォームに実装されています。C ++は進化し続けていますが、「ユニバーサル」機能(すべてのプラットフォームで利用可能な機能)は、非推奨になることはほとんどありません。

Flashはほぼ普遍的な標準になりましたが、独自仕様です。人気のあるモバイルプラットフォームでサポートしないという企業の決定は、基本的にどこでもそれを運命づけています。モバイルが主流となった主要な市場を見逃したくないでしょう。

WinTel(Windows / x86)は、MicrosoftおよびIntelに独占権がありますが、最適ではないプラットフォーム(16ビット内部/ 8ビット外部8088と同時期のApple Macintosh 32ビット内部/ 16ビット外部68000)で開始し、侵食しました消費者市場でのAppleにとっては、ビジネスプラットフォームにとって事実上の選択です。その間ずっと(25年)、後方互換性へのコミットメントにより、将来の開発が妨げられ、古いボックスで機能していたものが新しいボックスでも機能するというかなりの自信が生まれました。

最終的な考え

JavaScriptは、ビジネスロジックの実装に最適な選択肢ではない場合があります。データの整合性とセキュリティの理由から、ビジネスロジックはサーバーで実行する必要があります。そのため、クライアント側のJavaScriptはUIの動作に制限する必要があります。サーバー上でさえ、JavaScriptは最良の選択ではないかもしれません。小さなプロジェクトでは他のスタック(JavaまたはC#)よりも簡単に作業できますが、事態が複雑になったときに、より適切で組織化されたソリューションを作成するのに役立つ形式性が欠けています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.