1

複数のアプリケーションをホストする Coldfusion サーバーがあり、すべてが独自のサブフォルダーにあります。何かのようなもの:

  • /webroot フォルダー/applicationA
  • /webroot フォルダー/applicationB

さらに、開発サーバーには、開発者ごとに特定のアプリケーションのコピーがあり、それぞれが Subversion の作業コピーです。

  • /webrootfolder/applicationA_dev1
  • /webrootfolder/applicationA_dev2
  • /webrootfolder/applicationA_dev3

Coldfusion 7 を実行しているので (アップグレードには大きな抵抗があります)、パッケージで CFC を使用したいので行き詰っています。さまざまな問題、試みられた解決策、およびこれらの問題も次のとおりです。

  • 相対コンポーネント名の使用は、パッケージが 1 つしかない場合にのみ機能します。これにより、1 つのフォルダー内でコンポーネントがごちゃごちゃになります。
  • サブパッケージの使用は、親パッケージのコンポーネントを参照しない限り機能します。これは、コンポーネントを cfargument 型として拡張、インスタンス化、または使用するときに簡単に発生するようです。
  • ルートから始まる完全な CFC パスを使用しても、開発者ごとに複数のコピーを使用することはできません。**変数で動的パスを使用することは、今のところ私の解決策でした... extendsまたはcfargumentタイプでは機能しないことに気付くまで... **サーバーマッピングの使用は、開発中は機能しません。デベロッパー コピーごとのエイリアス。コードがフォルダーに依存しないことを期待しています。** CF8+ ではなく CF7 であるため、アプリケーション固有のマッピング (Application.cfc で定義) を使用しても機能しません。
  • 必要な CFC のローカル ダミー コピーを作成し、実際の CFC の内容を (相対パス "../../" で) cfinclude することが、私の以前の解決策でした。それは機能しますが、これらのクローンがいたるところにあるのはとても面倒です. ** ごく最近、このソリューションが常に機能するとは限らないことを発見しました。Coldfusion は、さまざまな CFC に同名の関数が含まれているようで混乱しています。
  • 各開発者のマシンで開発用 Coldfusion サーバーを使用して、アプリケーション パスを常に/webrootfolder/applicationA(Mark A Kruger による提案) にします。** ここでの主な問題は、これをインストールできるようにコンピューター チームを説得することです。それには長い時間がかかるかもしれません。** ネットワーク構成に他の問題があるかもしれません (おそらく DB へのアクセスを許可するかどうかはわかりません)。これもネットワーク チームを通過し、許可されている場合でもしばらく時間がかかります。

アプリケーション/フォルダーごとに 1 つの Web サイト - ルートの変更

IIS 6 での Web サイト/アプリケーションの構成方法を時間をかけて調査しました。いくつかの調査の結果、Unix/Apache で慣れていたのと同じようにバインディングを作成できることがわかりました。現時点では、すべてのアプリケーションは Web ルートの独自のサブフォルダーにあります。たとえば、"domain.com/appA" が "/webrootfolder/applicationA" フォルダーを指すように、エイリアスが構成されます。しかし、これは依然として多数のサブパスを持つ単一の IIS Web サイトです。したがって、Coldfusion ルート (CFC およびインクルード用) は、その 1 つの Web サイトのルート (/webrootfolder) に基づいています。

簡単なテストを行ったところ、ポート 8080 (デフォルトの 80 ではなく) にバインドされた 2 つ目の IIS Web サイトをサーバー上に作成することができました。私はこれを /webrootfolder/applicationA/cfm (実際にはアプリのルート) に直接指摘しました。これにより、Coldfusion はそのフォルダーをルートとして認識し、「オブジェクト」CFC をインスタンス化して として検索し/webrootfolder/applicationA/cfm/Object.cfcます。

これはまさに私が以前の仕事で持っていたものであり、非常にうまく機能しました。とはいえ、小さな会社だったので、このソリューションには問題があるのではないかと心配しています。主に: この Web サイトに人々を誘導するにはどうすればよいですか? ポート バインドの使用は、あまりユーザー フレンドリーではありません (ユーザーは技術者ではありません)。アプリケーションごとに特定のドメインを用意するのはいいことのように思えますが、特に HTTPS が関係している場合 (そう聞いたことがあります)、コストがかかる可能性があります。サブドメインは別の解決策かもしれませんが、同様の問題があるようです.

そう...

私は何かを逃したことがありますか?「厄介な」ソリューションの1つにこだわっていますか?

Coldfusion 管理パネルと IIS 構成にアクセスできますが、ソリューションがサーバー上の他のアプリケーションのパスまたは URL に影響を与える場合、アクセスが制限される可能性が高くなります。

4

1 に答える 1

1

私はかつて、イリノイ州南部の年配の農家に釣り湖への道順を尋ねました。彼はしばらく頭をかきむしった後、私にこう言いました。:) 私はあなたがレオと同じ船に乗っているかもしれないと思います.

問題はパッケージングではなく、SDLC がベスト プラクティスに反することです。あらゆる種類の「開発」サーバーは、本番環境をミラーリングする必要があります。これは、アプローチですでにスクランブルをかけているものです。さらに、開発者はそれぞれ開発サーバーに独自のコードのコピーを持っているようです。友人と私が小さな開発ショップを始めたばかりで、開発サーバーでコードをホストし、それに対して直接開発を行った 12 年前のことを思い出します。見つけた。

すべきこと、開発サーバーを本番環境のミラーとして実行することです。次に、開発者が自分のワークステーションでコードを実行できるようにします。ローカル開発と呼んでいます。次に、ソース管理を使用して相違点を処理したり、ブランチをマージしたりします。その場合、各開発者は意図したとおりにパッケージ化を使用でき、このような問題は脇に追いやられます。

いわば「ゴルディアスの結び目を切る」解決策を提供していることに気づきましたが、それは正しい解決策です. あなたは現在の構成でいくらかの労力と時間を無駄にしていると思います。本番環境への展開や、QA 用のコードのアセンブルでさえ、現時点ではあなたにとって大きな課題であると思います。

于 2014-11-13T17:57:41.627 に答える