ホームページ  >  記事  >  バックエンド開発  >  PHP が Web サービスを呼び出す方法の概要 application_PHP チュートリアル

PHP が Web サービスを呼び出す方法の概要 application_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:14:33972ブラウズ

1.1、Web Service基本概念

Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。

XML:(Extensible Markup Language)扩展型可标记语言。面向短期的临时数据处理、面向万维网络,是Soap的基础。

Soap:(Simple Object Access Protocol)简单对象存取协议。是XML Web Service 的通信协议。当用户通过UDDI找到你的WSDL描述文档后,他通过可以SOAP调用你建立的Web服务中的一个或多个操作。SOAP是XML文档形式的调用方法的规范,它可以支持不同的底层接口,像HTTP(S)或者SMTP。

WSDL:(Web Services Description Language) WSDL 文件是一个 XML 文档,用于说明一组 SOAP 消息以及如何交换这些消息。大多数情况下由软件自动生成和使用。

UDDI (Universal Description, Discovery, and Integration) 是一个主要针对Web服务供应商和使用者的新项目。在用户能够调用Web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服务端来编制软件,UDDI是一种根据描述文档来引导系统查找相应服务的机制。UDDI利用SOAP消息机制(标准的XML/HTTP)来发布,编辑,浏览以及查找注册信息。它采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。

1.2、XML Web Service的特点

Web Service的主要目标是跨平台的可互操作性。为了实现这一目标,Web Service 完全基于XML(可扩展标记语言)、XSD(XML Schema)等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。因此使用Web Service有许多优点:

1、跨防火墙的通信

如果应用程序有成千上万的用户,而且分布在世界各地,那么客户端和服务器之间的通信将是一个棘手的问题。因为客户端和服务器之间通常会有防火墙或者代理服务器。传统的做法是,选择用浏览器作为客户端,写下一大堆ASP页面,把应用程序的中间层暴露给最终用户。这样做的结果是开发难度大,程序很难维护。 要是客户端代码不再如此依赖于HTML表单,客户端的编程就简单多了。如果中间层组件换成Web Service的话,就可以从用户界面直接调用中间层组件,从而省掉建立ASP页面的那一步。要调用Web Service,可以直接使用Microsoft SOAP Toolkit或.net这样的SOAP客户端,也可以使用自己开发的SOAP客户端,然后把它和应用程序连接起来。不仅缩短了开发周期,还减少了代码复杂度,并能够增强应用程序的可维护性。同时,应用程序也不再需要在每次调用中间层组件时,都跳转到相应的"结果页"。

2、应用程序集成

企业级的应用程序开发者都知道,企业里经常都要把用不同语言写成的、在不同平台上运行的各种程序集成起来,而这种集成将花费很大的开发力量。应用程序经常需要从运行的一台主机上的程序中获取数据;或者把数据发送到主机或其它平台应用程序中去。即使在同一个平台上,不同软件厂商生产的各种软件也常常需要集成起来。通过Web Service,应用程序可以用标准的方法把功能和数据"暴露"出来,供其它应用程序使用。

XML Web services 提供了在松耦合环境中使用标准协议(HTTP、XML、SOAP 和 WSDL)交换消息的能力。消息可以是结构化的、带类型的,也可以是松散定义的。

3、B2B的集成

B2B 指的是Business to Business,as in businesses doing business with other businesses,商家(泛指企业)对商家的电子商务,即企业与企业之间通过互联网进行产品、服务及信息的交换。通俗的说法是指进行电子商务交易的供需双方都是商家(或企业、公司),她们使用了Internet的技术或各种商务网络平台,完成商务交易的过程。

Web サービスは B2B 統合を成功させる鍵です。 Web サービスを通じて、企業は指定されたサプライヤーや顧客に主要なビジネス アプリケーションを単に「公開」することができます。Web サービスはインターネット上で実行され、世界中のどこでも簡単に実装でき、運用コストは比較的低くなります。 Web サービスは B2B 統合の重要な部分にすぎず、統合を実現するには他の多くの部分が必要です。 Web サービスを使用して B2B 統合を実装する最大の利点は、相互運用性を簡単に実現できることです。ビジネス ロジックが「公開」され、Web サービスになる限り、指定されたパートナーは、システムがどのプラットフォームで実行されているか、または使用している開発言語に関係なく、これらのビジネス ロジックを呼び出すことができます。これにより、B2B 統合にかかる時間とコストが大幅に削減されます。

4. ソフトウェアとデータの再利用

Web サービスでは、コードの再利用と同時に、コードの背後にあるデータも再利用できます。 Web サービスを使用すると、以前のようにサードパーティからソフトウェア コンポーネントを購入してインストールする必要がなくなり、アプリケーションからこれらのコンポーネントを呼び出すだけで済みます。ソフトウェアの再利用のもう 1 つの状況は、複数のアプリケーションの機能を統合し、Web サービスを通じてそれらを「公開」することです。これらすべての機能をポータル サイトに簡単に統合し、統一された使いやすいインターフェイスをユーザーに提供できます。 サードパーティの Web サービスが提供する機能をアプリケーションで使用したり、独自のアプリケーションの機能を Web サービスを通じて他のユーザーに提供したりできます。どちらの場合も、コードとその背後にあるデータは再利用できます。

上記の説明からわかるように、Web サービスは、Web を介して相互運用したり、リモート呼び出しを行ったりする場合に最も役立ちます。ただし、Web サービスがまったくメリットをもたらさない状況によっては、次のような欠点もあります。

1. スタンドアロンアプリケーション

現在、企業や個人は依然として多くのデスクトップアプリケーションを使用しています。それらの中には、単にマシン上の他のプログラムと通信する必要があるものもあります。この場合、Web サービスを使用せず、ローカル API を使用するのが最善です。 COM は小さくて高速であるため、この状況での作業に最適です。同じサーバー上で実行されているサーバー ソフトウェアについても同様です。もちろん、このような状況でも Web サービスを使用することはできますが、消費量が多すぎるだけでなく、メリットもありません。

2. LAN のいくつかのアプリケーション

多くのアプリケーションでは、すべてのプログラムが Windows プラットフォームで COM を使用し、同じ LAN 上で実行されます。これらのプログラムでは、SOAP/HTTP よりも DCOM を使用した方がはるかに効率的です。同様に、.net プログラムが LAN 上の別の .net プログラムに接続したい場合は、.net Remoting を使用する必要があります。実際、.net Remoting では、SOAP/HTTP を使用して Web サービス呼び出しを行うように指定することもできます。ただし、TCP 経由で直接 RPC 呼び出しを行う方がはるかに効率的です。

1.3、XML Webサービスのアプリケーション

1. オリジナルの XML Web サービスは、通常、株価、天気予報、スポーツのスコアなど、アプリケーションに簡単に組み込むことができる情報源です。

2. 既存のアプリケーションを XML Web サービスとして提供すると、より強力な新しいアプリケーションを構築し、XML Web サービスを構成要素として活用できます。

たとえば、ユーザーはさまざまなサプライヤーから価格情報を自動的に取得する調達アプリケーションを開発できます。これにより、ユーザーはサプライヤーを選択し、注文を送信し、商品を受け取るまで商品の出荷を追跡できるようになります。サプライヤーのアプリケーションは、Web 上でサービスを提供するだけでなく、XML Web サービスを使用して顧客の信用を確認し、代金を回収し、運送会社との運送手続きを行うこともできます。

2. Webサービス開発

.net プラットフォームには、Web サービスの構築と使用を含む、Web サービスのサポートが組み込まれています。他の開発プラットフォームとは異なり、.net プラットフォームを使用すると、Web サービスの開発を完了するために他のツールや SDK は必要ありません。 .net Framework 自体は、サーバー側の要求プロセッサやクライアントによる SOAP メッセージの送受信のサポートなど、Web サービスを完全にサポートしています。次に、Microsoft Visual Studio .net 20058 (以下、VS.Net 2008) を使用して、簡単な Web サービスを段階的に作成して使用します。

2.1. 最も単純な Web サービスを作成する

まず、VS2005を開き、「ファイル-新しい-Webサイト」を開き、「ASP.NET Webサービス」を選択します

PHP が Web サービスを呼び出す方法の概要 application_PHP チュートリアル

Service.cs コードを見ると、VS.Net 2005 が Web サービス ファイルのデフォルト フレームワークを確立していることがわかります。元のコードは次のとおりです:

コードをコピーします コードは次のとおりです:
System.Linq を使用;
System.Web.Services を使用;
System.Xml.Linq を使用; ://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// ASP.NET AJAX を使用してスクリプトからこの Web サービスを呼び出せるようにするには、次の行のコメントを解除します。
// [System.Web.Script.Services.ScriptService]
public class Service : System.Web.Services.WebService
{
public Service () {
//設計されたコンポーネントを使用している場合は、次の行のコメントを解除してください
/ / InitializeComponent(); }
[WebMethod]
public string HelloWorld()
{ return "Hello World"; }
}
System.Web を使用;
System Web を使用します。サービス;
System.Web.Services.Protocols の使用;
System.Xml.Linq の使用;
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1) ]
// ASP.NET AJAX を使用してスクリプトからこの Web サービスを呼び出せるようにするには、次の行のコメントを解除します。
// [System.Web.Script.Services.ScriptService]
public class Service: System.Web.Services.WebService
{
public Service () {
// 設計したコンポーネントを使用する場合は、次の行のコメントを解除します
/InitializeComponent();
}
[WebMethod]
public string HelloWorld()
{
} return "Hello World";
}
}


デフォルトのプロジェクトにはすでに Hello World メソッドがあり、それを直接実行して効果を確認してください。




表示ページの画像にある「HelloWorld」ハイパーリンクをクリックして、次のページに移動します:

「呼び出し」ボタンをクリックすると、以下に示すように XML 形式で返された Web サービスの結果が表示されます。これは、Web サービス環境に問題がないことを示しており、最も単純な Web サービスについても事前に連絡していました。

PHP が Web サービスを呼び出す方法の概要 application_PHP チュートリアル

2.2. 関数を備えたシンプルな Web サービスを作成する

上記の Web サービスのマクロの理解は、実際には、外部の顧客が呼び出すことができる関数を備えた外部インターフェイスです (注: 顧客が呼び出すことができない関数もあります)。 Web サービスを作成し、それを顧客に提供します (同時に呼び出しルールも提供します)。顧客が理解していない場合でも (そして理解している場合でも)、顧客は比較的透過的な状態でサーバーから情報を取得できます。コード ファイル内で関数を作成し、この関数を外部から呼び出し可能なインターフェイス関数にしたい場合は、コード行 [WebMethod(Description="説明情報の説明] を追加する必要があります)。 function")] を関数の上に置きます。関数にこの宣言がない場合、ユーザーは関数を参照できません。次に、簡単な Web サービスの例を書き始めます。 PHP が Web サービスを呼び出す方法の概要 application_PHP チュートリアル

まずデフォルトの HelloWorld メソッドをコメントアウトし、加算、減算、乗算、除算の 4 つのメソッドを記述するだけです。

コードをコピーします

コードは次のとおりです:

System.Linq を使用;
System.Web.Services を使用;
System.Xml.Linq を使用; ://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// ASP.NET AJAX を使用してスクリプトからこの Web サービスを呼び出せるようにするには、次の行のコメントを解除します。
// [System.Web.Script.Services.ScriptService]
public class Service : System.Web.Services.WebService
{
public Service () {
//設計されたコンポーネントを使用している場合は、次の行のコメントを解除してください
/ / InitializeComponent(); }
//[WebMethod]
//public string HelloWorld()
//{
// return "Hello World";
//}
[WebMethod(Description = "Sum メソッド " ; {
return i - j;
[WebMethod(Description = " 商の求め方")]
public double Division(double i, double j)
}
}




コードをコピー

コードは次のとおりです:
System の使用;
System.Linq の使用;
System.Web の使用;
System.Web.Services の使用;
System.Web.Services.Protocols の使用;
System.Xml.Linq の使用;
[WebService(Namespace = "http ://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// ASP.NET AJAX を使用してスクリプトからこの Web サービスを呼び出せるようにするには、次の行のコメントを解除します。
// [System.Web.Script.Services.ScriptService]
public class Service: System.Web.Services.WebService
{
public Service () {
// 設計したコンポーネントを使用する場合は、次の行のコメントを解除します
/InitializeComponent();
}
//[WebMethod]
//public string HelloWorld()
//{
// return "Hello World";
//}
[WebMethod(説明 = "合計メソッド" ;
return i - j;
.
{
if (j != 0)
if (j != 0) ) return i / j;
else
return 0;
}
}



それを実行すると、以下に示すように、呼び出すことができるメソッドを作成したことがわかります。



同様に追加メソッドをクリックして、追加メソッドの呼び出しページに入ります。




上の図に示すように、パラメーターの上にパラメーター i=3、j=3 を入力し、[呼び出し] をクリックすると、以下に示すように、XML 形式で返された Web サービスの結果 (i と j を追加した結果) が表示されます
この時点で、Web サービスは単なるインターフェイスであることがわかります。
私たちにとって、焦点はインターフェイス関数の作成です。

2.3. ASP.NET を使用して Web サービスを呼び出す

まず、VS2005 を開き、「ファイル - 新しい Web サイト」を開き、「ASP.NET Web サイト」を選択します。 PHP が Web サービスを呼び出す方法の概要 application_PHP チュートリアル

保存場所と言語を選択し、「OK」をクリックしてデフォルトのページに入ります。次に、最初に Web 参照を追加し、WebService を現在のプロジェクトに導入します。方法は次のとおりです: リソース マネージャーを右クリックし、[Web 参照の追加] を選択して、ダイアログ ボックスを表示します: PHP が Web サービスを呼び出す方法の概要 application_PHP チュートリアル

URL、WebService の実行後にブラウザに表示されるアドレス (つまり、WebService がリリースされた後のアクセス アドレス) を入力し、「Go」ボタンをクリックすると、上に示されているように、参照された WebService が実行できることが表示されます。以下に示すように、インポートされた WebService ファイルがソリューションに表示されます


ここでは、Web サービスを呼び出す 4 つの方法を練習します。まず、Web サイトのフロント デスクにいくつかのコントロールを追加します。

PHP が Web サービスを呼び出す方法の概要 application_PHP チュートリアル

コードをコピーします

コードは次のとおりです:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>  
  
  
  
無标题页  
  
<ボディ>  
  
  
  
  
  
  
  
  
  
  
 
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>



無标题页












< /html>

次に、呼び出しコードをバックグラウンドで作成します。呼び出す前に、他のオブジェクトを使用する場合と同様に、最初にインスタンス化する必要があります。その後、インスタンス化メソッドを使用して WebService にアクセスできます。 。 方法。この例では、WebService 呼び出しをトリガーするボタン コントロールが動的に作成されます。バックグラウンド コードは次のとおりです。
下の図に示すように、最初の 2 つのテキスト ボックスに 2 つのオペランドを入力して、次のように入力します。中央の 2 つのオペランド ドロップダウン リストから演算子を選択し、「=」記号をクリックすると、計算結果が 3 番目のテキストボックスに出力されます。

PHP が Web サービスを呼び出す方法の概要 application_PHP チュートリアル

計算全体はローカルで実行されず、Web サーバーで計算され、結果が XML 経由で呼び出し元に返されます。そのため、プログラムを実行するときに WebService プログラムも開始する必要があります。そうしないと、例外が発生することが報告されます。以下に示すように、リモートサーバーに接続するとき:

PHP が Web サービスを呼び出す方法の概要 application_PHP チュートリアル

背景コードは次のとおりです:

コードをコピーします コードは次のとおりです: using System.Data;
using System.Web.UI;
System.Web.UI.HtmlControls を使用する;
System.Web.UI.WebControls.WebParts を使用する
public 部分クラス _Default: System.Web. UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
String selectFlag = selectOper.Value
localhost; service())。 ' ' を一緒に ' を一緒に (Num2 .Text))).ToString(); .Parse( Num2.Text))).ToString();
System の使用;
System.Configuration の使用;
System.Data の使用;
System.Linq の使用;
System.Web の使用;
System.Web.Security の使用;
System.Web.UI の使用;
System.Web の使用。 UI.HtmlControls;
System.Web.UI.WebControls の使用;
System.Web.UI.WebControls.WebParts の使用;
System.Xml.Linq の使用;
パブリック部分クラス _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
{
string selectFlag = selectOper.Value;
localhost.Service web = new localhost.Service();
もし(selectFlag.Equals("+"))
{
Result.Text =(web.addition(double.Parse(Num1.Text),double.Parse(Num2.Text))).ToString();
}
else if (selectFlag.Equals("-"))
{
Result.Text = (web.subtract(double.Parse(Num1.Text), double.Parse(Num2.Text))).ToString();
}
else if (selectFlag.Equals("*"))
{
Result.Text = (web.multiplication(double.Parse(Num1.Text), double.Parse(Num2.Text))).ToString();
}
else if (selectFlag.Equals("/"))
{
Result.Text = (web.division(double.Parse(Num1.Text), double.Parse(Num2.Text))).ToString();
}
}
}

ここまでで、単一の WebService の公開と調整が完了しました。実際のアプリケーションでは、必要に応じて、いくつかの機能が強化された単一の WebService を、複数のスクリプトにかかわらず書き込むことができ、フロー全体がこのようになっています。

http://www.bkjia.com/PHPjc/326273.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/326273.html技術記事 1.1、Web サービスの基本概念 Web サービスは、XML Web サービスとも呼ばれます。 WebService は、インターネットまたはイントラネット上の他のシステムから受信できる要求、量級の独立した ...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。