Web Service dengan Delphi
Dukungan Delphi pada web service dimulai pada versi 6 dan dilanjutkan terus sampai sekarang. Delphi membungkus irnplementasi SOAP dengan sangat rapi.
Jika Anda menganggap berusaha memahami kode-kode pada SOAP (pada artikel sebelumnya) sebagai suatu mimpi buruk, maka anda masih cukup normal. Untungnya menggunakan Delphi, kita tidak perlu berurusan dengan proses parsing SOAP message. Delphi menghandlenya untuk kita, sehingga kita bisa fokus ke bagaimana mewujudkan web service daripada pusing-pusing menerjemahkan SOAP message.
Membuat Server Web Service
Agar mudah dan fokus ke bagaimana membuat server web service menggunakan Delphi, kita akan membuat web service sederhana untuk mengenkhpsi teks dengan algoritma MD5, kita akan menggunakan unit uMDS.
Aplikasi web service ini akan menerima request berisi teks yang akan dienkripsi, melakukan enkripsi, dan mengembalikan teks hasil enkripsi ke aplikasi klien. Anda diharapkan telah memiliki pengetahuan paling tidak mengenai web server dan cara kerjanya. Membuat SOAP Server Application buka Delphi. Klik File->New->Other. Pilih tab Web Services dan pilih SOAP Server Application. Klik OK, selanjutnya akan dltampilkan dialog New SOAP Server Application seperti gambar 2.
Seperti yang terlihat di bawah, ada beberapa pilihan web server yang bisa dipakai, yakni: • Pilih ISAPI/NSAPI Dyanamic Link Library bia Anda menggunakan IIS atau Netscape Web Server, • CGI Stand-alone executable. Pilih opsi ini bila aplikasi Anda akan dijalankan sebagai aplikasi CGI (Common Gateway Interface). • Apache 1.xShared module (DLL). Pilih opsi ini bila Anda menggunakan Apache 1 .x • Apache 2.xShared module (DLL). Pilih opsi ini bila Anda menggunakan Apache 2.0 ke atas. • Web App Debugger executable. Pilih opsi ini bila ingin menggunakan web server milik Delphi.
Untuk development, disarankan menggunakan pilihan ini, karena sangat memudahkan pada saat kita melakukan debugging aplikasi. Jika sudah stabil, aplikasi dapat kita ubah menggunakan tipe server lain dengan mudah. Untuk artikel ini, saya gunakan pilihan ini dan mengisi Class Name de¬ngan TMD5Server. Klik OK. Selanjutnya Delphi akan membuat aplikasi dan akan menampilkan dialog konfirmasi apakah kita ingin membuat SOAP Server Interface. Jika Anda pilih untuk tidak menciptakan SOAP Server Interface sekarang, Anda dapat membuat SOAP Server Interface nanti dengan cara klik File->New->Other->WebServices-> SOAP Server Interface.
Jika Anda mernbuat SOAP Server Interface, akan ditampilkan dialog seperti pada gambar 3, yakni:
• Service name adalah nama web service. Namanya hams memenuhi standar penarnaan variable pada Delphi.
•Unit identifier adalah nama file unit yang akan dihasilkan.
• Generate comments, jika dipilih, menyebabkan Delphi akan menambahkan komentar mengenai interface ke dalam source code interface.
• Generate sample methods, jika dipilih, menyebabkan Delphi akan menambah¬kan contoh bagaimana memanggil metode interface.
• Service activation model berisi tipe ak-tivasi. Per Request, instance implemetasi class server akan dibuat tiap kali ada request dan akan dibebaskan setelah request selesai ditangani. Global, instance implementasi class hanya ada satu dan akan menghandle semua request. Isikan service name dan unit identifier sebagai MDSSvc dan biarkan lainnya apa adanya. Klik OK. Delphi akan menghasilkan empat unit, yakni unit form utama, unit web module, unit bernama MD5Svdmpl.pas, dan MD5Svdntf.pas.Unit MDSSvclmpI.
Ketika berisi implementasi interface yang dideklarasikan di MD5Svclntf.pas. Berikut ini kode kedua unit tersebut:
MD5Svdmpl.pas
{ Invokable implementation File for TMD5Svc which implements IHD5Svc }
unit MD5SvcImpl;
interface uses InvokeRegistry, Types, XSBuiltlns, MD5SvcIntf;
type { TMD5Svc }
TMD5SVC = class(TInvokableClass, IHD5Svc)
public implementation Initialization { Invokable classes must be registered } InvReg1stry.
Reglsterlnvokabl eClass(TM05Svc);
end.
MD5Svclntf.pas { Invokable interface IMD&Svc }
unit M05SvcIntf;
interface uses InvokeRegistry, Types, XSBuiltlns;
type { Invokable interfaces must derive from Ilnvokable }
IMD5Svc = interfaced Invokable)
[‘{DM7E88A-A66D-48A6-911F- 51D515375506}']
{ Methods of Invokable interface must not use the default }
{ calling convention ; stdcall is recommended }
end;
implementation initialization
{ Invokable interfaces must be registered }
InvRegistry.Register!nterfac e(TypeInfo(IMD5Svc));
end.
Tambahkan metodebernama Encrypt, se-hingga deklarasi interface IMD5Svc menjadi seperti berikut ini:
{ Invokable interfaces must derive from Ilnvokable }
IMD5Svc = interface(IInvokable)
['{DD0 7E88A-A66D-48A6-911F-510515375506}']
function Encrypt(const a text: string): string;
stdcal 1;
{ Methods of Invokable interface must not use the default }
{ calling convention; stdcall is recommended }
end;
Selanjutnya Anda tambahkan juga metode Encrypt ke kelas TMD5Svc dan lengkapi implementasinya sehingga menjadi seperti berikut ini:
{ THD5Svc } TMD5Svc = class
Pastikan web server aktif dengan mengklik tombol Start. Selanjutnya buka browser dan browsing ke alamat http://localbost:8081/MD5SvcTMD5Server. Untuk mendapatkan dokumen WSDL, klik IMD5SVC [WSDL].
Selanjutnya kita import dokumen WSOL. Jalankan MDSSvcexe dan Web App Debug¬ger. Klik File->New->Other->WebServices->WSDL importer (lihat gambar 1.1).
Implementation
uses u_wsdl_lMD5Svc;
IIS
MODULE_MAGIC_NUMBER_MINOR = 0;
Untuk Apache versi 2.0.41 sampai 2.0.45 ubah menjadi:
MODULE_MAGIC_NUMBER_MAJOR = 20020903; { Apache 2.0.41..45 }
M0DULE_MAG1C_NUMBER_MIN0R = 0;
Untuk versi 2.046:
MODULE_HAGIC_NUMBER_MAJOR = 20020903; { Apache 2.0.46 }
MODULE_MAGIC_NUrlBER_MINOR = 2;
Untuk versi 2.0.47 dan 2.0.48:
MODULE_MAGIC_NUMBER_MAJOR = 20020903; { Apache 2.0.47..48 }
M0DULE_HAG1C_NUMBER_MIN0R = 4;
Untuk versi 2.0.49:
MODULE_HAGIC_NUMBER_MAJOR = 20020903; { Apache 2.0.49 }
MODULE_MAGIC_NUrlBER_MINOR = 7;
Untuk versi 2.0.50:
MODULE_MAGIC_NUMBER_MAJOR = 20020903; { Apache 2.0.50 )
MODULE_MAG1C_NUMBER_MINOR = 8;
2 komentar:
Aq nga ngerti....?
liss....sumpahh neeeh artikel kreeenn banget!!!
Kalo bisa jangan cuma buat artikel, tapi lu implemntasiin OK!?Keren...keren...
Gw baru tau step by step'a...Tapi membantu banget buuu....
Posting Komentar