none
(Sumber: milist DOTNET) aplikasi sync dari oracle ke aplikasi .net RRS feed

  • Pertanyaan

  • rekan, saya punya project. DB nya menggunakan oracle. saya ingin mendevelop aplikasi yg bisa mengambil data di oracle kemudian di simpan ke local device. nah data ini nanti bisa diolah secara offline dan tentunya bisa di update kembali ke server. data yg ingin disimpan cukup besar, soalnya untuk aplikasi budgeting (kira2 data 3 tahun sebelumnya dibutuhkan utk men-generate prediksi budgeting).


    ketika user mengolah data via aplikasi local, saya ingin rule yg ada di database juga dieksekusi di lokal, karena model datanya ini saling berkaitan dgn tabel2 lain jadi harus ada validasi.


    ada solusi gak y? pilihan saya sebelumnya jatuh ke ADO.NET atau pakai XML based, tapi gimana dgn rule/function2 validasi yg ada di database nya? sedangkan database nya adalah oracle yg notabene nya PACKAGE ORIENTED.


    thx rekan.


    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Rabu, 12 Oktober 2011 08.35
    Moderator

Jawaban

  • ini candidate buat fungsi offline yg saya tanyain beberapa hari yg lalu (ms sync framework).

    jadi kira2:

    • Sync ke server pusat ambil data, trus simpan ke lokal. Selanjutnya work in "offline-mode"
    • Kalo mau mau simpan/update tinggal "online"/sync lagi

    Aplikasi semacam ini yg paling sering saya liat utk insurance agent bikin proposal.

     

    Btw utk local bisa pake oracle xe, cuma ga tau seberapa berat jadinya di lokal. Enaknya nanti mungkin bisa sinkronisasi package2nya juga, ga cuma data.

    Kabar buruknya, menurut temen ms sync yg OOTB cuma utk sqlserver, utk oracle mesti bikin sendiri.

     

    Dijawab oleh: Panji Aryaputra


    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Rabu, 12 Oktober 2011 08.36
    Moderator

Semua Balasan

  • ini candidate buat fungsi offline yg saya tanyain beberapa hari yg lalu (ms sync framework).

    jadi kira2:

    • Sync ke server pusat ambil data, trus simpan ke lokal. Selanjutnya work in "offline-mode"
    • Kalo mau mau simpan/update tinggal "online"/sync lagi

    Aplikasi semacam ini yg paling sering saya liat utk insurance agent bikin proposal.

     

    Btw utk local bisa pake oracle xe, cuma ga tau seberapa berat jadinya di lokal. Enaknya nanti mungkin bisa sinkronisasi package2nya juga, ga cuma data.

    Kabar buruknya, menurut temen ms sync yg OOTB cuma utk sqlserver, utk oracle mesti bikin sendiri.

     

    Dijawab oleh: Panji Aryaputra


    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Rabu, 12 Oktober 2011 08.36
    Moderator
  • Kalau mau cari open source code untuk ini mungkin ada tetapi sebaiknya membuat sendiri Sync Repository class. Jadi tidak bergantung pada source database melainkan pada data source-nya. Cuma data yang anda miliki di lokal dan di server harus mengikuti aturan main Sync Model. Yaitu minimal ada tiga kolom, index, created date dan modified date. Kalau masing2 tables di lokal dan di server ada tiga kolom tersebut pada setiap tabel yang hanya ingin bisa di sinkronkan, maka anda bisa membuat Sync Repository class-nya.

     

    1.       Buat Interface ISyncRepository. Buat DataSynchronizer repository class.

    2.       Buat Data Provider untuk masing2 database atau data source sesuai yang dibutuhkan untuk menarik data dari database kedalam bentuk List<T>.

    3.       Di dalam DataSynchronizer repository, buat sync comparison dengan pseudo algoritma sebagai berikut:

     

    a.        Select tabel yang akan di sinkronisasikan dan tentukan arah sinkronisasi. à atau ß atau ó (local to server, server to local, merge both).

    b.       Periksa  object.Count() antara masing2 tabel. Yang mana satu yang kurang atau lebih, copy List<T> tersebut kedalam yang satunya.

    c.        Periksa tanggal Created Date, bila ada yang tidak sama, maka copy List<T> tersebut didalam masing2 tabel sesuai arah Sync.

    d.       Periksa tanggal Modified Date, bila ada yang tidak sama, maka Update List<T> tersebut didalam masing2 tabel sesuai arah Sync.

    e.       Di DataProvider class tambah method Dump() balik ke database dengan Insert, Update, Delete. Atau bila dengan OData atau generic List bisa menggunakan indikator melalui properties checking dan WCF atau Files. Atur2 aja bentuk di DataProvider-nya.

     

    Dengan cara seperti ini, anda bebas meng-Sync data dari mana saja dan tidak terkait dengan database atau list atau sumber data apapun. Jika anda ingin menambah sumber data ya tinggal tambah class DataProvider[Some Data Source] saja. Masing2 data provider memiliki perbedaan, misalnya Oracle dan MySql dan SQL Server berbeda dari segi syntax. Anda juga bisa membuat Data Provider untuk Sync file. Tetapi anda nantinya hanya melihat satu base method yaitu base.Sync(); dan bisa anda tambah sesuka hati. Anda juga bisa menambahkan delegates and events untuk memberikan indikasi Progress Sync-nya, misalnya dengan persentase atau dengan counter.

     

    Perlu diperhatikan saja, data yang sudah masuk kedalam Data Sync Repository class yang anda buat, datatype-nya harus sudah menjadi bentuk data yang anda buat sendiri object-nya. Misalnya, kalau di MySql pakai text di SQL Server pakai nvarchar(MAX), maka anda bisa membuat pakai string saja atau membuat object string structure sendiri. Ini lebih bebas dan tidak bergantung pada sumber datatype dari database ataupun dari .NET sendiri.

     

    Setelah anda miliki Data Sync Repository dengan cara ini, maka anda bisa meletakan DataProviderSource dan DataSynchronizer di lokal dan di server sesuai masing2 bentuk data source-nya. Masalah komunikasi antara client server bisa anda buat menggunakan WCF (HTTP, WebService, TCP, dll). Jika kesulitan dengan bentuk Full Duplex, anda juga bisa dengan cara splitting (chunking) menggunakan HTTP (anggap saja seperti download file dari server dulu baru diproses di lokal, sisanya kirim balik dengan upload ke server untuk Sync server host). Untuk mempercepat proses sinkroniasai, hanya kirim dan periksa tiga kolom yang saya sebutkan saja diatas. Setelah anda memiliki Listing/Mapping tabel row (baris) apa saja yang mau disinkronkan, maka baru lakukan full data transfer.

     

    Kelihatannya rumit, tetapi kalau anda sudah memiliki DataSynchronizer-nya, segalanya menjadi mudah. Saya menggunakan model ini untuk mengsinkronkan SQL Server di lokal dan MySql di server. Nantinya, kalau Bos anda minta bentuk Database lain ya tinggal buat aja DataProvider class-nya untuk sumber data tersebut, tap ke DataSynchronizer dan proses DoSync(); misalnya bisa langsung digunakan.

     

    Mudah2an bisa membantu.

     

    Dijawab oleh: Riza Marhaban

     

     

     

     
    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Rabu, 12 Oktober 2011 08.37
    Moderator