Ismail Hamzah

.NET
See also: Other Geeks@INDC

DotNetNuke Page Rendering Process

Sebuah aplikasi web akan terdiri dari banyak halaman (file .aspx) dalam usaha menampilkan content dari aplikasi web tersebut. Berbeda dengan aplikasi web pada umumnya, sebuah aplikasi web DotNetNuke hanya menggunakan sebuah file aspx saja yaitu file Default.aspx. Ilusi yang terjadi ketika user mengklik menu item untuk berpindah dari satu halaman ke halaman yang lainnya di peroleh dengan suatu teknik yang disebut “Dynamic Page Rendering”. Jadi, meskipun hanya menggunakan sebuah file aspx saja (yaitu Default.aspx), user “seolah-olah” menjelajahi banyak halaman.

 

Sebuah halaman aplikasi web DotNetNuke terdiri dari satu atau lebih module. Module adalah sebuah entitas fungsional terkecil. Contoh-contoh module adalah: Module Hit counter, Module users online, Module User Account, Module Google Adsense, Module Blog, Module FAQ, Module Feedback, Module e-Commerce dan banyak lagi. Module bisa sangat sederhana dan bisa sangat rumit, bisa sesederhana module hit counter dan bisa serumit module e-Commerce. Truth to be told, module terdiri dari kumpulan file-file ascx yang memanfaatkan API dari DotNetNuke dan ASP.NET. (note: inilah alasan mengapa DotNetNuke disebut sebagai sebuah Framework bukan sekedar CMS biasa).

 

Informasi tentang sebuah halaman beserta module-module apa saja yang terkandung di halaman tersebut disimpan dalam database. Halaman yang satu dengan halaman yang lain bersifat unik. Sebuah halaman dapat diidentifikasi dan dibedakan dari halaman yang lainnya dengan menggunakan apa yang disebut “tabid” (dibaca: tab-id). Sebuah nilai tabid yang unik hanya untuk sebuah halaman saja. Sama seperti halaman, module-module dalam aplikasi web DotNetNuke diidentifikasi dan dibedakan dengan sebuah nilai unik yang disebut ModuleID. Module-module mana saja yang mengisi sebuah halaman dapat ditentukan dengan mudah karena didalam database, ModuleId dengan tabid memiliki relationship.

Ketika seorang user mengklik sebuah menu item untuk menuju pada sebuah halaman tertentu, proses behind the scene nya adalah:

  1. File Default.aspx di panggil
  2. Sebuah querystring dengan parameter tabid dilewatkan ke web server
  3. Nilai querystring tabid kemudian digunakan oleh DNN database server untuk memperoleh informasi moduleid yang ber-relasi dengan tabid tersebut.
  4. Informasi yang diperoleh DNN database server kemudian diberikan kepada web server
  5. Web server kemudian menggunakan informasi yang diperoleh dari database server untuk merender file Default.aspx (dynamic page rendering)
  6. User memperoleh halaman yang diinginkan.

 

 

 

Note: Fitur HumanFriendlyURL yang dibawa oleh DNN 4.7 akan lebih merampingkan tampilan URL aplikasi DotNetNuke. Tabid tidak akan lagi terlihat di address bar dari web browser. Informasi lebih lanjut mengenai HumanFriendlyURL dapat di lihat di blognya sang master DotNetNuke, Agung Riyadi.

Share this post: | | | |
Posted: Dec 16 2007, 02:41 PM by go2ismail | with 6 comment(s)
Filed under:

Comments

De_Joker said:

ini termasuk pattern Front Controller atau Page Controller mas ?

# December 17, 2007 2:20 PM

go2ismail said:

Controller adalah object yang melayani request pada sebuah halaman (page). Controller akan mendekode semua info request dan kemudian akan digunakan oleh View (usercontrol) yang bersangkutan. (request => Controller => ASP.NET user control).

Ada dua buah controller: 1. Page controller dan 2. Front Controller. Page controller spesifik pada page tertentu (self explanation by its name). sedangkan Front controller lebih kepada request pada aplikasi.

Jika berangkat dari cerita diatas, maka saya mengasumsikan DotNetNuke "menganut" Front controller. kenapa? melihat fakta bahwa DNN hanya menggunakan sebuah file Default.aspx, maka semua request (application or page) pasti akan selalu melewati file tunggal tersebut. Melihat fakta lanjutan bahwa DNN mengaplikasikan security sampai level module, maka untuk dapat mengakses sebuah page atau sebuah module, harus dapat di"cek" dulu roles and membership si user. dan itu berarti a whole application thing.

# December 17, 2007 4:40 PM

De_Joker said:

Interesting, kalo menurut mas, nanti yang cambridian make pattern gimana ya ? udah integrated workflow n silverlight khan :D bisa ga front controller tuh :)

# December 18, 2007 1:14 PM

go2ismail said:

waduh... saya bukan arsitek design pattern, jadi nggak akan pede jawabnya, lagian saya praktikum bahasa C ke dirimu wahai andri teman seangkatanku hehehe, you know lah sejauh mana kemampuan otak si ismail ini, hihihi

peace.. anyway.. kalau saya punya bocorannya nanti saya share :-) and vice versa dong... :-)

# December 18, 2007 2:19 PM

De_Joker said:

Eh... ? koq akhirnya tau juga :P bang reza cerita ya :P kekeke

ditunggu ya bocorannya, penasaran sama cambridian neh, kynya bakalan keren dari presentasinya si scott sih

# December 19, 2007 6:55 AM

go2ismail said:

hehehe, liat di blognya andri yadi :-)

# December 19, 2007 8:27 AM
Leave a Comment

(required) 

(required) 

(optional)

(required) 
Are you human?:  


Enter the numbers above: