Assets

Asset adalah file sumber daya (seperti gambar, suara, video, CSS stylesheet, javascript, dll.) yang dimiliki oleh kelas komponen tertentu. Assets disediakan bagi para pengguna Web. Untuk kegunaan dan kemudahan penyebaran kelas komponen terkait, asset harus berada bersama dengan file kelas komponen. Sebagai contoh, tombol toggle dapat memakai dua gambar, disimpan dalam file down.gif dan up.gif, untuk menampilkan kondisi toggle berbeda. Jika kita ingin file gambar disimpan di bawah direktori images di bawah akar dokumen server Web, tidak akan memembuat nyaman bagi para pengguna komponen tombol toggle, karena setiap kali mereka mengembangkan atau menyebarkan aplikasi baru, mereka harus meng-copy file gambar ke direktori tertentu itu secara manual. Untuk mengeliminir persyaratan ini, direktori relatif ke file kelas komponen harus digunakan untuk menyimpan file gambar. Strategi umum adalah menggunakan direktori yang berisi file kelas komponen untuk menyimpan file asset.

Karena direktori yang berisi file kelas komponen biasanya tidak bisa diakses oleh pengguna Web, PRADO menerapkan skema penerbitan asset untuk menjadikan assets tersedia bagi para pengguna Web. Sebuah asset, setelah diterbitkan, akan mempunyai URL di mana para pengguna bisa mengambil file asset.

Penerbitan Asset

PRADO menyediakan beberapa metode untuk penerbitan asset atau direktori yang berisi asset:

HATI-HATI: Berhati-hatilah dengan penerbitan asset, karena ia memberikan para pengguna Web mengakses ke file yang sebelumnya tidak dapat diakses. Pastikan bahwa Anda tidak menerbitkan file yang tidak ingin dilihat pengguna lain.

Kustomisasi

Penerbitan asset diatur oleh modul System.Web.TAssetManager. Standarnya, semua file asset yang diterbitkan disimpan di bawah direktori [AppEntryPath]/assets, di mana AppEntryPath merujuk ke direktori yang berisi naskah entri aplikasi. Pastikan direktori assets bisa ditulisi oleh proses server Web. Anda dapat mengubah direktorinya ke direktori lain dengan mengkonfigurasi properti BasePath dan BaseUrl pada modul TAssetManager dalam konfigurasi aplikasi,

<modules> <module id="asset" class="System.Web.TAssetManager" BasePath="Web.images" BaseUrl="images" /> </modules>

Performansi

PRADO menggunakan teknik cache guna memastikan efisiensi penerbitan asset. Menerbitkan asset intinya memerlukan operasi copy file, yang mahal. Untuk menyimpan operasi copy file yang tidak diperlukan, System.Web.TAssetManager hanya menerbitkan asset saat ia memiliki waktu modifikasi file lebih baru daripada file yang pernah diterbitkan. Ketika aplikasi dijalankan dengan mode Performance, pemeriksaan cap waktu tersebut juga diabaikan.

SARAN: Jangan menggunakan penerbitan asset secara berlebihan. Konsep asset dipakai terutama untuk membantu pemakaian ulang dan redistribusi kelas komponen agar lebih baik. Normalnya, Anda tidak akan menggunakan penerbitan asset untuk sumberdaya yang tidak terikat ke komponen mana pun dalam aplikasi. Sebagai contoh, Anda jangan menggunakan penerbitan asset untuk gambar yang digunakan terutama sebagai elemen desain (misalnya logo, gambar latar belakang, dll). Biarkan server Web melayani gambar ini secara langsung yang akan membantu meningkatkan performansi aplikasi Anda.

Contoh Tombol Toggle

Sekarang kita menggunakan contoh tombol toggle untuk menjelaskan penggunaan asset. Kontrol menggunakan dua file gambar up.gif dan down.gif, yang disimpan di bawah direktori yang berisi file kelas. Ketika tombol dalam kondisi Up, kita ingin menampilkan gambar up.gif. Ini dapat dikerjakan seperti berikut,

class ToggleButton extends TWebControl { ... protected function addAttributesToRender($writer) { ... if($this->getState()==='Up') { $url=$this->getAsset('up.gif'); $writer->addAttribute('src',$url); } ... } ... }

Dalam contoh di atas, pemanggilan $this->getAsset('up.gif') akan menerbitkan file gambar up.gif dan mengembalikan URL untuk file gambar yang diterbitkan. URL kemudian disajikan sebagai atribut dari tag gambar HTML.

Untuk meredistribusi ToggleButton, cukup paketkan bersama file kelas dan file gambar. Para pengguna ToggleButton cuma perlu untuk mengurai file, dan mereka bisa menggunakannya secara langsung tanpa mencemaskan mengenai ke mana meng-copy file gambar itu.