2

免責事項、私は開発者ではなく、私の会社のテクニカルサポートおよびシステム管理者です。私は詳細を追いかけているのではなく、単に私が達成したいことが可能かどうかという考えです。

社内のクラシックASPレガシーeコマースソフトウェアアプリケーションの数百のインスタンスをホストしており、クライアントと私たち自身による無数のカスタマイズのため、バージョン管理は悪夢であり、カスタムコードは管理できず、新機能のリリースと大量展開をあきらめました誰がどこでどのパッチを必要としているかを追跡できないためのバグ修正。

この質問と並行して、私はこれをより適切に自動化するための管理スクリプトを作成しています。

しかし、私が本当にやりたいのは、最小限の労力を使用して、アプリケーションコード(データベースではない)を単一のコードベースに移植することです。私が持っている質問:

  • ASPは、呼び出されているホストヘッダーに応じて、さまざまなデータベースへの接続を比較的効率的に処理できますか?ルーチンの基本的な拡張を計画し、ホストヘッダーがmetadbでdbクレデンシャルを検索し、それに応じてアプリケーション接続文字列をロジックに設定します。

  • アプリケーションは、キャッシュの目的でデータベースからWebサーバーにいくつかのファイルを書き込みます。これを処理するには、この動作を/masterapp/customer1/specificfile.htmのようなものに書き込んでから、/specificfile.htmへの参照を変更してエミュレートします。コード内で/masterapp/ショップ名/specificfile.htmのようになります。明らかに、specificfile.htmを書き込むルーチンは、それに応じて新しい場所に書き込みます。これは合理的だと思いますか?

  • 画像やcsvファイルなどの他のウェブサーバーにバインドされたストア固有のコンテンツURLを理想的に変更せずに作業を続ける必要があります。ASPはロジックを使用して/images/example.jpgの取得リクエストを/masterapp/ショップ名/images/example.jpgにリダイレクトできますかまたは/shopname/images/example.jpgホストヘッダーに依存しますか?それとも、isapirewriteを介してそれを行うことができますか?(すでに使用しています)

これらが最大の課題だと思います。これらのそれぞれをどのように実装するかについての完全なプロジェクト計画は必要ありません。それが可能かどうかを知りたいだけです。答えが「はい」の場合、サポート時間を節約できるため、開発で上司を売ることができるはずです。社内の開発者がこれを管理できることを願っています。

4

1 に答える 1

0

これは可能であるはずであり、最初からそのように開発されたコードで同様の結果を達成しました。これを改造しているので、もっと難しくなりますが、それは実際の質問とは別のものです。

実際のポイントに答えるには:

  • おそらく、DB 接続文字列は既にアプリケーション変数または設定ファイルに含まれていますか? その場合、global.asa Session_OnStart に、ホスト ヘッダーを読み取り、適切な DB 文字列を選択するロジックが必要です。これはハードコーディングするか、サイト、その DB 文字列ファイルパスなどを保存し、詳細をセッションオブジェクトにプルする「コントロール」DB を持つことができます。

  • これは上記に関連し、DB からキャッシュ ストレージの場所を取得するか、各サイトに「ディレクトリ名に適した」ベース名を付けます。"/masterapp/" & Session("strSiteBaseName") & "/cache/somefile.htm"

  • IIS7 を使用している場合は、URL 書き換えモジュールを使用してこれを処理できます。IIS6 を使用している場合は、URL 書き換えを実行できるサード パーティ ツールがあります。繰り返しますが、これを行ったので、動作することを保証できます。本当に賢くしたい場合は、マスターアプリに書き換えファイルを作成させ、web.config に「タッチ」して IIS にロードさせることができます。

ホスト ヘッダーに関する 1 つの「落とし穴」は、www および no-www レコードを処理することを忘れないことです。

各サイトのカスタムコードについても言及しましたが、私はこれを本番環境では行っていませんが、アプリの外部でテストしており、関数が宣言された後に関数を書き直すことができます。変数名でインクルードすることはできませんが、テキスト ファイルを読み込んで実行できるため、カスタム関数を作成したり、包括的なアプリの個々のインスタンスに固有のコア関数を変更したりする方法があります。

于 2011-01-21T17:44:38.133 に答える