Apakah seni bina berorientasikan perkhidmatan?

Senibina berorientasikan perkhidmatan (SOA) muncul pada awal abad ini sebagai evolusi pengkomputeran terdistribusi. Sebelum SOA, perkhidmatan difahami sebagai hasil akhir dari proses pengembangan aplikasi. Dalam SOA, aplikasi itu sendiri terdiri daripada perkhidmatan. Perkhidmatan dapat disampaikan secara individu atau digabungkan sebagai komponen dalam perkhidmatan komposit yang lebih besar.

Perkhidmatan berinteraksi melalui kabel menggunakan protokol seperti REST atau SOAP (Simple Object Access Protocol). Perkhidmatan digabungkan secara longgar , yang bermaksud antara muka perkhidmatan tidak bergantung pada pelaksanaannya. Pembangun atau penyepadu sistem dapat menyusun satu atau lebih perkhidmatan ke dalam aplikasi tanpa semestinya mengetahui bagaimana setiap perkhidmatan dilaksanakan.

Artikel ini adalah gambaran keseluruhan Java SOA dan ciri-ciri utama seni bina berorientasikan perkhidmatan yang dilaksanakan menggunakan perkhidmatan web berasaskan SOAP. Saya juga akan membandingkan SOA dan perkhidmatan mikro secara ringkas dan membincangkan perbezaan antara perkhidmatan web berasaskan RESTful dan SOAP di Java.

SOA dan perkhidmatan web

SOA dan perkhidmatan web sering digabungkan, tetapi ia bukan perkara yang sama. SOA adalah seni bina yang membolehkan pemaju menggabungkan pelbagai perkhidmatan aplikasi menjadi perkhidmatan komposit yang lebih besar. SOA dapat dilaksanakan menggunakan perkhidmatan web berasaskan SOAP atau REST API, atau kadang-kadang gabungan keduanya. Penting untuk memahami bahawa di SOA, perkhidmatan adalah sumber yang tersedia dari jauh yang dapat bertindak balas terhadap permintaan. Perkhidmatan web dilaksanakan menggunakan protokol tertentu.

Mengapa seni bina berorientasikan perkhidmatan?

SOA menangani tiga cabaran perusahaan yang biasa:

  • Tindak balas dengan cepat perubahan perniagaan.
  • Manfaatkan pelaburan infrastruktur yang ada.
  • Sokong saluran interaksi baru dengan pelanggan, rakan kongsi dan pembekal.

Infrastruktur perusahaan adalah heterogen di seluruh sistem operasi, aplikasi, perisian sistem, dan infrastruktur aplikasi. Akibatnya, banyak sistem perusahaan terdiri dari aplikasi yang kompleks dan tidak konsisten yang memberikan pelbagai perkhidmatan yang saling bergantung. Aplikasi yang ada yang menjalankan proses perniagaan semasa sangat penting, jadi bermula dari awal atau mengubahnya adalah cadangan yang rumit. Tetapi perusahaan mesti dapat mengubah dan memperluas infrastruktur teknikal untuk memenuhi tuntutan perniagaan.

SOA dan perkhidmatan mikro

Microservices adalah gaya seni bina yang dikembangkan dari SOA. Kedua-duanya diedarkan seni bina dan kedua-duanya menawarkan paradigma yang dipisahkan. Walaupun arsitek berorientasikan perkhidmatan lebih berat pada infrastruktur, perkhidmatan mikro menawarkan gaya pembangunan yang lebih fleksibel dan ringan. Terdapat kebaikan dan keburukan pada keduanya, dan keduanya digunakan secara meluas. Secara umum, SOA lebih kerap dilaksanakan atau dikendalikan oleh perusahaan yang mapan yang mempunyai sumber untuk menyokong lebih banyak formaliti. Perkhidmatan mikro sering menarik minat organisasi baru atau berkembang yang memerlukan ketangkasan.

Berbanding dengan seni bina monolitik, sifat SOA yang sangat longgar menjadikannya agak lancar untuk memasukkan perkhidmatan baru atau meningkatkan perkhidmatan yang ada untuk keperluan perniagaan baru. Ini juga memberikan pilihan untuk membuat perkhidmatan habis di berbagai saluran, dan untuk mengekspos aplikasi warisan sebagai perkhidmatan, dengan demikian melindungi pelaburan infrastruktur.

Kerana ia digabungkan secara longgar, komponen SOA dapat diubah dengan kesan minimum kepada komponen lain. Komponen juga dapat ditambahkan ke arsitektur dengan cara yang standard, dan komponennya dapat ditingkatkan untuk mengatasi beban.

Sebagai contoh, pertimbangkan bagaimana perusahaan mungkin menggunakan sekumpulan aplikasi yang ada untuk membuat aplikasi rantai bekalan komposit baru. Walaupun aplikasi yang ada heterogen dan didistribusikan di pelbagai sistem, fungsinya terbuka dan diakses menggunakan antara muka standard.

Matthew Tyson

Ciri-ciri utama SOA

SOA boleh semudah satu komponen yang menggunakan perkhidmatan yang disediakan oleh komponen lain atau secanggih seperti pelbagai komponen yang berinteraksi melalui bas perkhidmatan perusahaan seperti MuleSoft's ESB. Tidak kira apa skala, kunci untuk pelaksanaan SOA yang berjaya adalah menggunakan sekecil mungkin untuk mencapai tujuan anda. Soalan pertama dan terakhir anda harus selalu: Adakah reka bentuk ini memenuhi kehendak perniagaan kita?

Tidak kira skala atau kerumitan, corak seni bina berorientasikan perkhidmatan lebih kurang sama:

  • Penyedia perkhidmatan mendedahkan titik akhir dan menerangkan tindakan yang tersedia di setiap titik akhir.
  • Pengguna perkhidmatan mengeluarkan permintaan dan mengambil maklum balas.
  • Penyedia perkhidmatan menghasilkan mesej untuk menangani permintaan.

Melaksanakan seni bina berorientasikan perkhidmatan

Untuk melaksanakan SOA anda mulakan dengan seni bina perkhidmatan asas, kemudian sediakan infrastruktur, yang bermaksud protokol dan alat lain yang memungkinkan komunikasi dan interoperabiliti. Gambar 2 menunjukkan gambarajah seni bina perkhidmatan khas.

Matthew Tyson

Dalam gambar rajah ini, tiga pengguna meminta perkhidmatan dengan menghantar mesej ke bas perkhidmatan perusahaan, yang mengubah dan mengarahkan mesej ke pelaksanaan perkhidmatan yang sesuai. A enjin peraturan perniagaan menggabungkan kaedah-kaedah perniagaan dalam perkhidmatan atau seluruh perkhidmatan. A lapisan pengurusan perkhidmatan menguruskan aktiviti seperti pengauditan, bil, dan pembalakan.

Komponen dalam seni bina ini digabungkan secara longgar, sehingga dapat ditukar atau diperbaharui dengan kesan yang relatif minimum pada aplikasi secara keseluruhan. Ini memberi syarikat fleksibiliti untuk menambah atau mengemas kini proses perniagaan jika diperlukan. Sebahagian besarnya, perubahan pada perkhidmatan individu tidak boleh mempengaruhi perkhidmatan lain.

Perkhidmatan web SOAP vs RESTful

Adalah mungkin untuk menerapkan gaya SOA dan menerapkannya dengan REST, misalnya menggunakan JAX-RS API atau Spring Boot Actuator, tetapi perbincangan itu di luar ruang untuk artikel ini. Lihat "SOAP vs REST vs JSON" untuk perbandingan berguna mengenai perkhidmatan web SOAP vs RESTful. Terdapat juga beberapa pertindihan antara perkhidmatan web RESTful dan gaya yang lebih ringan yang berkaitan dengan perkhidmatan mikro.

Perkhidmatan web berasaskan sabun

Perkhidmatan web yang dilaksanakan menggunakan SOAP masih lebih kaku daripada pelaksanaan perkhidmatan web RESTful atau perkhidmatan mikro, tetapi jauh lebih fleksibel daripada hari-hari awal SOA. Di sini kita akan melihat protokol tahap tinggi yang diperlukan untuk perkhidmatan web berasaskan SOAP.

SOAP, WSDL, dan XSD

SOAP, WSDL, dan XSD adalah infrastruktur asas pelaksanaan perkhidmatan web berasaskan SOAP. WSDL digunakan untuk menggambarkan perkhidmatan, dan SOAP adalah lapisan pengangkutan untuk mengirim pesan antara pengguna dan penyedia perkhidmatan. Perkhidmatan berkomunikasi dengan mesej yang ditentukan secara formal menggunakan XML Schema (XSD). Anda boleh menganggap WSDL sebagai antara muka perkhidmatan (sangat mirip dengan antara muka Java). Pelaksanaannya dilakukan di kelas Java, dan komunikasi di seluruh jaringan terjadi melalui SOAP. Secara fungsional, pengguna akan mencari perkhidmatan, mendapatkan WSDL untuk perkhidmatan itu, kemudian meminta perkhidmatan menggunakan SOAP.

Keselamatan perkhidmatan web

Spesifikasi WS-I Basic Profile 2.0 menangani keselamatan mesej. Spesifikasi ini menumpukan pada pertukaran kepercayaan, integriti mesej, dan kerahsiaan mesej.

Penemuan perkhidmatan web

Setelah menjadi asas penemuan perkhidmatan web, UDDI (Penerangan Sejagat, Definisi dan Integrasi) telah menjadi sejarah. Hari ini adalah biasa untuk mendedahkan perkhidmatan web berasaskan SOAP seperti yang anda lakukan dengan perkhidmatan lain, melalui URL titik akhir. Sebagai contoh, anda boleh menggunakan Antaramuka Titik Akhir Perkhidmatan JAX-WS @WebServicedan @WebMethodanotasinya.

Membangun dan menggunakan perkhidmatan web

Pembangun Java mempunyai beberapa pilihan untuk membangun dan menggunakan perkhidmatan web berasaskan SOAP, termasuk Apache Axis2 dan Spring-WS; namun, standard Java adalah JAX-WS, API Java untuk Perkhidmatan Web XML. Idea teras di sebalik JAX-WS adalah membuat kelas Java dan memberi penjelasan untuk membuat artifak yang diperlukan. Di bawah tudung, JAX-WS menggunakan beberapa pakej Java, termasuk JAXB, perpustakaan tujuan umum untuk mengikat kelas Java ke XML.

JAX-WS menyembunyikan kerumitan dan protokol yang mendasari dari pemaju, sehingga mempermudah proses menentukan dan menggunakan perkhidmatan SOAP berasaskan Java. IDE Java moden seperti Eclipse termasuk sokongan penuh untuk mengembangkan perkhidmatan web JAX-WS. Spesifikasi JAX-WS juga telah dipilih untuk pengembangan yang sedang berlangsung di Jakarta EE.

Kesimpulannya

Senibina berorientasikan perkhidmatan yang dilaksanakan dengan perkhidmatan web berasaskan SOAP memerlukan definisi perkhidmatan yang lebih tegas dan formal daripada perkhidmatan web RESTful atau perkhidmatan mikro. Namun, beberapa organisasi yang lebih besar terus menyukai gaya yang lebih formal yang diberlakukan oleh SOAP. Banyak sistem warisan berskala besar juga dibangun berdasarkan SOAP, dan beberapa sistem B2B dan dalaman memilih perkhidmatan web berasaskan SOAP untuk kontrak API mereka yang lebih formal. Sama ada anda membangun atau mengekalkan sistem perusahaan berskala besar, memahami corak SOA dan dapat menilai pilihan anda untuk melaksanakannya akan memberi anda manfaat dalam kerjaya pengaturcaraan anda.

Cerita ini, "Apa itu seni bina berorientasikan perkhidmatan?" pada asalnya diterbitkan oleh JavaWorld.