Halaman dengan IDirectorySearch
Halaman menentukan berapa banyak baris yang dikembalikan server ke klien. Halaman dapat ditentukan oleh jumlah baris atau batas waktu. Objek ADSI COM mengambil setiap halaman hasil berdasarkan nilai yang tercantum dalam tabel berikut. Pemanggil memanggil IDirectorySearch::GetNextRow ketika telah mencapai akhir halaman, dan objek ADSI COM mengambil halaman berikutnya.
Nilai | Deskripsi |
---|---|
ADS_SEARCHPREF_PAGESIZE | Menentukan jumlah maksimum baris yang akan dikembalikan dalam halaman. |
ADS_SEARCHPREF_PAGED_TIME_LIMIT | Menentukan waktu maksimum, dalam detik, yang harus dihabiskan server untuk mengumpulkan halaman hasil sebelum mengembalikan halaman ke klien. Jika batas tercapai, server menghentikan pencarian dan mengembalikan baris yang sudah diambil untuk halaman tersebut. |
Jika tidak satu pun dari preferensi pencarian ini diatur, defaultnya adalah tidak ada halaman. Pencarian Direktori Aktif yang dilakukan tanpa halaman dibatasi untuk mengembalikan maksimum 1000 rekaman pertama, jadi Anda harus menggunakan pencarian halaman jika ada kemungkinan bahwa kumpulan hasil akan berisi lebih dari 1000 item.
Operasi pencarian dapat mengakibatkan sejumlah besar objek dikembalikan. Jika server mengembalikan hasil dalam satu set, server dapat mengurangi performa klien dan server, serta memengaruhi beban jaringan. Pencarian berhala dapat digunakan untuk mencegah hal ini. Dalam pencarian berpakaian halaman, klien dapat menerima hasil dalam paket yang lebih kecil. Ukuran paket dikenal sebagai ukuran halaman pencarian.
Pencarian halaman menawarkan manfaat bagi klien dan server. Klien dapat lebih responsif dalam menyajikan hasilnya kepada pengguna. Ini sangat relevan dengan alat antarmuka pengguna grafis yang dapat memulai proses tampilan jendela sementara utas lainnya secara bersamaan menerima data.
Di sisi server, pencarian halaman membuat operasi dapat diskalakan. Misalnya, jika seratus klien mengeluarkan permintaan pencarian secara bersamaan dan, rata-rata, setiap klien menerima dua ratus objek. Jika tidak ada ukuran halaman yang ditentukan, dalam skenario terburuk, server harus memiliki memori yang cukup untuk menyimpan 20.000 objek. Sebaliknya, jika setiap klien menentukan ukuran halaman menjadi, misalnya, sepuluh objek, persyaratan memori di server dengan demikian dikurangi dengan faktor 20.
Selain itu, menggunakan pencarian berpakaian halaman, klien dapat meninggalkan operasi yang sedang berlangsung. Sebaliknya, dalam pencarian non-halaman, klien menerima hasil yang ditetapkan dalam satu paket. Ini dapat mengurangi performa jaringan.
ADSI menangani ukuran halaman untuk klien. Klien tidak perlu menghitung jumlah objek yang sedang berlangsung. ADSI merangkum interaksi server untuk klien. Dari perspektif klien, pencarian mengembalikan tataan hasil lengkap.
Disarankan agar penomoran halaman digunakan.
Untuk menentukan ukuran halaman maksimum, atur opsi pencarian ADS_SEARCHPREF_PAGESIZE dengan nilai ADSTYPE_INTEGER diatur ke jumlah maksimum baris per halaman dalam array ADS_SEARCHPREF_INFO yang diteruskan ke metode IDirectorySearch::SetSearchPreference.
Contoh kode berikut menunjukkan cara mengatur ukuran halaman maksimum.
ADS_SEARCHPREF_INFO SearchPref;
SearchPref.dwSearchPref = ADS_SEARCHPREF_PAGESIZE;
SearchPref.vValue.dwType = ADSTYPE_INTEGER;
SearchPref.vValue.Integer = 1000;
Untuk menentukan waktu halaman, atur opsi pencarian ADS_SEARCHPREF_PAGED_TIME_LIMIT dengan nilai ADSTYPE_INTEGER diatur ke jumlah detik maksimum yang harus dihabiskan server untuk mengambil halaman dalam array ADS_SEARCHPREF_INFO yang diteruskan ke metode IDirectorySearch::SetSearchPreference.
Contoh kode berikut menunjukkan cara menentukan waktu halaman.
ADS_SEARCHPREF_INFO SearchPref;
SearchPref.dwSearchPref = ADS_SEARCHPREF_PAGED_TIME_LIMIT;
SearchPref.vValue.dwType = ADSTYPE_INTEGER;
SearchPref.vValue.Integer = 60;