C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

異なるシステム間のWebサービスの呼び出し

[トピック内 32 記事 (1 - 20 表示)]  << 0 | 1 >>

■90929 / inTopicNo.1)  異なるシステム間のWebサービスの呼び出し
  
□投稿者/ passop (5回)-(2019/05/14(Tue) 12:18:29)

分類:[ASP.NET (VB)] 

以前、こちらのスレで質問させて頂いた件で
その解決策として、Webサービスを利用することにしました。

http://bbs.wankuma.com/index.cgi?mode=al2&namber=90870

そのWebサービスのサンプルを作成するときに
行き詰まったため、質問させて頂きます。

サンプルは以下のような構成にしました。

システムA (サーバー側)Webサービスを配置
システムB (クライアント側)JavaスクリプトにてWebサービスを呼び出す

システムAとシステムBが別サーバーの場合はシステムBのalertメッセージが表示されない
(サンプルでtestボタン入力しても応答なし※)

システムAとシステムBが同一サーバーの場合は正しく実行されます。
(サンプルでtestボタン入力でHello Worldと表示される※)

※システムAとシステムBのサーバーとは別のパソコンを使用して実行
ちなみにこのパソコンを利用してVisualStadioで実行した場合はエラーになります。
(サンプルでtestボタン入力で0 errorと表示)

システムAとシステムBが別サーバーの場合でも正しく動作するようにしたいのですが、
何かエラーになる原因を調査する方法はないでしょうか?

(サーバー側プログラム)

Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.ComponentModel

' この Web サービスを、スクリプトから ASP.NET AJAX を使用して呼び出せるようにするには、次の行のコメントを解除します。
<System.Web.Script.Services.ScriptService()> _
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class WebService1


    Inherits System.Web.Services.WebService

    ''' <summary>
    ''' 共通関数クラス
    ''' </summary>
    Private TestCls As New TestClass

    <WebMethod()> _
    Public Function HelloWorld() As String
        Return "Hello World"
    End Function

End Class


(クライアント側プログラム)
<div style="width:400px; background-color:#ffffff; color:#000000;">
<input type="button" value="test" onclick="webservicetest()"/>
</div>

<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>

<script type="text/javascript">
    //WebServiceのテスト
    function webservicetest() {
        var url = "http://ifc-server2012/nctest2/hu/HU0540.asmx";
        $.ajax({
            type: "POST",
            url: url + "/HelloWorld",
            data: null,
            contentType: "application/json; charset=utf-8",
            success: OnSuccessCall,
            error: OnErrorCall
        });
        function OnSuccessCall(response) {
            alert(response.d);
        }


        function OnErrorCall(response) {
            alert(response.status + " " + response.statusText);
        }
    }
  
 </script>

引用返信 編集キー/
■90930 / inTopicNo.2)  Re[1]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ WebSurfer (1814回)-(2019/05/14(Tue) 12:32:08)
No90929 (passop さん) に返信

> システムA (サーバー側)Webサービスを配置
> システムB (クライアント側)JavaスクリプトにてWebサービスを呼び出す

システム A, B の違いが分からないのですが・・・

基本的に Ajax ではクロスドメインでの要求には制約があることはご存知ですか?
その制約に引っかかっているということはありませんか?
引用返信 編集キー/
■90931 / inTopicNo.3)  Re[1]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ PANG2 (281回)-(2019/05/14(Tue) 12:57:17)
No90929 (passop さん) に返信

> システムAとシステムBが別サーバーの場合でも正しく動作するようにしたいのですが、

こちらでクロスドメインを意識した回答をしています。
http://bbs.wankuma.com/index.cgi?mode=al2&namber=90870
引用返信 編集キー/
■90932 / inTopicNo.4)  Re[2]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ passop (6回)-(2019/05/14(Tue) 13:03:23)
No90930 (WebSurfer さん) に返信
>
> システム A, B の違いが分からないのですが・・・
>
> 基本的に Ajax ではクロスドメインでの要求には制約があることはご存知ですか?
> その制約に引っかかっているということはありませんか?

システムA・・・動画から静止画をつくるシステム
システムB・・・その静止画を取り込んで紹介するシステム

こちらのスレでWebサービスを利用したらということでしたので、
そのサンプルを作成しております。

http://bbs.wankuma.com/index.cgi?mode=al2&namber=90870

おっしゃる通り、クロスドメイン制約にひっかかっているようです。
このようなシステムAとシステムBが別サーバーの場合に
Webサービスを利用するのは難しいのでしょうか?

引用返信 編集キー/
■90933 / inTopicNo.5)  Re[2]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ passop (7回)-(2019/05/14(Tue) 13:16:58)
No90931 (PANG2 さん) に返信
>こちらでクロスドメインを意識した回答をしています。
>http://bbs.wankuma.com/index.cgi?mode=al2&namber=90870

PANG2さん申し訳ありませんが、理解できておりませんでした。

今回のWebサービスのサンプル(HelloWorld)の場合でしたら、
どのようにすればクロスドメインを意識したWebサービスになるのでしょうか?

引用返信 編集キー/
■90934 / inTopicNo.6)  Re[3]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ WebSurfer (1815回)-(2019/05/14(Tue) 13:29:27)
No90932 (passop さん) に返信

> このようなシステムAとシステムBが別サーバーの場合に
> Webサービスを利用するのは難しいのでしょうか?

いろいろ手はあると思います。例えば、

(1) ブラウザ ⇔ システム B の Web サーバー ⇔ システム A の Web サービスという
  構成にしてシステム B にシステム A の Web サービスへのサービス参照を追加し、
  普通に SOAP で通信する。

(2) システム B は Windows Forms などでも良いのであれば、(1) と同様にサービス参
  照を追加して普通に SOAP で通信する。JSON 文字列をやり取りしたいのであれば、
HttpClient とか HttpWebRequest を利用して Web サービスに要求をかけるする。

(3) どうしてもブラウザから異なるドメインのシステム A の Web サービスと Ajax で
  通信したいということであれば、JSONP とか CORS で対応する。
引用返信 編集キー/
■90936 / inTopicNo.7)  Re[3]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ PANG2 (282回)-(2019/05/14(Tue) 13:55:16)
2019/05/14(Tue) 13:58:10 編集(投稿者)

No90933 (passop さん) に返信

> どのようにすればクロスドメインを意識したWebサービスになるのでしょうか?

■ブラウザ
$.ajax({
url: "/HelloWorldB", //自サーバ

■システムB
<WebMethod()> _
Public Function HelloWorldB() As String
Return システムA.HelloWorldA() 'システムAのHelloWorldAメソッドを呼ぶ
End Function

■システムA
<WebMethod()> _
Public Function HelloWorldA() As String
Return "Hello World"
End Function

クロスドメインはWebサーバ側で行う。
引用返信 編集キー/
■90937 / inTopicNo.8)  Re[3]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ WebSurfer (1816回)-(2019/05/14(Tue) 14:01:01)
No90932 (passop さん) に返信

> システムA・・・動画から静止画をつくるシステム
> システムB・・・その静止画を取り込んで紹介するシステム

以前のスレッドを拝見しました。

システム A というのは ASP.NET Web アプリで、動画(.mp4 ファイル)が Web サーバーに保存されていて、
ユーザーがブラウザでシステム A にアクセスして動画をダウンロードして再生し、任意の場所で静止させて
そのスナップショットを撮るということですか?

コードを見ると、その時点ではスナップショット画像はブラウザにしかないように見えます。

そうだとすると、システム B をいかように作ろうと何ともならないように思いますけど。そのあたりどうす
るのですか?
引用返信 編集キー/
■90939 / inTopicNo.9)  Re[4]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ PANG2 (283回)-(2019/05/14(Tue) 14:35:51)
No90937 (WebSurfer さん) に返信
> コードを見ると、その時点ではスナップショット画像はブラウザにしかないように見えます。
>
> そうだとすると、システム B をいかように作ろうと何ともならないように思いますけど。そのあたりどうす
> るのですか?

私の回答は、canvasに描画したスナップショット画像をWebSurferさんの方法で自サーバにアップロードする
ということでしたが、無理でしょうか?

canvas の画像をアップロード
http://surferonwww.info/BlogEngine/post/2015/07/02/upload-image-drawn-on-html5-canvas.aspx

引用返信 編集キー/
■90940 / inTopicNo.10)  Re[4]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ passop (8回)-(2019/05/14(Tue) 14:53:05)
No90937 (WebSurfer さん) に返信

> システム A というのは ASP.NET Web アプリで、動画(.mp4 ファイル)が Web サーバーに保存されていて、
> ユーザーがブラウザでシステム A にアクセスして動画をダウンロードして再生し、任意の場所で静止させて
> そのスナップショットを撮るということですか?
>
> コードを見ると、その時点ではスナップショット画像はブラウザにしかないように見えます。
>
> そうだとすると、システム B をいかように作ろうと何ともならないように思いますけど。そのあたりどうす
> るのですか?

システム構成は以下のようになっています。

システムA・・・サーバーA
システムB・・・サーバーB

それ以外にパソコン(タブレット)があって、
そのパソコンのクライアントのcanvasに描画しているので
サーバーBにアップロードできるものと考えていました。

無理でしょうか?

引用返信 編集キー/
■90942 / inTopicNo.11)  Re[5]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ WebSurfer (1817回)-(2019/05/14(Tue) 16:23:41)
No90939 (PANG2 さん) に返信
>
> 私の回答は、canvasに描画したスナップショット画像をWebSurferさんの方法で自サーバにアップロードする
> ということでしたが、無理でしょうか?

すみません、先のスレッドの PANG2 さんの回答は見ていませんでした。(質問者さんの一番最初の質問し
か見ていませんでした)

システム A の Web サーバーに何らかの手段でブラウザにある静止画像をアップロードすれば、システム A
の Web サーバーから取得する手段はあると思います。

でも、それならシステム B を介する必要はなくて、ユーザーはブラウザで直接システム A のWeb サーバー
にアクセスして保存された静止画像をダウンロードすれば済むと思うのですが・・・

質問者さんはよくわからない状態で迷走している感じです。
引用返信 編集キー/
■90943 / inTopicNo.12)  Re[5]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ WebSurfer (1818回)-(2019/05/14(Tue) 16:45:30)
No90940 (passop さん) に返信

> システム構成は以下のようになっています。
>
> システムA・・・サーバーA
> システムB・・・サーバーB
>
> それ以外にパソコン(タブレット)があって、
> そのパソコンのクライアントのcanvasに描画しているので
> サーバーBにアップロードできるものと考えていました。

一体どういうことを考えているのか分かりません。

このスレッドの質問を見る限り、

(1) Web サービスはシステム A の Web サーバーにある

(2) ユーザーはブラウザでシステム B の Web サーバーにアクセスする

(3) システム B の Web サーバーからブラウザに応答が返ってくる

(4) 応答に含まれる jQuery ajax のコードで、システム A の Web サービスにアクセスして
  "Hello World" という文字列(本番では静止画像データ?)を取得する

・・・ということのように見えます。

違います? 違うのでしたら、どこがどのように違うのか詳細に書いてください。

違わないとすると、何故「サーバーBにアップロード」という話になるのですか? システム A
の Web サーバーにアップロードしないと、上記 (1) 〜 (4) が成り立たないと思うのですが、
いかがですか?

失礼ながら、よくわからなくて迷走しているように思えます。全体的なシナリオ・ストーリー
を書いてください。



引用返信 編集キー/
■90944 / inTopicNo.13)  Re[6]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ passop (9回)-(2019/05/14(Tue) 17:22:16)
No90943 (WebSurfer さん) に返信
>でも、それならシステム B を介する必要はなくて、ユーザーはブラウザで直接システム A のWeb サーバー
>にアクセスして保存された静止画像をダウンロードすれば済むと思うのですが・・・
>
>質問者さんはよくわからない状態で迷走している感じです。

説明が下手で申し訳ありません。

具体的には

システムAはWebRTCを利用したWebカメラのシステム
システムBはWebカメラでとった商品画像を確認するシステム
(サンプルでは動画から静止画をとるでしが・・・)

当初、システムBで運用していたのですが、
商品の現物を確認するため、写真にとるという考えで
Webカメラのシステムをつくることになりました。

そのため、商品を指定して写真を表示する必要があります。

システムAとシステムBの利用者が別々の場合もありますので、
単にシステムAでたくさんとった写真を参照できるだけでは不可です。

Webカメラのシステムはhttpsでしか利用できないため、
レンタルサーバーを利用しようと考えています。

システムAで動画から静止画像を作成後にダウンロードして、
システムBの方でその画像を取り込めば、できそうですが、
ダウンロードファルダから画像を探すのは間違いの原因となりそうなので
もっと違う方法がないかということで質問させて頂きました。

今までWebサービスは使用したことがなかったので、
こちらで試しにサンプルをつくったのですが、
"Hello World"が話をややこしくしたようです。

以上が簡単ではありますが、シナリオストーリーです。

引用返信 編集キー/
■90945 / inTopicNo.14)  Re[7]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ WebSurfer (1819回)-(2019/05/14(Tue) 17:44:02)
No90944 (passop さん) に返信

No90943 に対してきちんと返事してください。
引用返信 編集キー/
■90947 / inTopicNo.15)  Re[8]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ passop (10回)-(2019/05/14(Tue) 18:17:06)
No90945 (WebSurfer さん) に返信

>No90943 に対してきちんと返事してください。

私の考えですが、以下のようになります。

(1) Web サービスはシステム A の Web サーバーにある
⇒ システム B の Web サーバーに必要と考えていました。
  (クロスドメインの場合はシステム AのWebサーバーにも必要なんですね)

(2) ユーザーはブラウザでシステム B の Web サーバーにアクセスする
⇒ 静止画像をとる人はシステム Aにアクセスする
  ※静止画像を参照する人はシステム Bを利用します。

(3) システム B の Web サーバーからブラウザに応答が返ってくる
⇒ システム B に静止画像をアップロードしたいです。

(4) 応答に含まれる jQuery ajax のコードで、システム A の Web サービスにアクセスして
 "Hello World" という文字列(本番では静止画像データ?)を取得する
⇒ 静止画像をアップロードした結果、成功したというメッセージを受け取りたいです。

引用返信 編集キー/
■90948 / inTopicNo.16)  Re[7]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ PANG2 (284回)-(2019/05/14(Tue) 18:43:02)
No90944 (passop さん) に返信
> 今までWebサービスは使用したことがなかったので、
> こちらで試しにサンプルをつくったのですが、
> "Hello World"が話をややこしくしたようです。

逆です。
Hello Worldが動かなったのが本題ですよね。
まずは、問題を解決しましょう。
そのあと、この仕組をどう活かせるか考えればよいのでは?

引用返信 編集キー/
■90950 / inTopicNo.17)  Re[9]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ WebSurfer (1820回)-(2019/05/14(Tue) 19:25:21)
No90947 (passop さん) に返信

> 私の考えですが、以下のようになります。
>
> (1) Web サービスはシステム A の Web サーバーにある
> ⇒ システム B の Web サーバーに必要と考えていました。
>   (クロスドメインの場合はシステム AのWebサーバーにも必要なんですね)
>
> (2) ユーザーはブラウザでシステム B の Web サーバーにアクセスする
> ⇒ 静止画像をとる人はシステム Aにアクセスする
>   ※静止画像を参照する人はシステム Bを利用します。
>
> (3) システム B の Web サーバーからブラウザに応答が返ってくる
> ⇒ システム B に静止画像をアップロードしたいです。
>
> (4) 応答に含まれる jQuery ajax のコードで、システム A の Web サービスにアクセスして
>  "Hello World" という文字列(本番では静止画像データ?)を取得する
> ⇒ 静止画像をアップロードした結果、成功したというメッセージを受け取りたいです。

そのレスを見ると話が通じるとは思えません。

仕事でやっているのですよね? 上司、先輩に聞きましょう。聞けない環境にあるというなら
それは組織として製品品質を担保することができないということです。


引用返信 編集キー/
■90951 / inTopicNo.18)  Re[4]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ キングダム (23回)-(2019/05/14(Tue) 20:40:31)
組織として製品品質を担保することができないという結論を出されたかたがおられるようですが
議題は異なるシステム間のWebサービスの呼び出しをどうしますかってことなので
そちらの話に戻した方が良いと思います

方針決めて課題を一つずつ解決するだけですね

・システムAで画像を作ります
・システムBで画像を見ます
・システムAとシステムBで画像を連携したいです

ということですよね

PANG2さんが示されてるように
システムAで画像を作ってシステムAのサーバーにアップロード
システムAのサーバーサイドのプログラムからシステムBのWebサービスを呼ぶ
という方針でいんじゃないかと思います

あとは作業を細分化して片付けるだけです
・システムAで画像を作る
・システムAのサーバーに画像をアップロード
・システムAのサーバーサイドのプログラムからシステムBのWebサービスを呼ぶ

やってみてできなかったわからなかったところがあれば
また聞いていただくのがいんじゃないかと

一応ですが私はpassopさんの質問が下手だとは思いませんでした
何をやろうとしてるのかよくわかりますし何をやったのかもよくわかりました
一部の声の大きい人がネガティブなことを言ってしまうとそれが総意だと
思われかねないのでそんなこと全然ないですよということをお伝えしておきます

引用返信 編集キー/
■90956 / inTopicNo.19)  Re[5]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ passop (12回)-(2019/05/15(Wed) 09:07:15)
No90951 (キングダム さん) に返信

今回のトピックと前回のトピックでシステムAとシステムBが入れ替わっていて、
WebSurferさんの回答のときにシステムAとシステムBを逆で回答しまい、
WebSurferさんを混乱させてしまったようです。

WebSurferさん、どうも申し訳ありませんでした。

もう1度、前提を以下のように戻します。

(前提)
・システムAで画像を見ます。
・システムBで画像を作ります。
・システムAとシステムBで画像を連携したいです。

システムA・・・社内サーバー
システムB・・・公開サーバー

(1) システムAには静止画像をアップロードするWebサービスがあります。
(2) システムBにはシステムAのWebサービスを呼び出すWebサービスがあります。
(3) ユーザーは画像を作るため、ブラウザでシステムBの Web サーバーにアクセスする

このときにシステムAのWebサービスは公開されていないため、
システムBのサーバーサイドのプログラムからシステムAのWebサービスを呼ぶことは
不可能ですよね。

システムAのWebサーバーが公開されていないことを
前提に入れてなくて、重ね重ね申し訳ありませんでした。

WebSurferさんから提案のあった、
以下の方法に方針を変えようと考えていますが、
どうでしょうか?

>(3) どうしてもブラウザから異なるドメインのシステム A の Web サービスと Ajax で
> 通信したいということであれば、JSONP とか CORS で対応する。

引用返信 編集キー/
■90963 / inTopicNo.20)  Re[6]: 異なるシステム間のWebサービスの呼び出し
 
□投稿者/ PANG2 (285回)-(2019/05/15(Wed) 10:51:52)
No90956 (passop さん) に返信
> (前提)
> ・システムAで画像を見ます。
> ・システムBで画像を作ります。
> ・システムAとシステムBで画像を連携したいです。

わけ分からなくなった。
何らかの事情でMP4ファイルを公開サーバに置くとして、
「画像を見ます」のページを公開サーバに置く理由はなんでしょうか?

引用返信 編集キー/

このトピックをツリーで一括表示

次の20件>
トピック内ページ移動 / << 0 | 1 >>

管理者用

- Child Tree -