Tentang Distribusi Sebaya
API Distribusi Peer, yang mendukung fitur Branch Cache di Windows 7, Windows Server 2008 R2, Windows 8, dan Windows Server 2012, menawarkan serangkaian API platform yang dapat meningkatkan responsivitas jaringan aplikasi terpusat ketika diakses dari kantor jarak jauh dan membantu mengurangi pemanfaatan jaringan area luas (WAN) secara keseluruhan tanpa mengganggu teknologi keamanan jaringan.
Sistem Distribusi Peer menawarkan serangkaian API platform yang digunakan oleh penerbit yang menyediakan konten digital dan konsumen yang memintanya. Untuk membedakan peran ini dengan mudah, mungkin lebih mudah untuk memikirkan penerbit dalam peran server dan konsumen dalam peran klien. Selain itu, penting untuk diingat bahwa selain dari peran konseptual ini, layanan Distribusi Serekan adalah sistem peer sejati, seperti yang ditunjukkan oleh kemampuan untuk setiap simpul Distribusi Serekan untuk menerbitkan dan mengonsumsi konten digital. API platform Distribusi Sebaya diekspos ke penerbit dan konsumen oleh pustaka impor Win32 (PeerDist.Lib).
Siklus hidup konten yang disediakan oleh penerbit dan diambil oleh konsumen dengan layanan Distribusi Serekan terdiri dari operasi berikut:
Deskripsi | |
---|---|
Publikasi Konten | Penerbitan dilakukan dengan tujuan menghasilkan deskripsi konten yang disebut Informasi Konten, atau Info Konten singkatnya. Info Konten ini kemudian dapat digunakan oleh instans layanan Distribusi Serekan untuk mengautentikasi dan membangun kembali konten. Ketika konten diterbitkan oleh aplikasi ke dalam layanan Distribusi Rekan, yang secara konseptual merupakan operasi sisi server, konten tersebut menjadi terkait dengan Identitas Penerbit, yang didasarkan pada SID pengguna yang terkait dengan token akses thread. Pengikatan ini dilakukan untuk membatasi akses ke konten oleh entitas yang tidak sah. Namun, penting untuk dicatat bahwa akses ke informasi konten setara dengan akses ke konten itu sendiri, karena informasi konten dapat digunakan untuk mendapatkan konten dari rekan atau cache yang dihosting. Ada versi baru struktur data informasi konten di Windows 8; namun, versi sebelumnya masih didukung. Untuk berinteroperasi dengan klien Windows 7, administrator dapat mengonfigurasi layanan Distribusi Peer untuk menggunakan versi struktur data informasi konten sebelumnya. |
Pengambilan Konten | Untuk konsumen mengambil konten dari layanan Distribusi Peer, akses harus diberikan ke Info Konten yang diterbitkan yang terkait dengan konten tersebut. Layanan Distribusi Peer yang digunakan untuk mempublikasikan konten dapat menyediakan Informasi Konten terkait. Setelah konsumen memiliki Informasi Konten, API Distribusi Sebaya lainnya dapat digunakan untuk meminta konten dari layanan Distribusi Sebaya. Layanan Distribusi Sebaya akan berusaha untuk mengambil konten dari jaringan lokal. Jika konten tidak tersedia, aplikasi klien bertanggung jawab untuk mengambil konten dari server sumber. |
Penghapusan Publikasi | Untuk aplikasi yang telah menerbitkan konten ke dalam layanan Distribusi Teman, fungsi PeerDistServerUnpublish telah disediakan agar konten dapat dibatalkan penerbitannya. Setelah konten tidak diterbitkan, layanan Distribusi Sebaya lokal tidak akan lagi memberikan info konten yang terkait dengan konten tersebut. |
Penyelesaian Asinkron
API Distribusi Peer mendukung model API asinkron. Sebagai hasilnya, API Distribusi Peer memungkinkan penggunaan Port Penyelesaian I/O atau Event sebagai mekanisme sinyal untuk memproses penyelesaian operasi Distribusi Peer yang bersifat asinkron. Untuk kedua mekanisme, Distribusi Teman menggunakan struktur TUMPANG TINDIH. Secara umum, Peer Distribution mengambil kepemilikan dari struktur TUMPANG TINDIH dan parameter keluar apa pun yang diteruskan Klien ke fungsi API asinkron. Klien tidak boleh mengakses sumber daya ini sampai fungsi asinkron tertentu selesai. Segera setelah fungsi asinkron selesai, layanan Distribusi Peer tidak akan lagi memerlukan akses ke sumber daya ini dan dapat digunakan kembali seperti yang sesuai dengan aplikasi pemanggil.
Tidak akan ada penyelesaian asinkron jika fungsi mengembalikan kode kesalahan selain ERROR_IO_PENDING. Pengembalian nilai selain ERROR_IO_PENDING berarti bahwa panggilan telah gagal secara sinkron. Jika API Distribusi Serekan mengembalikan ERROR_IO_PENDING, pemanggil harus menunggu penyelesaian asinkron.
Kode kesalahan penyelesaian asinkron dapat diambil dengan salah satu dari dua cara:
Penyelesaian Berbasis Port Penyelesaian I/O
Pengguna memanggil mekanisme port penyelesaian I/O dengan menyediakan handel port penyelesaian dan kunci penyelesaian ke fungsi API berikut:
PeerDistRegisterForStatusChangeNotification
PeerDistServerPublishStream
PeerDistServerOpenContentInformation
PeerDistClientOpenContent
Pengguna membuat port penyelesaian dengan memanggil CreateIoCompletionPort. Handle port penyelesaian ini dapat digunakan secara bersamaan untuk operasi I/O asinkron lainnya maupun operasi khusus Distribusi Peer.
Pemanggil harus menggunakan fungsi GetQueuedCompletionStatus untuk mengelola penyelesaian asinkron. Jika operasi asinkron gagal fungsi GetQueuedCompletionStatus akan mengembalikan FALSE dan GetLastError akan mengembalikan kode kesalahan yang sesuai. Pemanggil harus mengabaikan semua bidang dari struktur OVERLAPPED jika kode kesalahan adalah selain dari ERROR_SUCCESS. Operasi asinkron berhasil jika fungsi GetQueuedCompletionStatus mengembalikan TRUE.
Untuk informasi selengkapnya, silakan merujuk ke Port Penyelesaian I/O .
Penyelesaian Berbasis Peristiwa
Jika pemanggil mengatur handle Event yang valid ke bidang hEvent struktur OVERLAPPED, Distribusi Peer menggunakannya untuk memberi sinyal bahwa operasi I/O asinkron terkait telah selesai.
Pemanggil utas dapat mengelola operasi overlapped dengan menentukan handle ke objek event manual-reset dari struktur OVERLAPPED di salah satu fungsi tunggu. Setelah Event telah diberi sinyal, pemanggil harus memanggil PeerGetOverlappedResult menggunakan struktur OVERLAPPED yang sesuai. PeerGetOverlappedResult akan mengembalikan FALSE dan pemanggil harus memanggil GetLastError untuk mengambil kode kesalahan. Pemanggil harus mengabaikan semua bidang struktur OVERLAPPED jika kode kesalahan bukan ERROR_SUCCESS. Operasi asinkron berhasil jika fungsi PeerGetOverlappedResult mengembalikan TRUE.
Jika pemanggil menyediakan port penyelesaian bersama dengan peristiwa, peristiwa akan digunakan sebagai mekanisme penyelesaian.
Windows 7: Gunakan fungsi GetOverlappedResult sebagai pengganti fungsi PeerGetOverlappedResult.