***

4739 ワード

***
1、WebServiceとは何か
簡単に言えば、WebServiceはプラットフォーム間で言語間でリモートコールを行う技術です.クロスプラットフォームとは、サービス・エンド・プログラムとクライアント・プログラムが異なるオペレーティング・システム上で実行できることを意味します.  跨言語とは、サービス側プログラムがjavaで記述される場合、クライアントプログラムは他の言語で記述することができ、javaで記述することを強制しないで、逆に成立することを意味する.リモートコールとは、1台のコンピュータAの前回のプログラムが、別のコンピュータB上の1つのオブジェクトに呼び出される方法である.例えば、天気予報システム、amazon、微信決済などは、自分のシステムサービスをwebserviceサービスの形で暴露し、第三者にこれらのサービス機能を提供するが、実際にはこれらの振り替え呼び出しの方法とコードはテンセントのサーバー上で実行されており、これらのサービスの使用率、すなわち市場占有率を拡大することができる.WebServiceは、Webを介して呼び出すことができるAPI、すなわちプログラミング方法でWebを介して呼び出すことができるアプリケーションであることを、表面的には複数の角度から理解することもできる.このWebServiceを呼び出すアプリケーションをクライアントと呼び,このWebServiceを提供するアプリケーションをサービス側と呼ぶ.深いレベルから見ると、WebServiceは相互運用可能な分散アプリケーションを構築する新しいプラットフォームであり、プラットフォームであり、標準である.アプリケーションがWeb上で相互運用性を実現する方法を定義し、Webサービス標準を通じてこれらのサービスをクエリーし、アクセスできる限り、好きな言語を使用して、好きなプラットフォームにWebサービスを書くことができます.
2、WebServiceの三要素
  SOAP、WSDL、UUDI 2.1、SOAP WebServiceがHTTPプロトコルを介してリクエストと受信結果を送信する場合、送信されたリクエスト内容と結果内容はXML形式でカプセル化され、HTTPメッセージのコンテンツフォーマットを説明するために特定のHTTPメッセージヘッダが追加され、これらの特定のHTTPメッセージヘッダとXMLコンテンツフォーマットがSOAPプロトコルである.SOAPは、Webサービスを呼び出すための標準的なRPC(リモートコール技術)メソッドを提供します.SOAPプロトコル構成:SOAPプロトコル=HTTPプロトコル+XMLデータフォーマットSOAPプロトコルはSOAPメッセージのフォーマットを定義し、SOAPプロトコルはHTTPプロトコルに基づくものであり、SOAPもXMLに基づくものであり、XMLはSOAPのデータ符号化方式である.2.2、WSDLの使用説明、WebServiceクライアントはWebServiceサービスを呼び出すには、まずこのサービスのアドレスがどこにあるか、そしてこのサービスの中でどのような方法で呼び出すことができるかを知る必要があります.だから、WebServiceサーバー側はまずWSDLファイルを通じて自分の家でどのようなサービスが対外的に呼び出すことができるかを説明しなければなりません.サービスとは何か(サービスにどのような方法があり、方法が受け入れるパラメータは何か、戻り値は何か)、サービスのネットワークアドレスはどのurlアドレスで表され、サービスはどのような方法で呼び出されるか.WSDL(Web Services Description Language)は、Web Serviceとその関数、パラメータ、戻り値を記述するXMLベースの言語である.WebServiceクライアントもサーバ側も理解できる標準フォーマットです.XMLベースなので、WSDLは機械で読むこともできるし、人で読むこともできるので、これは大きなメリットになります.最新の開発ツールでは、Webサービスに基づいてWSDLドキュメントを生成したり、WSDLドキュメントをインポートしたりして、対応するWebServiceを呼び出すプロキシクラスコードを生成することができます.2.3、UDDI uddiは産業にまたがり、プラットフォームにまたがる開放的なアーキテクチャであり、Webサービスプロバイダがインターネット上でWebサービスの情報を発表するのを助けることができる.UDDIはディレクトリサービスであり、企業はUDDIを通じてWebサービスを登録し検索することができる.簡単に言えば、UDDIはディレクトリですが、このディレクトリにはWebサービスに関する情報が格納されているだけです.
3、WebService開発
  開発は2つの部分に分けることができる:サービス側とクライアント3.1、サービス側開発 会社の内部システムの業務方法をWebServiceサービスに発表し、遠隔協力部門と個人の呼び出しに供する.(WebServiceフレームワークを使用すると、自分のビジネスオブジェクトを簡単にWebServiceサービスに公開できます.Javaの典型的なWebServiceフレームワークには、axis、xfire、cxfなどのケースがあります.cxfを利用する
  :  
@WebService
public interface IWeatherService {
    public String queryWeathcer(String city);   
}  
   :  
public class WeatherServiceImpl implements IWeatherService {

    @Override
    public String queryWeathcer(String city) {
        System.out.println("【   】   【"+city+"】   ");
        if("  ".equals(city)){
            return "  ";
        }else if("  ".equals(city)){
            return "   ";
        }else{
            return "    ";
        }
    }   
}  
    :
public class Demo {
    public static void main(String[] args) {
        //  cxf    ,@WebService             
        JaxWsServerFactoryBean jaxWsServerFactoryBean = new JaxWsServerFactoryBean();

        //    
        jaxWsServerFactoryBean.setAddress("http://localhost:8080/weatherService");

        //     
        jaxWsServerFactoryBean.setServiceBean(new WeatherServiceImpl());

        //    
        jaxWsServerFactoryBean.setServiceClass(IWeatherService.class);

        //  
        jaxWsServerFactoryBean.create();

        System.out.println("      ");
    }
}  

3.2、クライアント開発  はCXFコードを利用してクライアントコードを生成し、wsdl 2 javaコマンドはCXFが提供するクライアントを生成するツールであり、wsimportと同様に、WSDLに基づいてクライアントコードを生成することができる. wsdl 2 java共通パラメータ:-d、出力ディレクトリ-pを指定し、パケット名を指定します.このパラメータを指定しない場合、デフォルトのパケット名はWSDLのネーミングスペースの逆順序wsdl 2 java-d./です.http://localhost:8080/weatherService?wsdl
     : 
        // 1.  JaxWsProxyFactoryBean    
    JaxWsProxyFactoryBean jaxWsProxyFactoryBean = new JaxWsProxyFactoryBean();

        // 2.      
    jaxWsProxyFactoryBean.setServiceClass(IWeatherService.class);

        // 3.      
    jaxWsProxyFactoryBean.setAddress("http://localhost:8080/weatherService");

        // 4.        
    IWeatherService weatherService = (IWeatherService)jaxWsProxyFactoryBean.create();

        // 5.    
    String result = weatherService.queryWeacher("  ");
    System.out.println(result);

元のクライアントコードは、CXFが発行したWebServiceサービスを呼び出すこともできます.Cxfパブリッシュwebservice:JaxWsServerFactoryBean:パブリッシュwebserviceサービスJaxWsProxyFactoryBean:呼び出しwebserviceサービス
シーンの操作
1)クライアントタイプを考慮せず、性能を考慮せず、ウェブサービスを使用することを提案するサービス(対内/対外)を発表する2)サービス側はすでにウェブサービスを使用することを決定しており、クライアントは選択できず、ウェブサービスを使用する必要がある
適用されないシーン
1)性能を考慮する際にwebserviceを使用することを推奨しない2)同構造プログラム(企業内のシステム間のインタフェース)の下でjava用RMI(リモートメソッド呼び出し)のようなwebserviceを使用することを推奨せず、XMLに翻訳されたデータを必要としない