私はJavaベースのサーバーを持っており、TCP/IPを介して多くのリモートデバイスから1つのアプリにデータを送信しています。私はそれのいくつかのバージョンを開発する必要があります。2つのプロジェクトのコーディングを必要とせずに、どうすればそれらを開発して常駐させることができますか?
そのプロジェクトだけでなく、さまざまなアプローチを求めています。
4 に答える
動作が異なる場合は、動作を「データ駆動型」にします。通常、データを外部化することにより、実行時/起動時に読み取られるプロパティファイルに動作を駆動します。
目標は、ランタイム環境で見つかったプロパティファイルに応じて動作が異なる単一のバイナリを作成することです。
Javaは、プロパティをロードする便利な方法を提供するPropertiesクラスを通じてこのパターンをサポートします。実際、ほとんどのWebサイトはこのように動作します。たとえば、本番データベースのユーザー/パスの詳細がコードに含まれることはありません(含まれるべきではありません)。システム管理者は、起動時に読み取られ、オペレーティングシステムのファイル権限によって保護されているプロパティファイルを編集します。
他のオプションは、データベースを使用して、動作を駆動するデータを保存することです。
これは非常に強力なパターンである可能性がありますが、悪用される可能性もあるため、ある程度の裁量をお勧めします。
コードベース、構成、その他のアセットを再利用して、以前のバージョンに基づいて他のバージョンを作成します。一度に複数のバージョンを配置する必要がある場合は、構成管理手法を使用してください。おそらく、サーバー側でいくつかのルーティングアクティビティとクライアントバージョンチェックを検討する必要があります。これは、「下位互換性」が機能する場所です。
主なアプローチは、最初に、あるバージョンから別のバージョンに変更されないコードを見つけて抽出することです。最善の方法は、この部分を最大化して最大のコードベースを共有し、メンテナンスを容易にすることです(1つのバグを修正することは、すべてを修正することを意味します)。
次に、バージョンごとに実際に何が変わるかによって異なります。最良の方法は、メインプロジェクトで、特定のプロジェクトごとに実装できるいくつかの抽象クラスまたはインターフェイスを使用できることです。
ソース管理管理(SCM)とバージョン管理システム(VCS)について読む必要があると思います。
gitまたはSubversionリポジトリを設定し、最初にコードをトランクに追加してから、ブランチの数(作業するバージョン)に分岐することをお勧めします。
さまざまなバージョンの考え方は次のとおりです。コードを開発していて、それをSCM trunk
(または別名HEAD
)に組み込んでいます。ある時点で、リリースに対して十分に安定したコードであるとみなします。したがって、tag
(バージョンと呼びましょう1.0
)を作成します。タグに変更を加えることはできません(すべきではありません)。タグは、時間内にマーカーとしてのみ存在します。1.0
バージョンがあり、修正したいバグを報告するクライアントがある場合はbranch
、のコピーに基づいてを作成しますtag
。生成されるバージョンは(通常)1.x(1.1
、1.2
など)になります。修正が完了したら、再度タグを付けて新しいバージョンをリリースします。
通常、開発のほとんどはあなたので行われますtrunk
。特定の修正の準備ができている場合、または特定の修正がすでに適用されていることがわかっているtrunk
場合は、必要に応じて、これらの変更を他のブランチにマージできます。