2009-06-10 5 views
4

Firefox、Fring、Skypeのようなさまざまなアプリケーションが、さまざまなプラットフォームで動作します。コードをどのように管理していますか?プラットフォームによって異なるUIを持っていますか?と同様に、FirefoxはMac上でCocoaを使用しなければなりません.WindowsではWinForms、それと同等のもの、LinuxではQT相当です。 diffターゲット用にコンパイルするだけで、同じソースコードでdiff UIを表示する方法はありますか?複数のプラットフォームで動作するアプリケーションを開発するためのソフトウェアアーキテクチャ

セキュリティ問題のようなあるバージョンのバグ修正がすべてのリリースで修正されていることを保証します。つまり、コードはどこにも複製されません。では、基礎となるアーキテクチャはどのように設計されていますか?クロスプラットフォームの問題で私を助けているものを私の経験で

答えて

3

は以下のとおりです。あなたが私の場合、C/C++で、上の開発に必要なものは何でもプラットフォーム間で移植性がある一つの言語で

  • ライブラリコード。
  • 単体テストとの継続的な統合により、速やかに改訂コードが変更されます。
  • できるだけ依存性の少ないモジュールライブラリです。
  • 速度/機能/その他のために必要なコンセプトのプラットフォームを実装することを恐れてはいけません。コードの本体でプラットフォーム固有のコードを使用しているという事実を隠す方法はたくさんあります。
  • デザインパターンを使用すると、必要な結果を得ることができます。 DRYやSOLIDのような他のプリンシパルも同様に役立ちます。これはクロスプラットフォームに特化したものよりも優れたソフトウェア設計です。

デザイン上の問題のいくつかは、達成しようとしていることに大きく依存しています。 UIがそれが取引でない場合、QTのようなライブラリを使用することができます。同じことがあなたのアプリケーションのあらゆる側面にも当てはまります。オープンソースまたは有料のライブラリを使用すると、開発時間を短縮するのに役立ちます。これは良いことです。

あなたのアプリケーションが輝くようになっているところでは、本当にその部分をコーディングする必要があります。

私が扱うプラットフォームのほとんどがとても異なっているため、毎回UIレイヤーを再設計する必要があるため、UIの選択肢についてはほとんど話すことができません。ライブラリとメインエンジン層がプラットフォーム間で移植可能であるという事実は、そのことを容易にします。

1

基本的な解決策は、アプリケーションの小さな部分に違いを集中させることです。たとえば、FireFoxにはXulRunnerがあります。

既存のフレームワークを使用することもできます。 LinuxでQtを使用する場合、Windows用のWinFormsには行きません。あなたはまだQtを使っていますが、それはMacでも使えます。

セキュリティバグのようなものは、プラットフォーム固有のレイヤーまたは汎用レイヤーのいずれかになります。最初のケースでは、影響を受けるプラットフォームでのみ修正する必要があります。 2番目のケースでは、バグを修正するとどこにでも修正されています。

関連する問題