読者です 読者をやめる 読者になる 読者になる

きよくらの備忘録

「三日坊主と呼ばせない!日記」改め。主にソフトウェア開発関連の話題。

SSIで#includeするためリパースポイントを使ってみるとか。

TECH ASPネタ

クラシックASPでいろいろやってると、当然ならが当たり前のようにSSIで#includeすることが多くなるわけなのだけれど、fileでやるにしてもvirtualでやるにしても、一長一短がある。


virtualの場合は当然のようにルートから書かないといけないので、最終的な配置時の上位パスに任意のものが使えるようにする場合や、テスト時と最終配置時で仮想ディレクトリのエイリアス名を変えるようなときは都合が悪い。
というか、本番サーバ上での最終テストとして別名で仮想ディレクトリに配置してテスト、最後に仮想ディレクトリ名を入れ替える、とかしたい事が多々あるので*1
ということで、『どうしてもそうするしかない』という場合を除き、極力virtualは使いたくない。


かといってfileでやるにしても、同一アプリケーション*2内であっても、深く掘ったディレクトリの中から、上位に格納された設定情報を参照するような構成の場合、IIS側の設定で親ディレクトリの参照を有効にする必要が出てくる。もちろん、あんまりしたくない。というか、少なくとも気軽にしてはいけない、と思ってる。


少なくとも自分のアプリケーション内では、上位ディレクトリに置いた共有情報はさかのぼって参照したい。こういうときにどうするか。実体を複数おいちゃう?それも嫌だ。


で、UNIX系の環境だとどうだろう、と思うと、普通、シンボリックリンクでも張っておく、ってことになるような。
んじゃ、NTFSなら一応使える、リパースポイントでも使ってみたらどうか、と思った次第。


いろいろ検証してみよう……と思ったけど、これも結局のところリポジトリツールとあんり相性はよくないような気がしてきた。
ので、検証する気が萎えてしまった。



……結局は保守性とかを考えても、とっととクラシックASPは捨てて.Netの世界にようこそ、って感じなのかも知れません。
(VSS使って、同一プロジェクト内で共有しちゃえば……というのも一瞬考えたけど、それもだるいな。チェックアウトしたときの挙動的に使いにくいような。同一ソリューション/同一プロジェクト内だと。)


……いやいや、どうなるんだ?ファイルシステム上はハードリンクを張ってじ実体が一つ、VSS上では別ファイルの如く独立して存在する場合。片一方をチェックアウトしてるとき、もう片方はどういう扱い?
やっぱりVSSではチェックイン状態とチェックアウト状態とそれぞれ独立してて、実ファイルは書きかえられてるから、チェックアウトしてない方は、『最新に取得』とかすると、『状態が一致しないよ、書き換える?』とか聞かれることになるのかな、やっぱり。んで、そのイタチごっことか。それは萎える。

やっぱり……明日実験してみよう。

<11/16 追記>
やっぱりそのまんまでした。
VSS使うならおとなしく共有で我慢しなさいってことというか、むしろジャンクション使った上でVSS使うな、ってことのような気がしてきました。いや、よくないけど。
subversionとかだとLinuxで使ってたときはシンボリックリンクはそのままシンボリックリンクとして理解してくれていた気がするけど、Windowsで使うとどうなんだったか。

*1:というか、製造中のローカルな環境でまでいろいろパスを縛られたくない。特にレポジトリツールでソース共有して多人数で作ってる場合

*2:ここでいうアプリケーションとは、IIS上で管理するアプリケーション単位のこと