- - PR -
Webサービスの開発とデバッグ
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2001-10-29 17:48
Webサービスとクライアント書いていて、ふと思ったのですが。
クライアントはWebサービスへのURLが直接埋め込まれているので、Webサービスをテストマシンからサーバに持っていくと、動きません 。 さて、どう対処しましょうか? _________________ | ||||||||
|
投稿日時: 2001-10-29 18:34
埋め込まないようにします。UDDIやDISCO、ADSがキーワードとしてあげられます。 WSDL.EXEで作られるプロキシ、asmx?wsdlで作られるWSDL、みんなServicesと それ以外を1つにしていますが、これは間違っています。IBMツールのように、 WSDLもインターフェイスと実装の分離を行うべきです。そうでないと、その サービス*実装*と密結合してしまいます。 | ||||||||
|
投稿日時: 2001-10-30 13:42
インターフェースと実装が密結合することの問題は解ります。 メソッドの手前に[WebMethod]アトリビュートなんか付けて書いていたら、密結合してしまいますね。 でも、私が引っかかったのは、ちょっと違う点です。 プログラムを開発中に使うテストサーバは、テスト中のアプリだけから参照できれば良いのであって、外部からダイナミックにdiscoveryされても困るのですよ。 クライアント側がデバッグビルドの時と、リリースビルドの時で、別のサーバにアクセスするような構成を手軽に取れたら嬉しいな、というような低次元の考えだったりします _________________ | ||||||||
|
投稿日時: 2001-10-30 15:11
外出先でちょっとちゃんと調べられないのですが、
WebService クラスのターゲットの URI を示すプロパティが あって、それは Public です。 これを書き換えるようなコードを書いて、条件コンパイル すればいいのでは? 私の場合は、テストプログラムはWebページとして作っているので、 WebService を localhost で参照しておいて、公開用サーバーに 移すときはそのテストページも一緒に移してしまうという方法で 対処しています。 | ||||||||
|
投稿日時: 2001-10-30 16:15
情報感謝。 作ってみました。 デバッグビルドの場合のみ、本来指定されたURLとは別のURLにアクセスします。 なお、ConsoleApplication103.localhost.Service1はWeb参照で自動生成されたクラスです。
もちろん、動きました。 _________________ | ||||||||
|
投稿日時: 2001-10-30 17:09
?? WebMethodが問題なのではありません。そのあとのWSDLの話をしています。 とはいえ、そういうコトではなかったようで。 | ||||||||
|
投稿日時: 2001-10-30 22:44
すでに解決されているようですが。。。
Reflectionを使ってプロキシのクラスを呼び出すようにするのも一つの手かなと思います。 この場合、実行環境に持っていったときにWSDL.exeが作成するプロキシだけを 作り直せば動くように作れますね。 まぁ、開発やデバッグの手間は余計にかかるところがあるような気がしますが。。。 | ||||||||
|
投稿日時: 2001-10-31 13:46
失礼しました。 別のことを考えていたようです。 これは、生成されるWSDLファイルの中に、インターフェースの定義と、サービスの具体的な場所の両方が書いてあるのが問題だ、という認識でよろしいでしょうか? この手の話題は重要であるような気がしますので、「Webサービスをツマミにするディスカッション大会」でも取り上げると良いと思います。@IT加部さん、どうですか? ちなみに私はC#のことはやっと分かってきましたが、Webサービスは初心者なので、変なことを言うかも知れませんが、よろしく御願いいたします。 _________________ |