1

クライアント (おそらく C# gui) とサーバー コンポーネント (Java、C++、Perl) の両方を備えた非常に高い可用性 (サーバーを停止しない、再起動せずに機能をロールアウトするなど) のアプリケーションを設計したいと考えています。

( minimize-code-maximize-data.htmlYegge ) からアドバイスをもらいました。ほとんどのロジックをデータベースから動的に読み取り可能にして、すべての構成 (すべての GUI 構成、テキスト翻訳など、ビジネス ルール、およびデータ) は、実行可能メモリに読み込むために再起動が必要なコードではなく、サーバー上のデータベースに存在します。

クライアントまたはサーバーを再起動せずにアプリケーションのあらゆる側面をカスタマイズし、できるだけ短いラグで変更をアプリケーションに反映できるようにしたいと考えています (動的クラスのロードなど)。

このような「決して殺さない」システムを設計する際のパフォーマンスやその他の制限は何ですか? そのようなアプリケーションを作成できた人はいますか? 主な教訓は何でしたか? これが費用対効果が低く、より伝統的なビルド、リリース、qa、数時間のダウンタイムアプローチが必要になるのはいつですか?

4

2 に答える 2

3

私は、スクリプトの動的コンパイルを行う MUD ゲーム サーバーで作業を行いました。これにより、ゲーム内のほぼすべてのものが実行時に変更可能になり、ユーザーを切断することなく再コンパイルできるようになりました。

このプロジェクトからおそらく私が学んだ最大の教訓は、何でもできるほど柔軟なコードを書くと、事実上何もしないということでした。

最終的に、システムのユーザーはデータを入力しなくなりました。彼らは、私のシステムに固有の不可解な種類のコード言語を書いていました。

柔軟性に注意してください。コードに柔軟性を追加することは、腕に肘を追加するようなものです。関節が数個あればいいのですが、肘が多すぎると弱くなり、演出しにくくなります。

于 2008-11-12T22:24:19.103 に答える
1

Rhino のように、スクリプト インタープリターの周りに非常に静的で小さなコード ベースを使用することは、それほど違いはありません。

http://www.mozilla.org/rhino/ScriptingJava.html

そうすれば、すべてのロジックとデータを再読み込み可能なスクリプトに入れることができ、プログラムのコア部分はスクリプト ランナーとシェルのような部分だけになります。

これはパフォーマンスにとって間違いなく悪いことです。それは当然のことだと思います。

私の記憶が正しければ、Yegge が以前ブログに似たようなことを書いていたので、また彼と話す機会があれば、そのことについて彼に尋ねるかもしれません。

于 2008-11-12T22:28:02.607 に答える