Apa itu layanan Web dan mengapa itu penting? Apa itu "layanan web" dalam bahasa Inggris sederhana

Alexander Kachanov

Ide layanan web dikembangkan oleh raksasa industri komputer seperti Sun, Oracle, HP, Microsoft dan IBM. Ide ini bukanlah hal baru, namun ini merupakan langkah maju yang besar menuju akses yang lebih mudah terhadap program melalui web. Berdasarkan format komunikasi standar, layanan web dapat sepenuhnya mengubah cara kita berpikir tentang cara membuat situs web.

Apa itu layanan web?

Berkat layanan web, fungsi program apa pun dapat tersedia melalui Internet. Dengan demikian, program seperti PHP, ASP, skrip JSP, JavaBeans, objek COM, dan semua alat pemrograman favorit kami lainnya sekarang dapat mengakses beberapa program yang berjalan di server lain (yaitu layanan web) dan menggunakan respons yang diterima darinya di situs webnya, atau aplikasi.

Katakanlah, jika saya perlu melakukan beberapa tugas pemrograman, dan saya terlalu sibuk (atau tidak punya pikiran untuk memikirkan kembali hal itu), saya dapat menggunakan layanan layanan web yang akan diakses situs saya melalui Internet. Dengan meneruskan permintaan dengan parameter ke layanan web, saya berharap menerima respons yang berisi hasil pelaksanaan permintaan saya.

Siapapun yang pernah bekerja di Akhir-akhir ini Dengan surat panas, telah menemukan sebagian layanan web: sistem otentikasi pengguna Paspor adalah salah satu layanan yang termasuk dalam inisiatif Microsoft .NET. Saat ini tersedia secara gratis, sehingga pembuat situs web dapat dengan mudah menerapkan otentikasi pengguna di situs mereka.

Dasar-dasar

Prinsip di balik layanan web ternyata sangat sederhana. Dan mereka tidak menambahkan hal baru ke dunia komputasi terdistribusi dan Internet:

  • orang yang bertanggung jawab atas layanan web menentukan format permintaan ke layanan webnya dan tanggapannya
  • komputer mana pun di jaringan membuat permintaan ke layanan web
  • layanan web memproses permintaan, melakukan beberapa tindakan, dan kemudian mengirimkan respons

Tindakan ini dapat berupa, misalnya, menampilkan harga saham, menampilkan harga suatu produk tertentu, menyimpan entri dalam kalender janji temu, menerjemahkan teks dari satu bahasa ke bahasa lain, atau memeriksa nomor kartu kredit.

Standar pada intinya

Alasan mengapa kita semua tiba-tiba tertarik pada layanan web adalah karena layanan tersebut didasarkan pada standar, protokol terbuka untuk pertukaran dan transfer data.

Sebelumnya, banyak perusahaan mengembangkan standar dan format miliknya sendiri. Dan sekarang untuk bekerja kita hanya perlu mengetahui XML sederhana (eXtensible Markup Language), yang ditransmisikan melalui protokol HTTP lama yang sudah dikenal. Artinya, informasi tentang cara kerja layanan web tersedia untuk semua orang, dan pengembang web yang akrab dengan teknologi ini dapat mulai bermain dengan layanan web saat ini.

Perbedaan antara layanan web dan teknologi lain yang ditemui pengembang (misalnya, DCOM, bernama pipa, RMI) adalah bahwa layanan web didasarkan pada standar terbuka, mudah dipelajari, dan standar ini didukung secara luas di seluruh dunia. dan platform Windows.

Simple Object Access Protocol (SOAP) adalah protokol standar yang dikembangkan oleh W3C. Ini mendefinisikan format permintaan ke layanan web.

Pesan antara layanan web dan penggunanya dikemas dalam amplop SOAP. Pesan berisi permintaan untuk melakukan suatu tindakan, atau tanggapan - hasil dari melakukan tindakan ini. Amplop dan isinya dikodekan dalam XML dan cukup mudah dimengerti. Ini adalah tampilan permintaan SOAP sederhana ketika dikirim melalui HTTPP ke layanan web:

xmlns:env="http://www.w3.org/2001/06/soap-envelope">


xmlns:m="http://www.somesite.com/Postcode">
WC1A8GH
Inggris


Elemen kunci dari amplop SOAP cukup mudah untuk diketahui: ini adalah dua parameter ( ("kode pos") dan ("negara")), yang terkandung dalam elemen yang disebut . Elemen ini adalah nama layanan web tempat kita membuat permintaan. Data lain dalam amplop, seperti pengkodean teks dan versi SOAP, membantu layanan web memproses permintaan dengan benar.

Dan jawabannya akan terlihat seperti ini:

xmlns:env="http://www.w3.org/2001/06/soap-envelope" >

env:encodingStyle="http://www.w3.org/2001/06/soap-encoding"
xmlns:m="http://www.somesite.com/Postcode">
Ya


Pesan ini bahkan lebih mudah untuk diuraikan. Elemen dalam permintaan kami diubah menjadi elemen sebagai jawaban atas permintaan tersebut. Elemen ini hanya berisi satu elemen , yang nilainya menunjukkan benar atau tidaknya kode pos kita. Jadi, melalui keajaiban SOAP, kami telah membuat kueri yang berguna bagi kami. Sebagai respons melalui jaringan, kami menerima jenis respons tertentu dalam XML.

Sekarang tentang UDDI

Meskipun protokol SOAP sederhana, layanan web tidak akan banyak berguna jika kita tidak dapat menemukannya. Untungnya, IBM, Microsoft dan Ariba melangkah maju dan menciptakan proyek Deskripsi Universal, Penemuan dan Integrasi (UDDI), yang mereka harap akan menjadi katalog umum dari semua layanan web di Web.

Sistem UDDI memungkinkan perusahaan untuk mengekspos layanan web mereka kepada publik. Direktori ini berfungsi sebagai buku telepon untuk semua layanan web. Pendaftaran di direktori UDDI gratis, dan pendiri proyek berharap direktori ini berisi deskripsi semua, semua, semua layanan di seluruh Web, sehingga untuk menemukan layanan web yang diinginkan, Anda hanya perlu beralih ke satu UDDI direktori.

Bagaimana cara kerjanya

Jadi bagaimana cara menemukan layanan web yang tepat?

Bayangkan saya seorang pengembang situs web, dan klien saya meminta saya untuk menambahkan ke situs tersebut fitur baru: Anda perlu menambahkan pemeriksaan kode pos ke formulir pendaftaran Anda.

Untuk melakukan pemeriksaan ini, saya perlu membuat database semua kode pos di 30 negara tempat perusahaan kami menjalankan bisnis, dan kemudian memeriksa apakah kode pos tersebut sesuai dengan kota yang ditentukan dalam pendaftaran saat mendaftar. Tapi saya tidak punya datanya, dan menurut saya pengumpulan data seperti itu harus mengeluarkan banyak uang.

Daripada mengeluarkan uang untuk membeli database, menulis kode sendiri, memastikan integritas dan kebenaran semua data dan men-debug skrip, saya hanya pergi ke direktori UDDI dan melihat apakah ada layanan web yang dapat melakukan pekerjaan itu. Saya . Sesampainya di situs http://www.uddi.org/, saya meluncurkan pencarian dan menemukan layanan terbaik dari XYZ Corp.

Saya meninjau dengan cermat definisi format layanan web (definisinya ditulis dalam WSDL (Bahasa Deskripsi Layanan Web), memastikan bahwa layanan tersebut melakukan apa yang saya perlukan. Kemudian saya menanyakan rekan-rekan saya tentang reputasi XYZ Corp., dan mencari tahu bahwa itu solid, dan kemudian menghubungi XYZ Corp tentang harga. Jika harga untuk mengakses layanan ini sesuai anggaran saya, saya menulis halaman JSP sederhana untuk situs saya yang memanggil layanan web XYZ Corp., dan lihatlah, verifikasi instan muncul di kode pos situs.

Ini sepadan dengan waktu Anda

Meskipun Anda tidak ada hubungannya dengan pemrograman atau teknologi pengembangan situs web, layanan web layak untuk dipelajari lebih lanjut. Bayangkan gambaran bagaimana Anda mendiskusikan situs web baru dengan klien, mendiskusikan semua fungsi proyek baru. Semuanya berjalan baik: anggaran memenuhi harapan pelanggan, dia menyukai sketsa rencana lokasi, dan menyukai contoh antarmuka. Segalanya tampak berfungsi.

Dan tiba-tiba mereka teringat suatu fungsi yang sangat kompleks. Hanya dengan menyebutkannya saja, wajah pengembang web Anda berubah menjadi hijau dan dia mulai tersedak dan batuk. Ini adalah pengembang yang memberi Anda sinyal bahwa mengembangkan fitur ini akan membutuhkan banyak uang dan waktu atau tidak mungkin dilakukan dengan anggaran sebesar itu.

Hilangkan rasa takutmu! Saya siap menjamin bahwa sudah ada layanan web di Internet yang siap memberi Anda fungsi yang diperlukan, dan biaya penggunaan layanan web ini akan jauh lebih rendah daripada biaya pengembangan analognya secara mandiri. Dengan cara ini Anda menyelamatkan pengembang Anda dari sakit kepala yang tidak perlu, klien Anda pemborosan yang tidak diperlukan uang hanya dengan menghabiskan beberapa menit menelusuri direktori UDDI.

Pengembangan layanan

Tentu saja, pengembang tidak harus puas hanya dengan layanan web yang dibuat oleh orang lain. Dengan menggunakan salah satu perangkat berikut, Anda dapat membuat layanan web Anda sendiri dan menyediakan layanannya kepada pengguna Internet lainnya.

Pilihan alat untuk mengembangkan layanan web sangat luas. Ini mencakup alat dari perusahaan seperti Sun (Open Net), Microsoft (.NET), (e-services), dan IBM (Web Services). Ada juga kerangka kerja sumber terbuka. Misalnya, Proyek Mono bertujuan untuk menggantikan toolkit .NET Microsoft dengan menyediakan kompiler, runtime, dan perpustakaan untuk menjalankan layanan web yang sama di semua platform, termasuk Unix.

Meskipun beragam server dan alat pengembangan layanan web, semuanya mendukung protokol SOAP, bahasa XML, dan sistem UDDI yang sama.

Minus

Sebelum saya benar-benar meninggalkan karir saya sebagai programmer dan mengabdikan diri untuk menggunakan layanan web, saya harus bertanya pada diri sendiri pertanyaan: "Gambarannya terlalu bagus. Apa yang salah dengan itu?" Sayangnya, potensi besar layanan web harus dibayar dengan:

  • Menggunakan XML sebagai format transfer data berarti pesan Anda akan berukuran sangat besar: tag XML itu sendiri memakan banyak ruang, dan ini membebani kami dalam membuat, mengirimkan, dan menafsirkan pesan.
  • Sejak kita menggunakan komputer jarak jauh Kami sepenuhnya bergantung pada Internet untuk menjalankan fungsi tertentu, yang menciptakan terlalu banyak tautan yang tidak dapat diandalkan dalam rantai antara server web kami dan layanan web.
  • Saat ini, hanya sedikit perusahaan yang membuat layanan web, dan hanya sedikit perusahaan yang menggunakannya. Debugging dan perbaikan sistem web services masih memerlukan waktu yang cukup lama.
  • Sistem perizinan dan penagihan atas penggunaan layanan web belum dapat diterima oleh pengembang. Karena jumlah layanan web yang masih terlalu sedikit, sebagian besar perusahaan berusaha memberikan kesan yang baik kepada klien potensial mereka dengan sengaja mengurangi biaya layanan dan menawarkan persyaratan lisensi yang menguntungkan. Masih perlu waktu sebelum biaya sebenarnya dari layanan web menjadi jelas.

Ketika layanan web mengambil tempat dan tersedia untuk semua orang, mereka akan menjadi bantuan yang sangat berharga bagi pengembang web. Mereka akan memberi kita akses fleksibel ke kekuatan penuh semua komputer di Jaringan. Sudah waktunya bagi pembuat situs web untuk tertarik pada layanan web dan mempelajari lebih lanjut tentang apa yang bisa mereka peroleh dari layanan tersebut.

Anotasi: Area penggunaan. Keuntungan. Fitur pengembangan layanan web untuk platform .NET. Deskripsi dan penemuan layanan web

Apa itu Layanan Web XML?

Seiring berkembangnya teknologi informasi, pendekatan berbeda untuk menulis program muncul: modular pemrograman, didorong oleh peristiwa pemrograman, berorientasi pada komponen pemrograman dan desain. Kelanjutan logis dari pendekatan ini adalah berorientasi pada layanan pengembangan perangkat lunak.

Penggunaan pendekatan berorientasi layanan memungkinkan kita berbicara tentang penggunaan kembali di tingkat makro (tingkat layanan), dan bukan di tingkat mikro (tingkat objek). Pendekatan berorientasi layanan menggunakan standar sederhana dan diterima secara umum, yang memungkinkan berbagai macam aplikasi untuk berbagi fungsionalitas satu sama lain. Layanan dapat ditulis menggunakan berbagai bahasa pemrograman, pada berbagai platform. Selain itu, layanan dapat diterapkan secara terpisah atau sebagai bagian dari paket perangkat lunak di mana pun di dunia dan dengan demikian akan menyediakan akses ke fungsionalitasnya melalui jaringan.

Mari kita menelepon melayani sumber daya yang mengimplementasikan fungsi bisnis dan memiliki properti berikut:

  • dapat digunakan kembali;
  • ditentukan oleh satu atau lebih antarmuka eksplisit yang tidak bergantung pada teknologi;
  • digabungkan secara longgar dengan sumber daya serupa lainnya dan dapat digunakan melalui protokol komunikasi yang memungkinkan sumber daya berinteraksi satu sama lain.

Kasus khusus dari suatu layanan adalah layanan web XML.

layanan Web XML adalah jenis aplikasi web khusus yang:

  • dikerahkan di server web;
  • menerbitkan metode web yang dapat dipanggil oleh klien eksternal;
  • menunggu penerimaan permintaan HTTP, yang merupakan perintah untuk memanggil metode web;
  • mengeksekusi metode web dan mengembalikan hasil.

Berbeda dengan aplikasi web tradisional, layanan web tidak memiliki antarmuka pengguna. Sebaliknya, ia memiliki antarmuka pemrograman, yaitu layanan web yang memaparkan fungsi (metode web) yang dapat dipanggil dari jarak jauh (misalnya, melalui Internet). Layanan web tidak dimaksudkan untuk melayani pengguna akhir. Tugasnya adalah memberikan layanan kepada aplikasi lain, baik itu aplikasi web, aplikasi GUI, atau aplikasi konsol.

Layanan Web dapat memberikan informasi real-time mengenai harga saham, memeriksa kartu kredit, atau melaporkan ramalan cuaca. Layanan web sama beragamnya dengan aplikasi biasa.

Layanan web bukan milik perusahaan tertentu. Ini adalah standar industri berdasarkan protokol terbuka (SOAP, HTTP, dll.). Layanan web digunakan pada berbagai platform (termasuk server yang menjalankan Windows atau UNIX). Layanan web dapat dikembangkan menggunakan banyak alat pengembangan (dari editor teks hingga keluarga Microsoft Visual Studio).

Metode sebagian besar layanan web dipanggil dengan permintaan HTTP yang berisi pesan SOAP SOAP adalah bahasa XML (kosa kata XML) untuk memanggil prosedur jarak jauh melalui HTTP dan protokol lainnya (deskripsi lengkap SOAP http://www.w3.org/TR/SOAP) .

Tempat layanan web di antara teknologi panggilan jarak jauh lainnya

Ada beberapa protokol dan teknologi pemanggilan jarak jauh: Microsoft Distributed Component Object Model (DCOM), Common Object Request Broker Architecture (CORBA) dari Object Management Group, Sun's Remote Method Invocation (RMI), . Jarak Jauh .NET, Layanan Web XML.

Semua teknologi berbasis komponen (DCOM, CORBA, dan RMI) telah berhasil digunakan dalam aplikasi Intranet selama bertahun-tahun. Mereka menyediakan arsitektur yang andal dan terukur. Namun, ada dua masalah serius dalam penggunaan teknologi ini di Internet. Pertama, mereka tidak berinteraksi dengan baik satu sama lain. Semua teknologi beroperasi pada objek, tetapi detailnya berbeda secara signifikan: manajemen siklus hidup, dukungan konstruktor, dan tingkat dukungan warisan. Aspek kedua yang lebih penting adalah bahwa fokus pada interaksi RPC mengarah pada konstruksi sistem yang digabungkan secara erat berdasarkan panggilan eksplisit ke metode objek.

Berbeda dengan teknologi ini, Layanan Web XML dan. NET Remoting diterapkan sepenuhnya pendekatan berorientasi objek untuk pemrograman web.

Layanan Web XML- komponen yang menyediakan serangkaian fungsi API atau metode web kepada klien Internet. XML disertakan dalam namanya karena layanan web dan kliennya menggunakannya untuk bertukar data. Layanan web didasarkan pada standar terbuka seperti HTTP, XML (Extensible Markup Language), SOAP (Simple Object Access Protocol - standar Intenet yang menjelaskan bagaimana aplikasi dapat berinteraksi, yaitu memanggil metode satu sama lain, menggunakan HTTP dan protokol lainnya). Tugas utama layanan web adalah memastikan interaksi antar program. Banyak yang bekerja di server UNIX dan diakses oleh klien Windows. Data yang dikirim ke layanan web diserialkan dalam XML dan dikirim dalam paket SOAP. Metadata tentang isi pesan tersebut disimpan dalam kontrak layanan web WSDL dan skema XSD. Keuntungan utama dari pendekatan ini adalah keterbacaan metadata. Pengembang dapat dengan mudah melihat keseluruhan deskripsi layanan web dan bahkan membuat modulnya sendiri yang mem-parsing paket SOAP.

.NET Jarak Jauh menyediakan infrastruktur untuk objek terdistribusi. Ini jauh lebih kompleks daripada arsitektur layanan web penyampaian pesan sederhana. . NET Remoting mencakup penerusan parameter berdasarkan referensi dan nilai, panggilan balik, aktivasi beberapa objek, dan kebijakan manajemen siklus hidup. Untuk menggunakan fitur ini, aplikasi klien harus mahir dalam semua teknologi. Data c. NET Remoting ditransmisikan dalam format biner atau SOAP. Namun, bagaimanapun juga, metadata tentang struktur informasi yang dikirimkan terkandung dalam lingkungan eksekusi bahasa umum. Tanpa runtime bahasa umum (CLR), aplikasi klien tidak akan dapat mengurai bahasa tertentu. NET Remoting header SOAP. Itu adalah. NET Remoting memberlakukan persyaratan yang jauh lebih tinggi dibandingkan dengan layanan web.

Pengembangan layanan web pada platform .NET

Ada banyak cara untuk menulis layanan web. Mereka dapat dikembangkan secara manual atau menggunakan alat SOAP yang disediakan oleh Microsoft, IBM, dll. Menulis layanan web menggunakan Microsoft. NET memiliki dua keunggulan:

  • .NET Framework sangat menyederhanakan proses pengembangan dengan menyediakan perpustakaan kelas dan mengotomatiskan tahapan pengembangan individu;
  • Layanan web yang ditulis dengan .NET Framework adalah aplikasi yang dikelola. Artinya, aplikasi tersebut tidak memiliki masalah dengan kebocoran memori, pointer yang diinisialisasi secara salah, dan masalah pemrograman umum lainnya.

Penciptaan

Mari kita kembangkan layanan web AdditionService sederhana yang menambahkan dua angka. Ini hanya akan memiliki satu metode Tambah, yang mengambil dua bilangan bulat sebagai parameter dan juga mengembalikan bilangan bulat. AdditionService menunjukkan beberapa prinsip penting pemrograman layanan web menggunakan Microsoft .NET Framework.

  • Layanan web diimplementasikan sebagai file ASMX. ASMX adalah ekstensi nama file khusus yang terdaftar ke ASP .NET (lebih khusus lagi, ASP.NET HTTP Handler) di file konfigurasi ASP .NET Machine.config utama.
  • File ASMX dimulai dengan arahan @WebService. Direktif ini harus berisi setidaknya atribut Class, yang menentukan kelas layanan web tersebut.
  • Kelas layanan web dapat memiliki atribut WebService opsional. DI DALAM dalam contoh ini Atribut ini menentukan nama dan deskripsi layanan web yang ditampilkan pada halaman HTML saat pengguna memanggil AdditionService.asmx di browser.
  • Metode web dideklarasikan dengan menetapkan atribut WebMethod ke metode publik kelas layanan Web. Untuk metode pembantu yang digunakan secara internal tetapi tidak tersedia untuk klien eksternal, atribut ini tidak ditentukan.
  • HTTP, XML dan SOAP "tidak terlihat". .NET Framework menangani data XML dan pesan SOAP.

Layanan Tambahan.asmx<%@ WebService language="C#" Class="AddService" %>menggunakan Sistem menggunakan System.Web.Services kelas AddService ( public int Add (int a, int b) ( return a + b ) )

Meskipun ukurannya kecil, AdditionService.asmx adalah layanan web lengkap jika diinstal pada server web dengan ASP.NET. Metodenya dipanggil menggunakan SOAP, HTTP GET dan HTTP POST, dan dapat mengembalikan hasil sebagai respons SOAP atau sebagai pembungkus XML sederhana.

Menggunakan kode latar belakang, kelas layanan web dapat dipindahkan dari file asmx ke file terpisah.

Layanan web mendukung penggunaan tipe data yang kompleks sebagai parameter masukan atau keluaran. Tipe data kompleks didukung karena XML memungkinkan sebagian besar tipe data dibuat serial dengan mudah. Namun, ketika secara otomatis menguji layanan web, ASP .NET tidak menghasilkan halaman pengujian untuk metode yang menerima tipe kompleks data. Hal ini terjadi karena Anda tidak dapat meneruskan tipe data kompleks ke metode web menggunakan HTTP GET dan POST.

Layanan web memungkinkan Anda memanggil metode mereka secara asinkron. Panggilan asinkron segera mengembalikan kontrol, terlepas dari berapa lama layanan web memproses panggilan tersebut. Panggilan asinkron berguna ketika pemrosesan panggilan memerlukan banyak waktu. Aplikasi melakukan panggilan, lalu terus berjalan tanpa menunggu hasil panggilan, dan kemudian menerima hasil panggilan asinkron. Hasilnya diperoleh dengan memanggil kembali metode web pada waktu yang sesuai untuk aplikasi atau dengan berlangganan pemberitahuan tentang akhir pemrosesan panggilan oleh layanan web (mekanisme delegasi).

Layanan web dapat dibuat menggunakan alat seperti Microsoft Visual Studio 2005. Untuk membuat layanan web yang disediakannya tipe terpisah Proyek Layanan Web ASP .NET. Visual Studio menghasilkan file asmx, file dengan kode latar belakang untuk menggambarkan kelas layanan web, file konfigurasi layanan web, dll. Ketika proyek diluncurkan untuk dieksekusi, kelas layanan dikompilasi dan file asmx dibuka di jendela browser .

Deskripsi layanan web menggunakan kontrak

Agar pengembang lain dapat menggunakan AdditionService, mereka perlu mengetahui metode apa yang disediakan, protokol apa yang didukung, tanda tangan metode, dan alamat layanan web (URL). Semua ini dan informasi lainnya dapat dijelaskan dalam WSDL (bahasa Deskripsi Layanan Web).


Penemuan layanan web

Bagaimana pengembang lain mengetahui keberadaan AdditionService?

Pertama, menggunakan DISCO (kependekan dari kata penemuan) - mekanisme berbasis file untuk mencari layanan web lokal, yaitu mekanisme untuk mendapatkan daftar layanan web yang tersedia dari file DISCO yang terletak di server web. Selain itu, file DISCO berisi catatan lokasi kontrak WSDL dari layanan yang tersedia. File DISCO adalah file XML dengan catatan.

Dimungkinkan juga untuk menggunakan file VSDISCO, yang mirip dengan file DISCO, tetapi isinya adalah hasil pencarian dinamis untuk layanan web di direktori tertentu dan semua subdirektori. ASP .NET memetakan ekstensi nama file .vsdisco ke pengendali HTTP, yang mencari direktori tertentu dan subdirektorinya untuk asmx dan disco dan mengembalikan dokumen DISCO yang dihasilkan secara dinamis. Untuk alasan keamanan, pencarian dinamis dinonaktifkan di beberapa versi .NET Framework, namun Anda dapat mengaktifkannya dengan mengedit entri di file Machine.config.

Bagaimana Anda mencari layanan web di jaringan global? Untuk mencari layanan web di jaringan global, Microsoft, IBM, dan Ariba bersama-sama mengembangkan UDDI (Universal Description Discovery and Integration) - spesifikasi untuk membangun database terdistribusi yang memungkinkan Anda mencari layanan web. UDDI didukung oleh ratusan perusahaan. Situs UDDI sendiri adalah layanan web. Siapa pun dapat mempublikasikan registri berbasis UDDI mereka. Kebanyakan pengembang tidak pernah menggunakan UDDI API secara langsung. Sebaliknya, registri UDDI diakses oleh alat pengembangan. Mereka juga menghasilkan kelas pembungkus untuk layanan web yang ditemukan dan dipilih.

Hasil

Layanan Web XML adalah komponen perangkat lunak yang menyediakan fungsionalitas yang dapat digunakan oleh sebagian besar orang sistem yang berbeda, mendukung standar seperti XML dan HTTP. Klien layanan web dapat berupa aplikasi lokal dan jarak jauh. Layanan web memungkinkan Anda membuat struktur yang memudahkan integrasi sistem yang berbeda berdasarkan standar sederhana yang diterima secara umum.

Kami telah meninjau konsep umum penggunaan mekanisme tersebut « jaring-jasa". Mari menyegarkan kembali pengetahuan.

Layanan web digunakan untuk bertukar data antara server dan klien; Format XML digunakan untuk “mengemas” data dengan tujuan saling pengertian antara kedua peserta komunikasi.

BABSAYA

CONTOH PELAKSANAANWEB- LAYANAN DALAM SISTEM 1C:ENTERPRISE

TUGAS: Penting untuk membuat layanan web, dengan mengakses klien mana yang dapat menentukan semua informasi yang diperlukan pada aplikasi mereka.

Tugas tersebut merupakan demonstrasi dan hanya berfungsi sebagai contoh untuk memahami dan mengajarkan mekanismenyaweb-jasa.

LARUTAN:

Langkah 1. Mari buat basis informasi baru tanpa konfigurasi untuk mengembangkan konfigurasi baru.

Langkah 2. Mari tambahkan beberapa objek baru ke konfigurasi

Direktori "Klien";

Dokumen "Aplikasi";

Pencacahan "Status Permintaan".

Langkah 3. Mari buat paket XDTO baru.

Mengapa dan untuk tujuan apa kita membuat paket XDTO? Informasi lebih lanjut tentang penggunaan mekanisme XDTO dapat ditemukan di “Bab 16. Panduan Pengembang” dan .

Mari kita perhatikan secara singkat bahwa mekanisme XDTO adalah cara universal menyajikan data untuk berinteraksi dengan berbagai sumber data eksternal dan sistem perangkat lunak.

Dalam kasus kami, paket XDTO dibuat untuk menggambarkan nilai kembalian layanan web.

Mari kita perluas cabang “Umum” → “Paket XDTO” → Tambahkan…

Mari tentukan nama paket XDTO " Data Dokumen"dan namespace-nya http://localhost/request atau http://192.168.1.76/request (untuk memudahkan pemahaman dan proses pembelajaran, kami menunjukkan alamat IP lokal komputer tempat server web diinstal (server web yang didukung: IIS atau Apache)). Setiap layanan Web dapat diidentifikasi secara unik berdasarkan namanya dan URI namespace miliknya.

Paket kami berisi dua jenis objek XDTO:

1) Pelanggan- untuk mentransfer data dari elemen direktori “Klien”.

- Nama ;

2) Dokumen- untuk mentransfer data dari dokumen "Aplikasi".

Tipe objek XDTO ini akan berisi properti berikut:

- Pelanggan- Tipe pelanggan dari namespace http://192.168.1.76/request ; mewakili referensi ke objek XDTO yang kita definisikan di atas;

- Status- tipe string dari namespace http://www.w3.org/2001/XMLSchema ;

- Nomor- ketik string dari namespace http://www.w3.org/2001/XMLSchema.

Langkah 4. Mari tambahkan layanan Web baru ke konfigurasi

Mari kita perluas cabang “Umum” → “Layanan web” → Tambahkan…

Untuk layanan Web, kami menentukan nilai properti berikut:

Nama - Data Dokumen

URI ruang nama - http://192.168.1.76/permintaan

Paket XDTO - Data Dokumenatauhttp://192.168.1.76/permintaan

Nama file publikasi - permintaan.1cws

Langkah 5. Untuk layanan Web yang dibuat kami akan mendefinisikan operasi “ DapatkanData»

Nilai properti operasi:

Jenis pengembalian - Dokumen (http://192.168.1.76/request)

Nilai mungkin kosong - BENAR

Nama prosedur - DapatkanData.

Langkah 6. Di operasi DapatkanData mari kita tentukan parameter Pelanggan dengan dengan nilai-nilai berikut properti:

Tipe nilai – tipe rangkaian dari namespace http://www.w3.org/2001/XMLSchema;

Arah transmisi - memasukkan.

Langkah 7 Mari kita buka modul layanan Web yang dibuat dan tempatkan fungsi Get() di dalamnya, yang akan dijalankan ketika layanan Web ini dipanggil.

Fungsi GetData(Pelanggan) // Mendapatkan tipe objek XDTO ClientType = FactoryXDTO.Type("http://192.168.1.76/request", "Customer"); RequestType = FactoryXDTO.Type("http://192.168.1.76/request", "Dokumen"); // Dapatkan klien ClientLink = Direktori.Klien.FindByName(Pelanggan); Jika Tidak ValueFilled(ClientRef) Kemudian Kembalikan Tidak Terdefinisi; berakhir jika; Permintaan = Permintaan Baru; Request.Text = "PILIH TOP 1 | Application.Link, | REPRESENTATION(Application.Status) SEBAGAI Status, | Application.Number |FROM | Document.Request AS Application |WHERE | Application.Client = &Client"; Request.SetParameter("Klien", ClientLink); RequestResult = Permintaan.Eksekusi(); Jika QueryResult.Empty() Kemudian Kembalikan Tidak Terdefinisi; berakhir jika; Pilihan = QueryResult.Select(); Seleksi.Berikutnya(); Dokumen = Seleksi.Link.GetObject(); // Membuat objek XDTO dari pesanan Order = FactoryXDTO.Create(OrderType); Aplikasi.Nomor = Contoh.Nomor; Klien = PabrikXDTO.Buat(Jenis Klien); Klien.Nama = ClientLink.Nama; Aplikasi.Pelanggan = Klien; Aplikasi.Status = Pilihan.Status; // Kembalikan permintaan Kembalikan Aplikasi; Fungsi Akhir

Langkah 8 Mari publikasikan layanan Web yang dibuat di server web.

Item menu Configurator: “Administrasi” → “Penerbitan di server Web”.

Pada tab “Layanan Web”, setel kotak centang “Publikasikan Layanan Web” dan centang juga kotak di sebelah layanan Web baru kami.

BABII

CONTOH BANDING KEPADAWEB-KEPADA 1C: LAYANAN SISTEM PERUSAHAAN DARI APLIKASI PIHAK KETIGA

Tujuan utama mekanisme layanan Web dalam sistem 1C:Enterprise adalah untuk mentransfer data yang diperlukan ke aplikasi pihak ketiga.

Mari kita perhatikan contoh pengembangan aplikasi di Delphi yang memanggil layanan web kita dari bagian pertama artikel ini.

Langkah 1. Ayo berkreasi proyek baru dan tempatkan beberapa kontrol pada formulir

Bidang teks - digunakan untuk menampilkan informasi yang diterima dari layanan web;

Dua tombol - mengosongkan bidang teks dan mengakses layanan web;

Bidang masukan adalah parameter yang diteruskan ke layanan web.

Langkah 2. Mengimpor file WSDL

Hasilnya, kami mendapatkan modul baru meminta(kami mendefinisikan nama ini secara langsung di 1C). Modul ini berisi semua informasi yang diperlukan pada layanan web.

Langkah 3. Mari kita menulis pengendali panggilan layanan web

Variabel DocumentDataPortType sudah ditentukan dalam modul meminta

Langkah 4. Luncurkan aplikasi dan jalankan pengujian.

BABAKU AKU AKU

CONTOH BANDING KEPADAWEB-LAYANAN DALAM SISTEM 1C:ENTERPRISE

Langkah 1. Mari kita buat pemrosesan eksternal baru dengan nama "WEB_Service"

Langkah 2. Mari kita tentukan formulir baru untuk diproses

Langkah 3. Kami akan menunjukkan beberapa detail pada formulir

Klien - ketik "String"

ClientReturn - ketik "String"

NumberReturn - ketik "String"

StatusReturn - ketik "String".

Kami akan menampilkan detailnya di formulir.

Langkah 4. Mari tambahkan perintah formulir " Untuk mendapatkan data»

Mari tentukan pengendali perintah

&Prosedur OnClient GetData(Perintah) GetDataOnServer(Klien); Akhir Prosedur Prosedur GetDataOnServer(Klien) // Buat proksi WS berdasarkan tautan dan lakukan operasi Get() Definisi = New WSDefinitions("http://192.168.1.76/WEB_Service/ws/request.1cws?wsdl") ; Proxy = WSProxy Baru(Definisi, "http://192.168.1.76/request", "DocumentsData", "DocumentsDataSoap"); Data Aplikasi = Proxy.GetData(Klien); Jika Data Aplikasi = Tidak Terdefinisi Maka ClientReturn = "Tidak Terdefinisi"; StatusReturn = "Tidak ditentukan"; ReturnNumber = "Tidak ditentukan"; Kembali; berakhir jika; CustomerReturn = Data Aplikasi.Nama Pelanggan; StatusReturn = Data Aplikasi.Status; Nomor Pengembalian = Data Aplikasi.Nomor; Akhir Prosedur

Sistem 1C:Enterprise dapat menggunakan layanan web yang disediakan oleh penyedia lain dengan dua cara:

Dengan menggunakan statis tautan yang dibuat di pohon konfigurasi;

"plus": kecepatan tinggi;

"kurang": mengimpor ulang deskripsi WSDL menggunakan konfigurator dan menyimpan konfigurasi yang diubah.

Dengan menggunakan dinamis tautan yang dibuat oleh alat bahasa bawaan

(sejalan dengan itu, “kekurangan” dari yang statis dan yang dinamis adalah “kelebihan”)

BABIV

DEBUGGING LAYANAN WEB PADA SISTEM 1C:ENTERPRISE

Untuk layanan web lokal, Anda memerlukan:

Langkah 1. Tempatkan file di klien tempat sistem 1C berjalan layanan webcfg.xml dengan konten berikut

Langkah 2. Untuk mengajukan bawaan. vrd terbitkan baris tambahan konfigurasi

Langkah 3. Di konfigurator, pilih item menu

“Debug” → “Koneksi” → “Koneksi otomatis” → “Layanan web di server”

Langkah 4. Klik tombol "OK".

Untuk opsi server, Anda juga perlu menjalankan server 1c dalam mode debugging dengan kuncinya /debug

Ide layanan web dikembangkan oleh raksasa industri komputer seperti Sun, Oracle, HP, Microsoft dan IBM. Ide ini bukanlah hal baru, namun ini merupakan langkah maju yang besar menuju akses yang lebih mudah terhadap program melalui web. Berdasarkan format komunikasi standar, layanan web dapat sepenuhnya mengubah cara kita berpikir tentang cara membuat situs web.

Apa itu layanan web?

Berkat layanan web, fungsi program apa pun dapat tersedia melalui Internet. Dengan demikian, program seperti PHP, ASP, skrip JSP, JavaBeans, objek COM, dan semua alat pemrograman favorit kami lainnya sekarang dapat mengakses beberapa program yang berjalan di server lain (yaitu layanan web) dan menggunakan respons yang diterima darinya di situs webnya, atau aplikasi.

Katakanlah, jika saya perlu melakukan beberapa tugas pemrograman, dan saya terlalu sibuk (atau tidak punya pikiran untuk memikirkan kembali hal itu), saya dapat menggunakan layanan layanan web yang akan diakses situs saya melalui Internet. Dengan meneruskan permintaan dengan parameter ke layanan web, saya berharap menerima respons yang berisi hasil pelaksanaan permintaan saya.

Siapa pun yang pernah bekerja dengannya baru-baru ini surat panas, telah menemukan sebagian layanan web: sistem otentikasi pengguna Paspor adalah salah satu layanan yang termasuk dalam inisiatif Microsoft .NET. Saat ini tersedia secara gratis, sehingga pembuat situs web dapat dengan mudah menerapkan otentikasi pengguna di situs mereka.

Dasar-dasar

Prinsip di balik layanan web ternyata sangat sederhana. Dan mereka tidak menambahkan hal baru ke dunia komputasi terdistribusi dan Internet:

  • orang yang bertanggung jawab atas layanan web menentukan format permintaan ke layanan webnya dan tanggapannya
  • komputer mana pun di jaringan membuat permintaan ke layanan web
  • layanan web memproses permintaan, melakukan beberapa tindakan, dan kemudian mengirimkan respons

Tindakan ini dapat berupa, misalnya, menampilkan harga saham, menampilkan harga suatu produk tertentu, menyimpan entri dalam kalender janji temu, menerjemahkan teks dari satu bahasa ke bahasa lain, atau memeriksa nomor kartu kredit.

Standar pada intinya

Alasan mengapa kita semua tiba-tiba tertarik pada layanan web adalah karena layanan tersebut didasarkan pada standar, protokol terbuka untuk pertukaran dan transfer data.

Sebelumnya, banyak perusahaan mengembangkan standar dan format miliknya sendiri. Dan sekarang untuk bekerja kita hanya perlu mengetahui XML sederhana (eXtensible Markup Language), yang ditransmisikan melalui protokol HTTP lama yang sudah dikenal. Artinya, informasi tentang cara kerja layanan web tersedia untuk semua orang, dan pengembang web yang akrab dengan teknologi ini dapat mulai bermain dengan layanan web saat ini.

Perbedaan antara layanan web dan teknologi lain yang ditemui pengembang (misalnya, DCOM, bernama pipa, RMI) adalah bahwa layanan web didasarkan pada standar terbuka, mudah dipelajari, dan standar ini didukung secara luas di seluruh dunia. dan platform Windows.

Simple Object Access Protocol (SOAP) adalah protokol standar yang dikembangkan oleh W3C. Ini mendefinisikan format permintaan ke layanan web.

Pesan antara layanan web dan penggunanya dikemas dalam amplop SOAP. Pesan berisi permintaan untuk melakukan suatu tindakan, atau tanggapan - hasil dari melakukan tindakan ini. Amplop dan isinya dikodekan dalam XML dan cukup mudah dimengerti. Ini adalah tampilan permintaan SOAP sederhana ketika dikirim melalui HTTPP ke layanan web:

xmlns:env="http://www.w3.org/2001/06/soap-envelope">


xmlns:m="http://www.somesite.com/Postcode">
WC1A8GH
Inggris


Elemen kunci dari amplop SOAP cukup mudah untuk diketahui: ini adalah dua parameter ( ("kode pos") dan ("negara")), yang terkandung dalam elemen yang disebut . Elemen ini adalah nama layanan web tempat kita membuat permintaan. Data lain dalam amplop, seperti pengkodean teks dan versi SOAP, membantu layanan web memproses permintaan dengan benar.

Dan jawabannya akan terlihat seperti ini:

xmlns:env="http://www.w3.org/2001/06/soap-envelope" >

env:encodingStyle="http://www.w3.org/2001/06/soap-encoding"
xmlns:m="http://www.somesite.com/Postcode">
Ya


Pesan ini bahkan lebih mudah untuk diuraikan. Elemen dalam permintaan kami diubah menjadi elemen sebagai jawaban atas permintaan tersebut. Elemen ini hanya berisi satu elemen , yang nilainya menunjukkan benar atau tidaknya kode pos kita. Jadi, melalui keajaiban SOAP, kami telah membuat kueri yang berguna bagi kami. Sebagai respons melalui jaringan, kami menerima jenis respons tertentu dalam XML.

Sekarang tentang UDDI

Meskipun protokol SOAP sederhana, layanan web tidak akan banyak berguna jika kita tidak dapat menemukannya. Untungnya, IBM, Microsoft dan Ariba melangkah maju dan menciptakan proyek Deskripsi Universal, Penemuan dan Integrasi (UDDI), yang mereka harap akan menjadi katalog umum dari semua layanan web di Web.

Sistem UDDI memungkinkan perusahaan untuk mengekspos layanan web mereka kepada publik. Direktori ini bertindak sebagai buku telepon untuk semua layanan web. Pendaftaran di direktori UDDI gratis, dan pendiri proyek berharap direktori ini berisi deskripsi semua, semua, semua layanan di seluruh Web, sehingga untuk menemukan layanan web yang diinginkan, Anda hanya perlu beralih ke satu UDDI direktori.

Bagaimana cara kerjanya

Jadi bagaimana cara menemukan layanan web yang tepat?

Bayangkan saya seorang pengembang situs web, dan klien saya meminta saya untuk menambahkan fitur baru ke situs: Saya perlu menambahkan tanda centang kode pos pada formulir pendaftaran.

Untuk melakukan pemeriksaan ini, saya perlu membuat database semua kode pos di 30 negara tempat perusahaan kami menjalankan bisnis, dan kemudian memeriksa apakah kode pos tersebut sesuai dengan kota yang ditentukan dalam pendaftaran saat mendaftar. Tapi saya tidak punya datanya, dan menurut saya pengumpulan data seperti itu harus mengeluarkan banyak uang.

Daripada mengeluarkan uang untuk membeli database, menulis kode sendiri, memastikan integritas dan kebenaran semua data dan men-debug skrip, saya hanya pergi ke direktori UDDI dan melihat apakah ada layanan web yang dapat melakukan pekerjaan itu. Saya . Sesampainya di www.uddi.org, saya menjalankan pencarian dan menemukan layanan terbaik dari XYZ Corp.

Saya meninjau dengan cermat definisi format layanan web (definisinya ditulis dalam WSDL (Bahasa Deskripsi Layanan Web), memastikan bahwa layanan tersebut melakukan apa yang saya perlukan. Kemudian saya menanyakan rekan-rekan saya tentang reputasi XYZ Corp., dan mencari tahu bahwa itu solid, dan kemudian menghubungi XYZ Corp tentang harga. Jika harga untuk mengakses layanan ini sesuai anggaran saya, saya menulis halaman JSP sederhana untuk situs saya yang memanggil layanan web XYZ Corp., dan lihatlah, verifikasi instan muncul di kode pos situs.

Ini sepadan dengan waktu Anda

Meskipun Anda tidak ada hubungannya dengan pemrograman atau teknologi pengembangan situs web, layanan web layak untuk dipelajari lebih lanjut. Bayangkan gambaran bagaimana Anda mendiskusikan situs web baru dengan klien, mendiskusikan semua fungsi proyek baru. Semuanya berjalan baik: anggaran memenuhi harapan pelanggan, dia menyukai sketsa rencana lokasi, dan menyukai contoh antarmuka. Segalanya tampak berfungsi.

Dan tiba-tiba mereka teringat suatu fungsi yang sangat kompleks. Hanya dengan menyebutkannya saja, wajah pengembang web Anda berubah menjadi hijau dan dia mulai tersedak dan batuk. Ini adalah pengembang yang memberi Anda sinyal bahwa mengembangkan fitur ini akan membutuhkan banyak uang dan waktu atau tidak mungkin dilakukan dengan anggaran sebesar itu.

Hilangkan rasa takutmu! Saya siap menjamin bahwa sudah ada layanan web di Internet yang siap memberi Anda fungsi yang diperlukan, dan biaya penggunaan layanan web ini akan jauh lebih rendah daripada biaya pengembangan analognya secara mandiri. Dengan cara ini Anda menyelamatkan pengembang Anda dari sakit kepala yang tidak perlu, klien Anda dari membuang-buang uang hanya dengan menghabiskan beberapa menit menjelajahi katalog UDDI.

Pengembangan layanan

Tentu saja, pengembang tidak harus puas hanya dengan layanan web yang dibuat oleh orang lain. Dengan menggunakan salah satu perangkat berikut, Anda dapat membuat layanan web Anda sendiri dan menyediakan layanannya kepada pengguna Internet lainnya.

Pilihan alat untuk mengembangkan layanan web sangat luas. Ini mencakup alat dari perusahaan seperti Sun (Open Net), Microsoft (.NET), (e-services), dan IBM ( Layanan web). Ada juga kerangka kerja sumber terbuka. Misalnya, Proyek Mono bertujuan untuk menggantikan toolkit .NET Microsoft dengan menyediakan kompiler, runtime, dan perpustakaan untuk menjalankan layanan web yang sama di semua platform, termasuk Unix.

Meskipun beragam server dan alat pengembangan layanan web, semuanya mendukung protokol SOAP, bahasa XML, dan sistem UDDI yang sama.

Minus

Sebelum saya benar-benar meninggalkan karir saya sebagai programmer dan mengabdikan diri untuk menggunakan layanan web, saya harus bertanya pada diri sendiri pertanyaan: "Gambarannya terlalu bagus. Apa yang salah dengan itu?" Sayangnya, potensi besar layanan web harus dibayar dengan:

  • Menggunakan XML sebagai format transfer data berarti pesan Anda akan berukuran sangat besar: tag XML itu sendiri memakan banyak ruang, dan ini membebani kami dalam membuat, mengirimkan, dan menafsirkan pesan.
  • Karena kami menggunakan komputer jarak jauh untuk menjalankan fungsi tertentu, kami bergantung sepenuhnya pada Internet, yang menciptakan terlalu banyak tautan yang tidak dapat diandalkan dalam rantai antara server web kami dan layanan web.
  • Saat ini, hanya sedikit perusahaan yang membuat layanan web, dan hanya sedikit perusahaan yang menggunakannya. Debugging dan perbaikan sistem web services masih memerlukan waktu yang cukup lama.
  • Sistem perizinan dan penagihan atas penggunaan layanan web belum dapat diterima oleh pengembang. Karena jumlah layanan web yang masih terlalu sedikit, sebagian besar perusahaan berusaha memberikan kesan yang baik kepada klien potensial mereka dengan sengaja mengurangi biaya layanan dan menawarkan persyaratan lisensi yang menguntungkan. Masih perlu waktu sebelum biaya sebenarnya dari layanan web menjadi jelas.

Ketika layanan web mengambil tempat dan tersedia untuk semua orang, mereka akan menjadi bantuan yang sangat berharga bagi pengembang web. Mereka akan memberi kita akses fleksibel ke kekuatan penuh semua komputer di Jaringan. Sudah waktunya bagi pembuat situs web untuk tertarik pada layanan web dan mempelajari lebih lanjut tentang apa yang bisa mereka peroleh dari layanan tersebut.

Penggunaan praktis layanan Web di IBM Lotus Domino 7

Apa itu layanan Web dan mengapa itu penting?

Seri Konten:

Konten ini adalah bagian # dari rangkaian # artikel: Penggunaan praktis layanan Web di IBM Lotus Domino 7

https://www..jsp?series_title_by=Praktis+penggunaan+of+layanan web+di+ibm+lotus+domino+7

Nantikan artikel baru di seri ini.

Anda mungkin pernah menemukan referensi ke layanan Web dalam artikel teknis, deskripsi produk perangkat lunak atau bahkan dalam dialog dengan rekan kerja. Rupanya, layanan Web diperlukan dan penting bagi sebagian orang, namun, ketika Anda menemukan definisi seperti "tata bahasa XML untuk menentukan kumpulan titik akhir untuk perpesanan", Anda memutuskan bahwa hal-hal rumit seperti itu tidak layak untuk disentuh.

Untungnya, layanan Web dapat dijelaskan dengan cara yang dapat dipahami semua orang tanpa harus menjelaskan secara detail cara kerjanya. Anda harus mencoba memahami apa itu layanan Web, karena cakupan aplikasinya (dan arsitektur berorientasi layanan terkait, SOA) di dunia TI terus berkembang.

Layanan web dapat dianggap sebagai mobil: Anda tidak perlu mengetahui secara teknis cara kerja piston, poros bubungan, dan injektor bahan bakar - Anda dapat membeli mobil, mengendarainya, dan membicarakan mobil dengan teman (kecuali, tentu saja, mereka adalah mekanik). Sama halnya dengan layanan Web; sebagai spesialis TI, Anda hanya perlu memahami apa itu layanan Web dan cara kerjanya untuk memahami mengapa Anda membutuhkannya.

Sekarang jauh lebih mudah untuk bekerja dengan layanan Web tanpa menyentuh teknologi tingkat rendah yang tersembunyi, karena vendor perangkat lunak dan komunitas sumber terbuka telah melakukan banyak hal selama beberapa tahun terakhir untuk memisahkan antarmuka layanan Web dari tugas tingkat rendah. Ini akan memungkinkan Anda bekerja hanya dengan menghubungkan komponen bersama-sama, tanpa harus mempelajari dokumentasi panjang lebar tentang pemformatan pesan XML.

Rangkaian artikel ini akan membantu pengembang Domino memahami dan menggunakan layanan Web di IBM Lotus Domino V7.0. Artikel pengantar ini cukup berisi informasi berguna, dan akan berguna bagi siapa saja yang ingin memahami apa itu layanan Web. Teknologi di Lotus Domino V7.0 memudahkan pengembang untuk membuat dan menggunakan layanan Web, dan kami akan membahasnya lebih detail nanti.

Pertama, mari kita pahami apa itu layanan Web.

Apa itu layanan Web?

Sederhananya, layanan Web memungkinkan program komputer untuk berkomunikasi satu sama lain dengan cara yang terstandarisasi.

Komunikasi antara tiga mesin atau lebih

Meskipun dalam contoh kita mempertimbangkan transaksi dalam satu atau dua mesin, layanan Web juga dapat digunakan untuk komunikasi antara sejumlah besar komputer. Misalnya, meneruskan atau menyimpan transaksi dapat dilakukan oleh perangkat perantara, atau panggilan ke layanan Web di satu server dapat mengakibatkan panggilan ke layanan di server lain.

Di akhir artikel ini, ketika kita melihat SOA yang sebenarnya, kita akan membahas tentang layanan Web yang berkomunikasi di beberapa mesin, karena itulah yang selalu dilakukan SOA.

Layanan Web adalah komponen abstrak, sama seperti konsep dialog antar manusia yang abstrak. Dialog melibatkan dua orang atau lebih yang berbicara dalam bahasa yang mereka kenal. Bahasa mereka mendefinisikan kata-kata yang mereka gunakan dan bagaimana kata-kata tersebut digunakan untuk membentuk kalimat. Biasanya dialog memiliki struktur tanya jawab, ketika seseorang mengajukan pertanyaan atau membuat pernyataan, dan lawan bicara menjawabnya. Orang-orang dapat berada di dekatnya, berkomunikasi melalui telepon, saling mengirim pesan melalui surat atau obrolan.

Bagaimanapun, dialog telah terjadi struktur yang kompleks dan dapat terjadi dalam berbagai cara, tergantung pada jumlah orang yang berkomunikasi, bahasa komunikasi yang digunakan untuk berkomunikasi, dan teknologi yang digunakan untuk berkomunikasi, tentunya jika ada yang digunakan.

Struktur komunikasi menggunakan layanan Web mencakup banyak elemen yang akan kita bahas dalam artikel ini. Namun, idenya tetap sama dengan dialog biasa - program berkomunikasi menggunakan bahasa yang mereka kenal, terkadang melalui jaringan. Program dapat ditempatkan di satu komputer atau ditempatkan di mesin berbeda di berbagai belahan dunia, dihubungkan melalui Internet melalui router dan server. Hal baiknya adalah program dan komputer tidak harus sama. Berkat layanan Web, dua program Microsoft .NET di satu laptop dapat berkomunikasi, begitu pula program Java di server iSeries Kanada dengan program C++ di komputer Linux dari Tiongkok.

Teknologi standar berikut digunakan dalam komunikasi melalui layanan Web:

  • XML. Bahasa (format data) yang digunakan oleh komponen layanan Web.
  • protokol SABUN. Pesan XML dipertukarkan antar program
  • Perpustakaan Deskripsi Layanan Web (WSDL). File XML yang mendefinisikan format pesan SOAP dan cara mengirimnya

Teknologi standar yang dikenal sebagai Universal Description, Discovery, and Integration (UDDI) juga dapat digunakan untuk berkomunikasi antar layanan Web. Kita akan membahasnya nanti di artikel ini, namun karena penggunaan UDDI tidak diperlukan, banyak layanan Web yang tidak menggunakannya.

Beberapa terminologi: penerbitan dan penggunaan layanan Web

Sebelum kita menjelaskan istilah-istilah kami, mari kita lihat beberapa terminologi yang terkait dengan layanan Web.

Ketika kita berbicara tentang penerbitan layanan Web, kita berbicara tentang program yang menerbitkan file WSDL dan memungkinkan program lain untuk menggunakan layanan terkait. Program yang menerbitkan layanan Web disebut penyedia.

Ketika kita berbicara tentang penggunaan layanan Web, yang kami maksud adalah program yang melakukan panggilan ke layanan Web di komputer lain. Pengguna layanan Web disebut klien.

XML: bahasa asli

XML digunakan untuk berkomunikasi antar komponen layanan Web. Pesan yang dikirim antar aplikasi, serta file yang mendefinisikan layanan Web, dalam format XML. Gambar 1 menunjukkan struktur file XML sederhana.

Gambar 1. Struktur dasar XML

Seperti yang Anda lihat, beberapa informasi dalam file (seperti nama depan, nama belakang) diapit oleh tag yang diapit tanda kurung segitiga. Nama John ditampilkan sebagai Yohanes. Ada juga elemen yang elemen lainnya disarangkan, misalnya di dalam elemen Elemen bersarang , Dan .

Ada banyak manfaat menulis layanan Web dalam XML, termasuk:

  • Struktur dan tata bahasa XML mirip dengan bahasa pemrograman lain, sehingga program yang berinteraksi dengan layanan Web tidak perlu melakukan analisis struktur file XML secara langsung.
  • File XML adalah teks dan dapat dibaca manusia (dengan kata lain, jika Anda mengetahui XML, Anda dapat membuka file XML di editor teks dan memahami isinya). Ini mungkin membantu dalam proses debug.
  • XML memungkinkan Anda menggunakan pengkodean standar apa pun dalam pesan, sehingga Anda dapat menulis pesan dalam bahasa Inggris, Rusia, atau Jepang.
  • XML memungkinkan Anda memanfaatkan apa yang disebut namespace, di mana Anda dapat menentukan sebelumnya struktur elemen file yang diinginkan dengan nama tertentu. Misalnya, Anda bisa mendefinisikan elemen Price, yang harus selalu berupa float, atau elemen PersonName, yang mencakup dua subelemen string, FirstName dan LastName.

    Selain itu, jika perlu, namespace memungkinkan beberapa elemen dengan nama yang sama memiliki definisi berbeda. Misalnya, elemen StockPrice di satu namespace mungkin menyertakan simbol ticker dan harga, sementara di namespace lain mungkin berisi simbol ticker, harga, harga terendah dan tertinggi harian, dan harga tertinggi 12 bulan.

Satu-satunya kelemahan XML, jika memang merupakan kelemahannya, adalah:

  • XML adalah bahasa yang kaku, jadi pemformatan pesan XML yang salah akan menyebabkan kegagalan penguraian seluruh pesan (meskipun masalahnya mudah diinterpretasikan atau terlewatkan). Namun, jika Anda menggunakan perpustakaan standar untuk menghasilkan file XML (yang Anda lakukan saat membuat layanan Web), perpustakaan itu sendiri akan memeriksa pemformatan yang benar.
  • Pesan XML disimpan dalam file teks biasa dan oleh karena itu diperlukan lebih banyak ruang dibandingkan format yang setara dalam format lain (seperti format stripped, biner, atau "buatan sendiri").

Namun masalah ini tidak signifikan dibandingkan dengan manfaat format XML.

SOAP: pesan terkirim

Anda tahu bahwa layanan Web berkomunikasi dalam format XML, tapi ini hanya menyelesaikan separuh masalah. Aplikasi dapat mengurai pesan, tetapi bagaimana mereka mengetahui apa yang harus dilakukan dengan hasil yang diperoleh setelah analisis?

Instruksi yang menjelaskan aturan untuk memformat pesan XML untuk layanan Web dikenal sebagai SOAP. Ini mendefinisikan struktur pesan sehingga program mengetahui cara mengirim dan menafsirkan data. Struktur dasar pesan SOAP ditunjukkan pada Gambar 2.

Gambar 2. Struktur pesan SOAP dasar

Dalam XML akan terlihat seperti ini:

FOO

Dalam kasus dasar, Anda memiliki paket SOAP yang mencakup isi SOAP dan isi yang berisi data yang akan ditransfer. Terkadang ada juga header SOAP opsional (di dalam paket sebelum isi paket) yang berisi informasi tambahan.

instruksi SABUN

Meskipun format SOAP adalah standar dan memiliki instruksi yang sama, harus diingat bahwa produsen yang berbeda mungkin menerapkan instruksi ini sedikit berbeda. Misalnya, struktur namespace dan XML dalam pesan SOAP yang dihasilkan oleh Apache Axis mungkin sangat berbeda dari struktur yang dihasilkan oleh Microsoft .NET. Namun, klien atau server yang ditulis dengan benar dapat memproses pesan apa pun yang ditulis dengan benar sesuai dengan instruksi SOAP.

Selain itu, ada beberapa perbedaan penting antara pernyataan WSDL 1.1 dan WSDL 2.0. Meskipun instruksi 2.0 masih dalam tahap akhir pada saat penulisan, instruksi ini akan segera menggantikan versi 1.1.

Jika Anda belum pernah menemukan file WSDL sebelumnya dan mencoba membukanya lalu membacanya, Anda akan kesulitan mendapatkan semua informasi darinya, karena struktur file tersebut bisa sangat rumit. Semua informasi tentang metode (nama, parameter, protokol, dll.) tersebar di berbagai bagian file, dan untuk membuat pesan SOAP, pesan tersebut harus dikumpulkan oleh aplikasi klien. Deskripsi bagian-bagian file WSDL dan kolaborasi tidak akan dimasukkan dalam artikel ini.

Di sinilah teknologi kembali membantu kita. Sebagai pengembang, Anda tidak perlu membaca, mengurai, atau memahami isi file WSDL. Alat tersebut akan memberikan informasi ini untuk Anda, jadi Anda hanya perlu memikirkan apa yang akan dikirim ke layanan dan di mana harus meletakkan hasilnya. Anda tidak hanya kamu bisa menggunakan perpustakaan dan alat, tetapi juga pasti kamu akan. Ada beberapa pengecualian, keanehan, dan kompleksitas dalam semua komponen layanan Web yang harus Anda perhatikan. menggunakan Layanan web, dan bukan pembongkaran, diikuti dengan studi rinci setiap komponen.

Protokol: bagaimana pesan dikirim

Kami belum menyentuh pertanyaan tentang bagaimana semua pesan ini dikirimkan melalui SOAP?

Dan biasanya dikirimkan melalui jaringan (dan/atau Internet) menggunakan protokol HTTP, hampir sama seperti halaman dikirimkan dari server ke browser Anda. HTTP tidak selalu digunakan (pesaing utamanya adalah SMTP, tetapi tertinggal jauh). Protokol yang digunakan oleh layanan Web ditentukan dalam file WSDL.

Biasanya, file WSDL mendefinisikan protokol yang digunakan untuk mengangkut pesan SOAP sebagai HTTP. Klien SOAP mengirimkan pesan sesuai dengan protokol yang ditentukan.

Istilah layanan Web lain yang mungkin Anda temui

Kami telah membahas istilah dasarnya, tetapi Anda mungkin mendengar lebih banyak lagi ketika berbicara tentang layanan Web.

Ikatan yang lemah

Program yang menggunakan layanan Web biasanya memiliki koneksi yang lemah dengan layanan, artinya layanan yang diperlukan agar program dapat beroperasi tidak terikat langsung padanya, seperti halnya program tidak terikat pada layanan. Program ini dapat dengan mudah menggunakan layanan apa pun yang dibutuhkannya, dan mereka menunggu panggilan dari program – dari program apa pun yang memerlukan tanggapannya.

Contoh nyata dari lemahnya ikatan adalah makan siang bersama teman. Beberapa teman entah bagaimana sepakat di antara mereka sendiri (secara langsung, melalui telepon, melalui surel dll.). Semua orang pergi ke restoran sendiri-sendiri, dan setelah makan siang semua orang membayar makanannya sendiri. Tidak peduli bagaimana makan siangnya, hasil akhirnya tetap sama – itu adalah makan siang yang bersahabat.

Namun mengendarai mobil adalah tindakan dengan koneksi yang lebih kaku. Anda memiliki seperangkat alat tetap yang Anda perlukan untuk mencapai tujuan yang telah ditentukan sebelumnya. Saat meninggalkan garasi, Anda memundurkan mobil dan menginjak gas. Saat Anda berbelok ke kiri, Anda memutar setir ke kiri. Anda tidak mempunyai kesempatan untuk melakukan hal yang sama dengan cara yang berbeda, karena keseluruhan sistem sangat tepat dan koheren, dan setiap elemennya terhubung satu sama lain.

UDDI

UDDI adalah standar untuk membuat katalog layanan Web yang dikirimkan oleh sejumlah program. Ini seperti buku telepon untuk penyedia layanan Web. Klien dapat mencari informasi yang mereka perlukan di registri UDDI, dan registri mengembalikan data yang diperlukan untuk menyambung ke layanan.

Meskipun UDDI adalah standar yang cukup penting untuk mendefinisikan layanan Web, signifikansinya sangat berkurang karena fakta bahwa UDDI merupakan elemen opsional dari layanan Web, dan ketika diberi pilihan untuk menggunakannya atau tidak, banyak yang memilih untuk tidak menggunakannya.

Lingkungan perusahaan yang paling terorganisir dengan sejumlah besar layanan Web internal memiliki registrasi UDDI. Sangat menyenangkan memiliki situs web UDDI perusahaan yang berisi informasi tentang layanan Web yang tersedia di perusahaan Anda. Dengan menyatukan semua layanan, UDDI memungkinkan Anda mengubah penyedia layanan dengan lancar dan lancar. Jika klien mencari layanan melalui UDDI, maka panggilan SOAP secara otomatis dikirim ke penyedia baru.

Namun, komponen ini tidak diperlukan dalam arsitektur layanan Web.

Keamanan Layanan Web

Saat Anda membaca tentang SOAP dan WSDL, Anda mungkin memperhatikan bahwa topik keamanan tidak dibahas. Bagaimana otentikasi dilakukan untuk panggilan layanan jika penyedia bekerja dengan informasi sensitif? Jelas bahwa tidak semua layanan Web tersedia untuk masyarakat umum, bukan?

Ini adalah pertanyaan penting yang tidak mudah untuk dijawab secara pasti. Makan berbagai skema, yang dapat Anda gunakan tergantung situasinya, misalnya:

  • Bisakah pesan SOAP diterima sebagai teks atau haruskah dienkripsi?
  • Apakah otentikasi login dan kata sandi yang sederhana cukup untuk Anda, atau haruskah itu kuat dan berbasis token?
  • Jika token digunakan, apakah token tersebut harus ditandatangani, dan apa cara yang benar untuk memasukkannya ke dalam pesan SOAP?
  • Bagaimana jika klien mengirim pesan SOAP tidak secara langsung, tetapi melalui beberapa struktur perantara, seperti antrian pesan atau layanan Web lainnya?

Selain itu, pengiriman pesan mungkin tidak selalu menggunakan HTTP, jadi Anda tidak akan bisa begitu saja menggunakan sistem keamanan layanan Web selain sistem keamanan HTTP yang sudah ada.

Ada beberapa pedoman yang mencakup aspek ini dan aspek keamanan layanan Web lainnya: WS-Security, WS-Policy, WS-Trust, dan WS-Privacy. Beberapa vendor perangkat lunak dan komite telah menangani masalah ini selama beberapa tahun. Meskipun tidak semua implementasi layanan Web mendukung semua pedoman keamanan, standar keamanan yang tersedia biasanya menerapkan setidaknya beberapa jalur keamanan dasar.

Middleware dan Bus Layanan Perusahaan

Ada seperangkat standar lain yang cukup besar untuk layanan Web, dikumpulkan menjadi satu kesatuan yang agak besar, yang biasanya disebut instruksi WS-*. Bersama-sama mereka mengatasi banyak pertimbangan desain yang muncul ketika Anda merakit banyak layanan Web ke dalam satu lingkungan. Standar WS-* mengatasi masalah seperti:

  • Keamanan
  • Keandalan
  • Pertukaran pesan
  • Transaksi
  • Kualitas pelayanan

Jumlah standar ini diperlukan karena pertukaran pesan antara klien layanan Web dan server di lingkungan industri bisa jauh lebih kompleks daripada permintaan/respons sederhana. Misalnya, bagaimana Anda memastikan bahwa pesan sampai ke penyedia dan kembali ke pelanggan? Bagaimana jika permintaan SOAP memiliki banyak bagian? Bagaimana Anda mengelola proses yang melibatkan layanan Web yang mengakses layanan Web lainnya? Bagaimana jika program mengirimkan serangkaian permintaan dengan persyaratan waktu respons?

Bagi perusahaan perangkat lunak besar, bekerja dengan standar ini menghadirkan tantangan dan peluang. Beberapa vendor memasarkan seluruh paket middleware layanan Web, sering disebut Enterprise Service Buses, atau ESB, yang dapat menangani semua atau setidaknya beberapa tugas di atas. ESB ini juga berharga karena dapat menyatukan beberapa layanan Web dalam organisasi yang sama dan menyediakan fungsionalitasnya, merekam tindakannya, dan menyimpan pesan dalam antrian.

Arsitektur berorientasi layanan

Dan terakhir, arsitektur berorientasi layanan. Dalam kebanyakan kasus, ini hanyalah kombinasi dari semua hal di atas: layanan Web yang digabungkan secara longgar dari vendor yang berbeda, berinteraksi sesuai dengan standar yang diterima (mungkin dengan partisipasi ESB) dan dikumpulkan bersama oleh program berbeda yang mengambil data dari layanan tersebut. dan menggunakannya dengan cara yang berbeda.

Karena SOA adalah arsitektur perangkat lunak, sejumlah besar pekerjaan koordinasi dan perencanaan dikaitkan dengan konstruksinya. Ini bukan hanya sekumpulan layanan yang digabungkan; ini adalah organisasi tentang bagaimana layanan disatukan dan dipublikasikan, alat manajemen dan middleware apa yang digunakan, dan bagaimana layanan dan keseluruhan sistem dipantau dan dikelola.

Jika Anda melihat lebih global, SOA juga merupakan jenis pemikiran. Ini membuat Anda berpikir bukan tentang program besar yang berjalan secara mandiri, tetapi untuk melihat segala sesuatu sebagai komponen yang mungkin dapat dipublikasikan dan digunakan dalam produksi. Daripada aplikasi yang kaya fitur, Anda memikirkan layanan yang spesifik dan terdefinisi dengan baik - itulah layanan Web.

Mengapa ini penting?

Sekarang Anda sudah mengetahui sesuatu tentang cara kerja layanan Web - klien membaca file WSDL penyedia, memformat dan mengirim pesan SOAP sesuai dengan itu, dan menerima pesan SOAP lain sebagai tanggapan. Jadi mengapa ini sangat penting? Apa masalahnya?

Salah satu pentingnya layanan adalah bahwa mereka menyediakan cara standar bagi program untuk berkomunikasi, terlepas dari bahasa penulisannya atau platform yang dijalankannya. Sebelumnya, kami harus bekerja dengan format data yang unik untuk program yang berbeda, atau dengan fungsi tingkat API yang tidak dapat digunakan oleh program dalam bahasa lain. Penggunaan XML di semua standar layanan Web berarti bahwa semua layanan dapat diakses dan didefinisikan dengan jelas.

Faktanya, hal ini memungkinkan program yang sangat berbeda untuk berkomunikasi dengan mudah satu sama lain dalam bahasa yang mereka semua pahami. Salah satu tantangan utama ketika bekerja dengan teknologi berbeda dari produsen berbeda adalah kebutuhan agar semua program berbeda ini dapat berkomunikasi satu sama lain dan bertukar data. Sekarang semua aplikasi Anda dapat mengirimkan dan/atau menggunakan layanan Web, interoperabilitas di antara keduanya menjadi sangat sederhana.

Keuntungan lain dari layanan Web adalah klien dan pemasok dapat berada di mesin yang berbeda, menggunakan perangkat keras dan perangkat lunak yang berbeda, dan ini tidak akan mengganggu komunikasi. Program dapat digunakan oleh program lain dalam mesin yang sama, atau dari mesin lain, namun menggunakan format transfer data tertentu. Layanan web hanya memerlukan koneksi jaringan dan prosesor XML.

Jika semua faktor ini diperhitungkan bersama-sama, maka hasilnya akan signifikan. Begitu kita punya pengobatan standar Untuk komunikasi antar aplikasi melalui jaringan, kita dapat membangun program kita secara berbeda. Daripada menulis program monolitik yang selalu menciptakan kembali roda, kita dapat menulis program yang terdiri dari modul.

Misalnya, alih-alih program besar yang mengumpulkan informasi tentang beberapa proses, mengubahnya menjadi grafik dan menampilkannya kepada pengguna, kita bisa membuat dasbor yang menampilkan data yang diterima dari beberapa layanan Web. Data yang dikompilasi diterima dari satu atau lebih layanan, dan grafik yang dihasilkan dibuat oleh layanan Web lain yang menerima data dan menghasilkan grafik.

Dasbor berubah dari program besar menjadi antarmuka sederhana. Saat kita ingin menambahkan komponen baru, kita cukup beralih ke layanan tambahan. Jika kami memerlukan bagan yang berbeda, kami beralih ke layanan pembuatan bagan lain. Jika kita membutuhkan dashboard yang lebih interaktif, dengan kemampuan pelatihan atau penyortiran, maka dashboard tersebut dapat mengirimkan pesan dari pengguna ke layanan yang sesuai. Kami bahkan dapat sepenuhnya mengubah layanan yang dipanggil sehingga pengguna tidak menyadarinya (selama file WSDL tidak berubah), dan panelnya akan tetap sama.

Sebagai seorang profesional TI, Anda dapat mengembangkan antarmuka dan layanan, atau keduanya. Memahami bagaimana semuanya bekerja bersama (atau setidaknya mengetahui apa itu) adalah penting ketika mengerjakan proyek seperti ini.

Ada baiknya juga bahwa ada banyak alat yang akan membantu Anda menyampaikan dan menggunakan layanan Web dan dapat melakukan banyak pekerjaan berat untuk Anda. Di bagian artikel berikut ini, kita akan memahami bagaimana menggunakan IBM Lotus Domino V7.0 Anda dapat dengan mudah memberikan layanan Web ke klien atau sistem.