2009-07-18 4 views
5

私は最近、Catalyst(Perl)を学び始めていることを友人に教えてくれました。そして、彼はCatalystが非常に依存しているので、Railsのようなものを使うべきだと強く強調しました。多くの依存関係を持つフレームワークを使用すると何が問題になりますか?

多くの依存関係があることは良いことではありませんか?それはコードの再利用が多いことを示していませんか?私はフレームワークのインストールにもっと多くの努力が必要だと理解していますが、他にも欠点はありますか?

私はCatalyst tutorialを再開して、ジューシーな反応を得るでしょう。 :-)

+0

これは誰も夜間に飼っていないと確信していますが、この質問の答えを選ぶのは難しかったです。すべてのおかげで! 私はCatalystチュートリアルをCPANに固執することに決めました。私は両方のCatalystブックをbetterworldbooks.comから注文しました。自信を高めてくれてありがとう、Mr. Rockway! – hourback

答えて

2

コンポーネント間のバージョン依存関係が存在する場合、依存コンポーネントの互換バージョンよりも前に、(セキュリティ上の理由などで)1つのコンポーネントを強制的にアップグレードすると、利用可能です。

これは、最初に作業状態になることが前提です。現在のバージョンのすべての依存関係を使用しようとすると、それらが一緒に再生されないことがわかります。

依存関係の数が多いほど、リスクは大きくなります。

Railsにもこの問題はありません。新しいRubyリリースが登場するたびに、構築されたデータベースドライバの入手方法に関する指示を更新するためのスクランブルがあります。

この問題は、道路上の隆起にもかかわらず、時間の経過とともに「良好な」傾向にあります。

+0

Railsの問題は本当に依存関係の数ではありません。その構成フレームワークのほかに、Rakeだけに依存します。 – Chuck

+2

理論的には真だが、触媒は真ではない。 Catalystの依存関係のほとんどは、Catalyst向けに書かれたもので、Catalyst :: Runtimeを管理するグループと同じグループによって管理されています。依存関係に何かがうまくいかず、それが他の依存関係を壊してしまったら、同時にすべてを解放するでしょう。しかしこれは決して起こらなかった。 – jrockway

+0

@Chuck、あなたが彼の投稿を読んでいれば、彼はデータベースドライバのような話をしていたことに気付くでしょう。確かに、Railsはおそらくデータベースドライバに依存していないだろうが、私はあなたのアプリが賭けるだろう。 – jrockway

1

私が個人的に経験していることは、より多くの依存関係を追跡する必要があることです。これが悪夢のような状況につながる可能性があります。特に、1つの依存関係を更新すると(たとえば修正したいバグのため)、他の依存関係との互換性の問題が発生する可能性があります。一例として、私は個人的にはgcc 4.0.3がfooで動作するが、bar(fooの依存関係)では動作せず、gcc 4.0.5はbarで動作するがfooでは動作しない状況があった。幸いにも、4.0.2が働いた。

また、フランケンシュタインのモンスター製品では、より多くの依存関係があり、一緒に遊ぶように設計されていない部品で構成されています。よく統合されたフレームワークは、すばらしい一貫性を保つように設計されていますこれはもちろん、違いを適切にラッピングすることで修正できます。

+2

触媒のすべての部分は、相互に統合するように設計されています。彼らはまた、彼ら自身で使用できるように設計されています。 – jrockway

+2

Perlのモジュールテストでは、このシナリオの可能性は低くなります。その場合は、バグとして報告するのがずっと簡単です。 – ijw

+0

@jrockway:デザインの目標と現実は、しばしば別々のものです。 – Flimzy

7

これには特に問題はありません。 Catalystの利点は、すべてのCatalystを使用していない人がその部分を使用できることです。これは、クリティカルな部分を見て、バグを修正する目が増えていることを意味します。

私が聞いた最大の不満は、CatalystがインストールされているときにCPANシェルでこれらのメッセージがすべて流れるのを見るのは面倒です。解決策は、開始するときにOSのパッケージマネージャを利用することです。 Debianでは、apt-get install libcatalyst-perlは他のPerlモジュールがインストールされていないマシンにインストールするのに15秒かかります。 15秒。 (普通のCPANのインストールも難しくありませんが、私は標準のCPANシェルがあなたに多くのダムの質問をしてくれると思うので、初心者からは離れています)。

依存関係は心配しないでください。それらを管理し、フレームワークをより強く柔軟にします。

6

これは前に投稿した内容です。私はそれについての記事を書くことを意味しており、最終的にそうしています。

それはここにある:The Lie of Independence

私はそれを読むことをお勧めします。しかし要点はシンプルです。問題は間違っています。 「多くの依存関係を持つアプリケーションやフレームワーク、あるいはそれらを持たないフレームワークを使用していませんか?

これは次のとおりです: '外部依存関係の多いアプリケーションまたはフレームワークを使用していますか、内部的にすべてを実行しようとしていますか?

また、「このフレームワークを書いている人や人が、Web要求を処理するために必要なすべてのタスクの細かい細部のすべてのニュアンスを理解しているということは本当に信じていますか?

+0

非常に役に立つ記事!ありがとう、ジェイ。 – hourback

関連する問題