Rumah  >  Artikel  >  Java  >  Cara perkhidmatan web melaksanakan panggilan antara muka dan pemindahan objek antara projek springboot

Cara perkhidmatan web melaksanakan panggilan antara muka dan pemindahan objek antara projek springboot

WBOY
WBOYke hadapan
2023-06-03 12:09:061611semak imbas

1. Ensiklopedia Baidu

Perkhidmatan Web ialah aplikasi berasaskan web bebas platform, gandingan rendah, serba lengkap, boleh atur cara yang boleh menggunakan XML terbuka (bahasa markup universal standard) Subset) standard untuk menerangkan, menerbitkan, menemui, menyelaras dan mengkonfigurasi aplikasi ini untuk membangunkan aplikasi teragih dan saling kendali.

Teknologi Perkhidmatan Web membolehkan aplikasi berbeza berjalan pada mesin berbeza untuk bertukar-tukar data atau berintegrasi antara satu sama lain tanpa memerlukan perisian atau perkakasan pihak ketiga tambahan yang khusus. Aplikasi yang dilaksanakan mengikut spesifikasi Perkhidmatan Web boleh bertukar-tukar data antara satu sama lain tanpa mengira bahasa, platform atau protokol dalaman yang mereka gunakan. Perkhidmatan Web ialah modul serba lengkap dan menerangkan kendiri yang boleh digunakan pada rangkaian dan boleh melaksanakan fungsi perniagaan tertentu. Perkhidmatan Web juga mudah digunakan kerana ia berdasarkan beberapa piawaian industri konvensional dan teknologi sedia ada, seperti subset XML dan HTTP di bawah bahasa penanda universal standard. Perkhidmatan Web mengurangkan kos antara muka aplikasi. Perkhidmatan web menyediakan mekanisme biasa untuk menyepadukan proses perniagaan merentas perusahaan atau bahkan merentas berbilang organisasi.

2. Sokongan teknikal untuk perkhidmatan web

Untuk merealisasikan penciptaan aplikasi yang diedarkan, platform Perkhidmatan Web mesti menggunakan satu set protokol. Mana-mana platform mempunyai kaedah perwakilan data dan sistem jenisnya. Untuk mencapai kebolehoperasian, platform Perkhidmatan Web mesti menyediakan sistem jenis standard untuk berkomunikasi sistem jenis yang berbeza dalam platform yang berbeza, bahasa pengaturcaraan dan model komponen. Protokol ini ialah:

1, XML dan XSD

XML ialah bahasa penanda yang digunakan untuk menandakan dokumen elektronik untuk menjadikannya berstruktur dan merupakan format asas untuk mewakili data dalam platform Perkhidmatan Web. Selain mudah dibuat dan dianalisis, kelebihan utama XML ialah ia bebas platform dan bebas vendor. XML mengikut keperluan tatabahasa spesifikasi W3C, memisahkan bentuk dan kandungan, mempunyai perihalan diri yang baik, mudah dikembangkan, dan mempunyai banyak perpustakaan pembangunan pihak ketiga, menjadikannya sangat sesuai untuk penghantaran maklumat antara sistem seni bina yang berbeza. Apabila aplikasi XML menjadi semakin meluas, XML telah menjadi standard pertukaran data de facto kerana kelebihannya dalam banyak senario aplikasi. XML telah dicipta oleh World Wide Web Consortium (W3C) XML SchemaXSD yang dibangunkan oleh W3C mentakrifkan satu set jenis data standard dan menyediakan bahasa untuk melanjutkan set jenis data ini.
Platform Perkhidmatan Web menggunakan XSD sebagai sistem jenis data. Apabila anda menggunakan bahasa seperti VB NET atau C# untuk membina Perkhidmatan Web, untuk mematuhi standard Perkhidmatan Web, semua jenis data yang anda gunakan mesti ditukar kepada jenis XSD. Jika anda mahu ia digunakan oleh organisasi yang berbeza pada platform yang berbeza dan dengan perisian yang berbeza, anda juga perlu membungkusnya dengan sesuatu. Perkara ini adalah protokol, seperti SOAP.

2. SOAP

SOAP ialah Simple Object Access Protocol, yang merupakan protokol ringan untuk bertukar-tukar maklumat berkod XML (subset Standard Universal Markup Language), yang mampu bertukar-tukar data berstruktur antara sistem maklumat yang berbeza, adalah bentuk pelaksanaan arus perdana Perkhidmatan Web. Ia mempunyai tiga aspek utama: sampul XML mentakrifkan rangka kerja untuk menerangkan kandungan maklumat dan cara memproses kandungan, peraturan untuk mengekod objek program ke dalam objek XML dan konvensyen untuk melaksanakan panggilan prosedur jauh (RPC). SOAP boleh menjalankan mana-mana protokol pengangkutan lain.

SOAP mentakrifkan rangka kerja berdasarkan protokol HTTP yang menerangkan perkara dalam mesej, siapa yang menghantarnya, siapa yang harus menerima dan memprosesnya, dan cara memprosesnya. Ia menyeragamkan format data dengan mentakrifkan sampul SOAP (Envelops), merangkum data XML dalam sampul surat untuk pertukaran maklumat, dan membolehkan kesalingoperasian antara sistem heterogen.
Perkhidmatan Web berharap untuk menyedari bahawa sistem yang berbeza boleh memanggil satu sama lain melalui "dialog perisian-perisian", memecahkan ketidakserasian antara aplikasi perisian, tapak web dan pelbagai peranti, dan mencapai matlamat "penyatuan lancar berdasarkan Web".

3. WSDL

Bahasa Penerangan Perkhidmatan Web WSDL ialah dokumen penerangan rasmi yang disediakan dalam cara yang boleh dibaca oleh mesin dan berdasarkan XML (subset daripada Bahasa Penanda Universal Standard). terangkan Perkhidmatan Web dan fungsi, parameter dan nilai pulangannya. Kerana ia berdasarkan XML, WSDL boleh dibaca mesin dan boleh dibaca manusia.

4. UDDI

Tujuan UDDI adalah untuk mewujudkan piawaian untuk e-dagang ialah satu set piawaian pelaksanaan pusat pendaftaran maklumat yang diedarkan untuk Perkhidmatan Web , dan juga termasuk satu set piawaian pelaksanaan untuk protokol capaian yang membolehkan perusahaan mendaftarkan Perkhidmatan Web yang mereka sediakan supaya perusahaan lain boleh menemuinya.

5. Memanggil RPC dan pemesejan

Perkhidmatan Web itu sendiri sebenarnya melaksanakan komunikasi antara aplikasi. Kita boleh menggunakan dua cara untuk melaksanakan komunikasi antara aplikasi: panggilan prosedur jauh (RPC) dan pemesejan. Apabila menggunakan RPC, konsep pelanggan adalah untuk memanggil prosedur jauh pada pelayan, biasanya dengan membuat instantiating objek jauh dan memanggil kaedah dan sifatnya. Sistem RPC cuba untuk mencapai jenis ketelusan kedudukan: pelayan mendedahkan antara muka objek jauh, dan pelanggan bertindak seolah-olah ia menggunakan antara muka objek ini secara tempatan Ini menyembunyikan maklumat asas dan pelanggan tidak memerlukannya sama sekali. Tahu mesin yang mana objek itu dihidupkan.

3. Senario aplikasi dan keburukan perkhidmatan web

1. Senario aplikasi perkhidmatan web

Kekuatan 1: Komunikasi merentas firewall
Jika aplikasi mempunyai Dengan beribu-ribu. daripada pengguna yang diedarkan di seluruh dunia, komunikasi antara pelanggan dan pelayan akan menjadi masalah yang sukar. Kerana biasanya terdapat firewall atau pelayan proksi antara klien dan pelayan. Dalam kes ini, menggunakan DCOM tidak semudah itu, dan biasanya tidak mudah untuk menerbitkan program klien kepada sebilangan besar pengguna. Pendekatan tradisional ialah memilih untuk menggunakan penyemak imbas sebagai pelanggan, menulis banyak halaman ASP, dan mendedahkan lapisan tengah aplikasi kepada pengguna akhir. Akibatnya pembangunan adalah sukar dan program ini sukar untuk dikekalkan.

Jika komponen peringkat pertengahan digantikan dengan WebService, komponen peringkat pertengahan boleh dipanggil terus daripada antara muka pengguna, dengan itu menghapuskan langkah mencipta halaman ASP. Untuk memanggil WebService, anda boleh terus menggunakan klien SOAP seperti MicrosoftSOAP Toolkit atau .NET, atau anda boleh menggunakan klien SOAP yang dibangunkan sendiri dan kemudian menyambungkannya kepada aplikasi. Ia bukan sahaja memendekkan kitaran pembangunan, ia juga mengurangkan kerumitan kod dan meningkatkan kebolehselenggaraan aplikasi. Aplikasi tidak perlu menavigasi ke "halaman hasil" yang sepadan setiap kali ia memanggil komponen peringkat pertengahan.

Pemaju aplikasi peringkat perusahaan semua tahu bahawa perusahaan selalunya perlu menyepadukan pelbagai program yang ditulis dalam bahasa yang berbeza dan berjalan pada platform yang berbeza, dan penyepaduan ini memerlukan banyak masa pembangunan. Aplikasi selalunya perlu mendapatkan data daripada program yang dijalankan pada kerangka utama IBM atau menghantar data ke kerangka utama atau aplikasi UNIX. Pelbagai perisian selalunya perlu disepadukan pada platform yang sama, walaupun ia datang dari vendor perisian yang berbeza. Aplikasi lain boleh menggunakan kaedah standard untuk mengakses kefungsian dan data yang didedahkan melalui WebService.

Kekuatan 2: Penyepaduan Aplikasi
Pembangun aplikasi peringkat perusahaan semua tahu bahawa perusahaan selalunya perlu menyepadukan aplikasi yang ditulis dalam bahasa berbeza​​​dan dijalankan pada pelbagai platform disepadukan, dan penyepaduan ini memerlukan banyak usaha pembangunan. Aplikasi selalunya perlu mendapatkan data daripada program yang dijalankan pada kerangka utama IBM atau menghantar data ke kerangka utama atau aplikasi UNIX. Pelbagai perisian selalunya perlu disepadukan pada platform yang sama, walaupun ia datang dari vendor perisian yang berbeza. Aplikasi lain boleh menggunakan kaedah standard untuk mengakses kefungsian dan data yang didedahkan melalui WebService.

Sebagai contoh, terdapat program log masuk pesanan untuk log masuk pesanan baharu daripada pelanggan, termasuk maklumat pelanggan, alamat penghantaran, kuantiti, harga, kaedah pembayaran, dll., terdapat juga program pelaksanaan pesanan untuk Pengurusan penghantaran barangan sebenar. Kedua-dua program adalah daripada vendor perisian yang berbeza. Apabila pesanan baru tiba, program kemasukan pesanan akan memberitahu program pelaksanaan pesanan untuk menghantar barang. Dengan menambahkan lapisan WebService di atas program pelaksanaan pesanan, program pelaksanaan pesanan boleh "mendedahkan" fungsi "AddOrder". Dengan cara ini, setiap kali pesanan baharu tiba, program log masuk pesanan boleh memanggil fungsi ini untuk menghantar barangan.

Ciri 3: Penyepaduan B2B
Menggunakan WebService untuk menyepadukan aplikasi boleh menjadikan pemprosesan perniagaan dalaman syarikat lebih automatik. Tetapi apa yang berlaku apabila urus niaga menjangkau pembekal dan pelanggan, menolak sempadan syarikat? Penyepaduan transaksi perniagaan merentas syarikat sering dipanggil penyepaduan B2B.

WebService ialah kunci kepada penyepaduan B2B yang berjaya. Melalui WebService, syarikat boleh "mendedahkan" aplikasi perniagaan utama kepada pembekal dan pelanggan yang ditetapkan. Contohnya, dengan "mendedahkan" sistem pesanan elektronik dan sistem invois elektronik, pelanggan boleh menghantar pesanan secara elektronik, dan pembekal boleh menghantar invois pembelian bahan mentah secara elektronik. Sememangnya ini bukan konsep baru, EDI (Electronic Document Interchange) sudah lama begini. Walau bagaimanapun, pelaksanaan WebService jauh lebih mudah daripada EDI, dan WebService berjalan di Internet dan boleh dilaksanakan dengan mudah di mana-mana sahaja di dunia, jadi kos operasinya agak rendah. Walau bagaimanapun, WebService bukanlah penyelesaian lengkap untuk pertukaran dokumen atau penyepaduan B2B seperti EDI. Untuk mencapai penyepaduan, sebagai tambahan kepada WebService, banyak komponen lain diperlukan.

Kelebihan terbesar menggunakan WebService untuk melaksanakan penyepaduan B2B ialah kesalingoperasian boleh dicapai dengan mudah. Selagi logik perniagaan "terdedah" dan menjadi WebService, mana-mana rakan kongsi yang ditetapkan boleh memanggil logik perniagaan ini, tanpa mengira platform yang sistem mereka berjalan atau bahasa pembangunan yang mereka gunakan. Ini sangat mengurangkan masa dan kos yang dibelanjakan untuk penyepaduan B2B, membolehkan banyak perusahaan kecil dan sederhana yang tidak mampu EDI mencapai penyepaduan B2B.
Penggunaan Semula Perisian dan Data

"Penggunaan semula perisian ialah topik penting dengan pelbagai bentuk dan tahap pelaksanaan yang berbeza-beza." Bentuk paling asas ialah modul kod sumber atau penggunaan semula peringkat kelas, dan bentuk lain ialah penggunaan semula komponen bentuk binari.

Pada masa ini, komponen perisian boleh guna semula seperti kawalan jadual atau kawalan antara muka pengguna menduduki sebahagian besar pasaran. Penggunaan semula perisian jenis ini sangat terhad kerana ia terhad kepada kod dan data tidak boleh digunakan semula. Sebabnya adalah lebih mudah untuk menerbitkan komponen dan juga kod sumber, tetapi tidak begitu mudah untuk menerbitkan data, melainkan ia adalah data statik yang tidak kerap berubah.

Semasa menggunakan semula kod, webService juga boleh menggunakan semula kod di sebalik data. Menggunakan WebService, anda tidak perlu lagi membeli dan memasang komponen perisian daripada pihak ketiga seperti sebelum ini, dan kemudian memanggil komponen ini daripada aplikasi anda hanya perlu menghubungi WebService jauh secara terus. Sebagai contoh, untuk mengesahkan alamat yang dimasukkan oleh pengguna dalam aplikasi, anda hanya perlu menghantar alamat terus ke WebService yang sepadan ini akan membantu anda menyemak alamat jalan, bandar, wilayah, poskod dan maklumat lain untuk mengesahkan alamat. Adakah ia berada di kawasan poskod yang sepadan? Pembekal WebService boleh mengenakan bayaran untuk perkhidmatan berdasarkan masa atau bilangan penggunaan. Adalah mustahil untuk melaksanakan perkhidmatan sedemikian melalui penggunaan semula komponen Dalam kes itu, anda mesti memuat turun dan memasang pangkalan data yang mengandungi maklumat seperti alamat jalan, bandar, wilayah dan kod pos, dan pangkalan data ini tidak boleh dikemas kini dalam masa nyata.

Satu lagi situasi penggunaan semula perisian adalah untuk menyepadukan fungsi beberapa aplikasi. Contohnya, anda ingin membina aplikasi portal pada LAN supaya pengguna boleh menyemak pakej FedEx, menyemak keadaan pasaran saham, mengurus jadual mereka sendiri dan membeli tiket wayang dalam talian. Terdapat banyak vendor aplikasi di Web sekarang, semuanya telah melaksanakan fungsi ini dalam aplikasi mereka. Sebaik sahaja mereka "mendedahkan" fungsi ini melalui WebService, mereka boleh dengan mudah menyepadukan semua fungsi ini ke dalam laman portal anda dan menyediakan pengguna dengan antara muka yang bersatu dan mesra.

Pada masa hadapan, banyak aplikasi akan menggunakan WebService untuk melanjutkan struktur aplikasi berasaskan komponen semasa ke dalam struktur hibrid komponen/WebService Anda boleh menggunakan fungsi yang disediakan oleh WebService pihak ketiga dalam aplikasi, atau anda boleh tambah anda sendiri Fungsi aplikasi disediakan kepada orang lain melalui WebService. Dalam kedua-dua kes, kod dan data di sebalik kod boleh digunakan semula.

2. Kelemahan perkhidmatan web

Kelemahan 1: Aplikasi bersendirian

Pada masa ini, perniagaan dan individu masih menggunakan banyak aplikasi desktop. Sesetengah daripada mereka hanya perlu berkomunikasi dengan program lain pada mesin. Dalam kes ini adalah lebih baik untuk menggunakan API tempatan dan elakkan menggunakan WebService. COM sesuai untuk bekerja dalam keadaan ini kerana ia kecil dan pantas. Perkara yang sama berlaku untuk perisian pelayan yang berjalan pada pelayan yang sama. Adalah lebih baik untuk menggunakan COM atau API tempatan lain secara langsung untuk membuat panggilan antara aplikasi. Walaupun WebService juga sesuai untuk senario ini, ia akan menggunakan banyak sumber dan tidak akan mencapai sebarang faedah yang besar.

Kelemahan 2: Aplikasi isomorfik dalam LAN
Dalam banyak aplikasi, semua program dibangunkan dengan VB atau VC, dan semuanya menggunakan COM di bawah platform windows yang berjalan pada LAN yang sama. Sebagai contoh, terdapat dua aplikasi pelayan yang perlu berkomunikasi antara satu sama lain, atau terdapat program klien Win32 atau WinForm yang ingin menyambung ke program pelayan lain pada LAN. Dalam program ini, menggunakan DCOM akan menjadi lebih cekap daripada SOAP/http. Begitu juga, jika program .NET ingin menyambung ke program .NET lain pada LAN, .NET remoting harus digunakan. Menariknya, dalam .NET remoting, anda juga boleh menentukan untuk menggunakan SOAP/http untuk membuat panggilan WebService. Walau bagaimanapun, adalah lebih baik untuk membuat panggilan RPC secara terus melalui TCP, yang jauh lebih cekap.

Ringkasnya, selagi ada kaedah lain yang lebih berkesan dan boleh dilaksanakan daripada WebService dari perspektif struktur aplikasi, maka jangan gunakan WebService.

4. Contoh kod perkhidmatan web

Realisasikan penggemblengan antara muka antara projek yang berbeza dan pindahkan data objek melalui perkhidmatan web~

Kod projek bahagian pelayan

1

<!--webservice-->
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web-services</artifactId>
 </dependency>
 <dependency>
     <groupId>org.apache.cxf</groupId>
     <artifactId>cxf-rt-frontend-jaxws</artifactId>
     <version>3.1.12</version>
 </dependency>
 <dependency>
     <groupId>org.apache.cxf</groupId>
     <artifactId>cxf-rt-transports-http</artifactId>
     <version>3.1.12</version>
 </dependency>

2. kelas konfigurasi konfigurasi

package com.guor.config;

import com.guor.service;
import com.guor.service.implImpl;
import org.apache.cxf.Bus;
import org.apache.cxf.bus.spring.SpringBus;
import org.apache.cxf.jaxws.EndpointImpl;
import org.apache.cxf.transport.servlet.CXFServlet;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.xml.ws.Endpoint;

@Configuration
public class CxfConfig {

    @Bean
    public ServletRegistrationBean createServletRegistrationBean() {
        return new ServletRegistrationBean(new CXFServlet(), "/WebService/*");
    }

    @Bean(name = Bus.DEFAULT_BUS_ID)
    public SpringBus springBus() {
        return new SpringBus();
    }

    @Bean
    public WebService myService() {
        return new WebServiceImpl();
    }

    @Bean
    public Endpoint endpoint() {
        EndpointImpl endpoint = new EndpointImpl(springBus(), myService());
        endpoint.publish("/api");
        return endpoint;
    }

}

3 Antara Muka

package com.guor.service;

import com.guor.entity.dto.User;

import javax.jws;

@WebService(name = "WebService", // 暴露服务名称
        targetNamespace = "http://service.guor.com"// 命名空间,一般是接口的包名倒序
)
public interface WebService {

    User sendInfo(User user);
}
package com.guor.service.impl;

import com.guor.entity.dto.User;
import com.guor.service;
import org.springframework.stereotype.Service;

import javax.jws;


@WebService(serviceName = "WebService", // 与接口中指定的服务name一致
        targetNamespace = "http://service.guor.com", // 与接口中的命名空间一致,一般是接口的包名倒
        endpointInterface = "com.guor.service"// 接口地址
)
@Service
public class WebServiceImpl implements WebService {

    @Override
    public User sendInfo(User user) {
        return user;
    }
}

Kod projek pelanggan:

1 🎜>2. Kelas alat perkhidmatan web

package com.guor.service;

import com.guor.entity.dto.User;

import javax.jws;

@WebService(name = "WebService", // 暴露服务名称
        targetNamespace = "http://service.guor.com"// 命名空间,一般是接口的包名倒序
)
public interface WebService {

    User sendInfo(User user);
}

Atas ialah kandungan terperinci Cara perkhidmatan web melaksanakan panggilan antara muka dan pemindahan objek antara projek springboot. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam