Menerapkan Manual State Management

Pool development model menawarkan dua pilihan untuk pengaturan state objek.

  1. Automatic state management. MapXtreme akan menangani user state objek secara otomatis
  2. Manual state management. MapXtreme tidak akan mengatur state objek mana yang disimpan atau di restore.

Posting ini akan membahas bagaimana membuat aplikasi mapXtreme dengan menerapkan manual state management.

Dalam manual state, mapxtreme tidak akan otomatis menyimpan state objek, tetapi tergantung pada kode yang disertakan dalam aplikasi. Untuk lebih mudahnya, kita buat projek baru menggunakan template dari mapxtreme.

Setting Web.Config
Buka file web.config dari projek yang kita buat. Ubah setting di AppSettings seperti berikut.

<appSettings>
<!--Use this setting to turn Session pooling on/off (true/false)-->
<add key="MapInfo.Engine.Session.Pooled" value="true" />
<!--Use this setting to save Session state automatically (HttpSessionState) or manually (Manual)-->
<add key="MapInfo.Engine.Session.State" value="Manual" />
<!--Use this setting to preload a workspace on Session creation-->
<add key="MapInfo.Engine.Session.Workspace" value="C:\Program Files\MapInfo\MapXtreme\6.8.0\Samples\Data\World.mws;c:\ProgramFiles (x86)\MapInfo\MapXtreme\6.8.0\Samples\Data\World.mws" />
</appSettings>

Untuk manual state management, MapInfo.Engine.Session.Pooled di setu “true” dan Mapinfo.Engine.Session.State di set “Manual”.

Di bagian bawah, ubah nilai sessionState mode menjadi “StateServer”

<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="20" />

Buat class yang merupakan turunan dari class MapInfo.WebControls.StateManager.

Class ini harus menerapkan dua method berikut

Public Overrides Sub RestoreState()
Public Overrides Sub SaveState()

Jika projek dibuat dengan template, biasanya sudah dimasukan class yang mengimplementasikan kedua method ini yaitu class AppStateManager yang ada di folder App_Code.

Method RestoreState akan dijalankan oleh webform dari method Page_Load setiap kali client melakukan submit request. Setelah Page_Load selesai, aplikasi akan menjalankan prosedur-prosedur yang di minta oleh client. Setelah semua proses selesai, method Page_Unload akan menjalankan method SaveState untuk menyimpan informasi terakhir dari state objek. Berikut adalah contoh kode standar yang dibuat oleh mapXtreme.

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
   If StateManager.IsManualState() Then
      ' Jika  state manger tidak ada di session, maka definisikan statemanager.
      If StateManager.GetStateManagerFromSession() Is Nothing Then
         'inisialisasiAppStateManager class
         Dim myStateManager as AppStateManager = New AppStateManager()
         'simpan State manager ke session
         StateManager.PutStateManagerInSession(myStateManager)

         'simpan map alias ke state manager dictionary
         StateManager.GetStateManagerFromSession().ParamsDictionary(StateManager.ActiveMapAliasKey)= MapControl1.MapAlias
      End If

      'RestoreState
      StateManager.GetStateManagerFromSession().RestoreState()
   End If
End Sub

'Pada saatunloading page, simpan state objek
Private Sub Page_Unload(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Unload
   If StateManager.IsManualState() Then
      StateManager.GetStateManagerFromSession().SaveState()
   End If
End Sub

Serializing dan Deserializing mapXtreme Objek

Di class AppStateManager, SaveState akan menjalankan
ManualSerializer.SaveMapXtremeObjectIntoHttpSession. Kita bisa menentukan object apa yang disimpan dan kata kuncinya sesuai dengan kebutuhan aplikasi.

ManualSerializer.SaveMapXtremeObjectIntoHttpSession(map.Layers,"Layers")

Map.Layers adalah objek yang akan disimpan, “Layers” adalah kata kuncinya.

Untuk memanggil (restore) objek yang telah disimpan,RestoreState akan memanggil objek yang disimpan hanya dengan kata kuncinya.

ManualSerializer.RestoreMapXtremeObjectFromHttpSession("Layers")

System secara otomatis mencari informasi yang sesuai dengan kata kunci yang disebutkan.

Kesimpulan:
Untuk membuat aplikasi mapXtreme menggunakan manual state

  1. Ubah appsettings di Web.Config. Session.Pooled = true dan session.state = manual
  2. Ubah session state mode di web.config menjadi “StateServer”
  3. Buat class turunan dari MapInfo.WebControls.StateManager.
  4. Tentukan objek apa saja yang akan disimpan, dan definisikan di method SaveState()
  5. Di method RestoreState(), panggil objek-objek yang telah disimpan.
  6. Tambahkan kode di webform, di bagian Page_Load untuk inisialisasi state manager dan di bagian Page_Unload untuk menyimpan state objek.

Happy coding.

About Yuniar

Penulis sekarang lebih banyak bekerja menggunakan teknologi Microsoft .NET secara umum dan TIDAK lagi menggunakan aplikasi MapXtreme.net dari MapInfo. Karena itu mohon maaf, jika pertanyaan-pertanyaan mengenai MapXtreme sudah tidak bisa saya jawab lagi.

Posted on 14 Juli 2009, in MapXtreme and tagged , , . Bookmark the permalink. Tinggalkan komentar.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: