1

当社には、すべてのユーザーがデフォルトで単一のダミーアカウントを使用するダミーデータを使用するテストサーバーに対して、クライアントに試用してもらうためのクライアント/サーバー製品があります。

製品を要約すると、実際の状況では、サーバーは顧客のホスティング環境にデプロイされ、クライアントアプリは顧客自身のユーザーに配布されます。クライアントアプリはSOAPWebサービスを使用してサーバーと通信し、Mercurialを使用してクライアントとサーバーの両方のコードベースのバージョン管理を行います。

開発者としての私の興味は、両方のコードベースの保守性を維持することです。また、クライアントの動作は、ダミーデータを受信する場合でもライブデータを受信する場合でも同じである必要があると思います。ライブからデモシステムにバグ修正をプッシュできるようにする必要があります。ただし、デモバージョンには特定の動作が必要です(たとえば、ダミーデータが入力されているサーバーでダミーアカウントを使用するなど)。

これらの利益を調整するために、サーバーコードベースをハードコードされた設定で分岐して、ダミーデータのみを表示し、すべてのログインでダミーアカウントを使用するように強制しました。デモサーバーはクラウドにデプロイされます。次に、このクラウドサーバーインスタンスを指すようにインストーラーで構成されたクライアントがあります。これは、見込み客が試してみるためにダウンロードできます。

これが最善のアプローチかどうかはわかりません。デモ機能をライブサーバーコードにハードコードし、非表示のフラグで構成できるようにすることを提案する人もいます。これにより、分岐したコードベースが完全に不要になります。

私のアプローチの背後にある理由は、ハードコードされたデモ動作を単一のデプロイメントのためだけにライブコードベースに追加することは、コードの臭いのように思えるということです。ブランチサーバーを使用すると、「ライブ」ブランチでサーバープラットフォームの開発を継続し、バグ修正を「デモサーバー」ブランチにプッシュできます。Webサービスコントラクトとクライアントコードベースは変更されません。

高レベルでは、サーバーからライブデータを受信して​​いるかダミーデータを受信して​​いるかに関係なく、クライアントの動作は同じである必要があるため、これは適切な分離のように思えます。

私の質問は、より広い開発コミュニティがこのアプローチに問題があるのか​​、それともより良い戦略を持っているのかということです。私の推論は有効ですか?ライブシステムと一緒に(ダミーのアカウント/データを使用して)デモシステムのコードベースを管理するためのベストプラクティスは何ですか?

4

3 に答える 3

3

そこには貴重な利点はなく、余分なマージ作業が発生するだけです。デモとライブの違いが重要でない場合は、単一のコードベースを維持することをお勧めします。

デモの動作をカスタマイズするには、次のことをお勧めします。

  • 条件付きコードの包含: #ifdef DEMO ... #endif. 単一のコードベースがあり、「ハードコードされた」文字列がありますが、ライブ バージョン用にコンパイルされません。

  • ランタイム プラグイン。多少のインターフェースがIDataProviderあり、デモを使用するように構成する場合DemoDataProvider。ライブ配布から除外できる単一のコードベース、プラグイン可能なデモ コードがあります。

于 2012-11-18T12:50:37.767 に答える
2

あなたの意見は理解できますが、ブランチを作成すると、ブランチをマージしてデモに変更を統合する必要があります。私の会社では、同じコード ベースを使用するいくつかの製品があり、最初はコードベースをフォークして時間を節約しましたが、今ではブランチでの進化の統合と進化のバックポートに問題があるため、代わりに同じコードまたはランタイムのコンパイル時間の差分を使用しています。だから私のアドバイス(私はコミュニティではありません:))はブランチしないことです

于 2012-11-15T22:50:44.270 に答える
0

どのテクノロジーを使用しているかはわかりませんが、PHP には環境フラグ (testing、development、production) があります。env フラグを使用すると、システムの動作を反映するようにさまざまなランタイム変数を設定できます。サブドメイン (demo.yourdomain.com など) を env に関連付けて設定し、システムの動作方法を定義できます (たとえば、ダミー データベースからデータを取得する)。

http://php.net/manual/en/reserved.variables.environment.php

それが役に立てば幸い。

于 2015-07-21T16:44:40.290 に答える