Menggunakan HTTP sebagai Transportasi RPC

RPC-over-HTTP memungkinkan program klien menggunakan Internet untuk menjalankan prosedur yang disediakan oleh program server pada jaringan yang jauh. RPC melalui terowongan HTTP panggilannya melalui port HTTP yang mapan. Dengan demikian, panggilannya dapat melintasi firewall jaringan pada jaringan klien dan server.

RPC melalui HTTP merutekan panggilannya ke proksi RPC yang terletak di jaringan server RPC. Proksi RPC membuat dan memelihara koneksi ke server RPC. Ini berfungsi sebagai proksi, mengirimkan panggilan prosedur jarak jauh ke server RPC dan mengirim balasan server kembali ke internet ke aplikasi klien. Proses ini diilustrasikan dalam diagram berikut.

interaksi antara server rpc dan server informasi internet untuk rpc http

Diagram menunjukkan firewall di jaringan aplikasi klien. Ini tidak diperlukan untuk RPC melalui HTTP untuk beroperasi. Namun, jika jaringan klien memang memiliki firewall, jaringan klien juga memerlukan program server proksi seperti Microsoft Proxy Server.

Ketika program klien mengeluarkan panggilan prosedur jarak jauh menggunakan HTTP sebagai transportasi, pustaka run-time RPC pada klien menghubungi proksi RPC. Tergantung pada apakah klien RPC diminta untuk menggunakan HTTP atau HTTPS (HTTP dengan SSL) port 80 atau port 443 masing-masing digunakan. Proksi RPC menghubungi program server RPC dan membuat koneksi TCP/IP. Klien dan proksi RPC mempertahankan koneksi HTTP atau HTTPS mereka di internet. Koneksi HTTP atau HTTPS klien ke proksi RPC dapat melewati firewall (tunduk pada izin akses yang sesuai) jika ada. Server kemudian dapat menjalankan panggilan prosedur jarak jauh dan menggunakan koneksi melalui proksi RPC untuk membalas ke klien. Proksi RPC adalah ekstensi ISAPI yang berjalan dalam konteks IIS.

Jika klien atau server terputus karena alasan apa pun, proksi RPC akan mendeteksinya dan mengakhiri sesi RPC. Selama sesi berlanjut, proksi RPC akan mempertahankan koneksinya ke klien dan server. Ini akan meneruskan panggilan prosedur jarak jauh dari klien ke server, dan mengirim balasan dari server ke klien.

Program klien RPC dapat melakukan terowongan panggilan RPC melalui Internet dengan membuat pengikatan string formulir:

[object_uuid@]ncacn_http:rpc_server[endpoint,HttpProxy=proxy_server:http_port,RpcProxy=rpc_proxy:rpc_port,HttpConnectionOption=UseHttpProxy]

Di mana:

  • object_uuid menentukan UUID objek RPC. Untuk informasi selengkapnya, lihat Menghasilkan UUID Antarmuka dan UUID String.

  • ncacn_http memilih spesifikasi urutan protokol untuk RPC melalui HTTP. Untuk informasi selengkapnya, lihat Konstanta Urutan Protokol dan Pengikatan String.

  • rpc_server adalah alamat jaringan komputer yang menjalankan proses server RPC. Alamat server harus ditentukan dalam formulir yang terlihat dan dapat dimengerti oleh komputer proksi RPC, bukan oleh klien. Karena klien tidak terhubung langsung ke server, klien tidak perlu dapat menyelesaikan nama server, atau membuat koneksi ke server tersebut. Proksi RPC akan membuat koneksi atas nama klien, dan oleh karena itu, rpc_server harus menjadi nama yang dapat dikenali oleh proksi RPC.

  • titik akhir menentukan port TCP/IP yang didengarkan proses server RPC untuk panggilan prosedur jarak jauh. Untuk informasi selengkapnya, lihat Menemukan Titik Akhir.

  • HttpProxy secara opsional menentukan server proksi HTTP di jaringan klien RPC, seperti Microsoft Proxy Server. Jika server proksi dipilih, tidak ada nomor port yang ditentukan, stub RPC menggunakan port 80 secara default jika SSL tidak diminta, dan port 443 jika SSL ditentukan.

  • RpcProxy menentukan alamat dan nomor port komputer IIS yang bertindak sebagai proksi ke server RPC. Anda hanya perlu menentukan ini jika proses server RPC berada di komputer yang berbeda dari proksi RPC. Jika Anda tidak menentukan nomor port, stub klien RPC secara default menggunakan port 80 jika SSL tidak ditentukan, dan menggunakan port 443 jika SSL (HTTPS) ditentukan.

  • HttpConnectionOption secara opsional memungkinkan Anda untuk mengarahkan perilaku RPC saat membuat koneksi HTTP. Nilai UseHttpProxy menginstruksikan RPC untuk merutekan lalu lintasnya melalui proksi Http setiap saat, termasuk ketika klien mengatur Opsi Internet mereka di Internet Explorer ke "Lewati server proksi untuk alamat lokal."

    Opsi ini didukung pada Windows 7, Windows Server 2008 R2, Windows 8.1, dan Windows Server 2012 R2 dengan KB2916915 terinstal. Opsi ini tidak didukung pada Windows 8 dan Windows Server 2012. Aplikasi dapat menentukan apakah opsi ini didukung oleh runtime RPC dengan memeriksa nilai registri ConnectionOptionsFlag yang terletak di bawah kunci registri berikut:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc

    Jika bit 0 (LSB) dari nilai registri ini diatur, maka opsi khusus ini didukung; jika tidak, opsi ini tidak didukung oleh runtime RPC dalam sistem.

Untuk informasi selengkapnya tentang membuat pengikatan string, lihat Pengikatan dan Penanganan.

Program server RPC dapat menerima panggilan RPC terowongan dengan mendengarkan urutan protokol ncacn_http.

Microsoft memiliki dua implementasi utama RPC melalui HTTP: Versi 1 dan Versi 2.

Versi 1 (disebut RPC melalui HTTP v1) didukung melalui Windows XP. Proksi RPC versi 1 didukung melalui Windows 2000.

Versi 2 (disebut RPC melalui HTTP v2) adalah versi saat ini.

Kedua versi memiliki kemampuan yang berbeda dan interoperabilitas terbatas. Ringkasan perbedaan disediakan di sini. Untuk pertimbangan interoperabilitas, lihat Persyaratan Sistem dan Interoperabilitas untuk RPC melalui HTTP.

  • RPC melalui HTTP v1 mengharuskan Penerowongan SSL diaktifkan pada semua proksi/firewall HTTP antara RPC melalui klien HTTP dan proksi RPC. RPC melalui HTTP v1 mencoba membangun Terowongan SSL melalui port 80 meskipun data yang dikirimnya sebenarnya tidak dienkripsi SSL. Proksi dan firewall biasanya menolak permintaan tersebut kecuali dikonfigurasi secara eksplisit untuk mengizinkannya. RPC melalui HTTP v2 tidak memiliki persyaratan tersebut.
  • RPC melalui HTTP v1 tidak dapat membuat sesi SSL ke proksi RPC. RPC melalui HTTP v2 dapat mengirim semua RPC melalui lalu lintas HTTP dalam sesi SSL; secara default v2 mengharuskan data dikirim dalam sesi SSL.
  • RPC melalui HTTP v1 tidak dapat mengautentikasi ke proksi RPC. RPC melalui HTTP v2 dapat mengautentikasi; secara default v2 memerlukan autentikasi ke proksi RPC.
  • Proksi RPC v1 tidak beroperasi dengan benar ketika komputer IIS tempatnya diinstal adalah bagian dari farm web. Proksi RPC v2 beroperasi dengan benar ketika komputer IIS tempatnya diinstal adalah bagian dari farm web.

Catatan

Jika Microsoft Internet Explorer diinstal pada komputer program klien dan klien Anda tidak menentukan HttpProxy dalam pengikatan stringnya, stub klien RPC akan mencari registri di komputer klien untuk entri HttpProxy . Jika menemukannya, ia akan menggunakan proksi yang ditentukan dalam entri registri.

 

Misalkan, misalnya, program klien Anda perlu terhubung di internet ke server RPC di komputer yang disebut Server7.microsoft.com. Selanjutnya, misalkan proksi RPC berjalan pada Major7.microsoft.com. Program server RPC mendengarkan port 2225. Klien Anda akan menggunakan pengikatan string:

ncacn_http:Server7.microsoft.com[2225, RpcProxy=Major7.microsoft.com]

Jika proksi RPC dapat menyelesaikan nama server sebagai Server7, tanpa memerlukan nama domain yang sepenuhnya memenuhi syarat, Anda juga dapat menentukan:

ncacn_http:Server7 [2225, RpcProxy=Major7.microsoft.com]

Jika jaringan klien menggunakan firewall dan server proksi Internet yang disebut myproxy, dan Internet Explorer pada klien tidak dikonfigurasi untuk menggunakan proksi tersebut, Anda harus memodifikasi pengikatan string klien ke:

ncacn_http:Server7.microsoft.com[,HttpProxy=myproxy:80,RpcProxy=Major7.microsoft.com:80]

Ini mengarahkan klien untuk terhubung ke program server RPC di Server7.microsoft.com. Untuk melakukan ini, klien akan terlebih dahulu menggunakan port 80 (atau port 443 jika SSL digunakan) untuk terhubung ke myproxy. Ini akan memberi program klien akses ke Internet. Dengan menggunakan Internet, program klien selanjutnya terhubung ke proksi RPC di Major7.microsoft.com. Proksi RPC akan membuat koneksi ke program server RPC yang berjalan pada Server7.microsoft.com.

Jika jaringan klien menggunakan firewall dan jika proksi RPC tidak dapat dicapai secara langsung, untuk membuat koneksi dibuat lebih cepat, pengikatan string klien dapat dimodifikasi menjadi:

ncacn_http:Server7.microsoft.com[RpcProxy=Major7.microsoft.com:80,HttpConnectionOption=UseHttpProxy]

HttpConnectionOption memungkinkan Anda mengarahkan perilaku RPC saat membuat koneksi HTTP. Nilai UseHttpProxy menginstruksikan RPC untuk merutekan lalu lintasnya melalui proksi Http setiap saat, termasuk ketika klien mengatur Opsi Internet mereka di Internet Explorer ke "Lewati server proksi untuk alamat lokal." Ini mengarahkan klien untuk terhubung secara paksa ke proksi RPC melalui proksi Http. Ini mempercepat waktu untuk membuat koneksi karena melewati penundaan mencari server RPC secara langsung sebelum menggunakan proksi HTTP.

Jika opsi HttpConnectionOption digunakan dan Internet Explorer pada klien tidak dikonfigurasi untuk menggunakan proksi Http tersebut, koneksi mungkin gagal dengan RPC_S_INVALID_NETWORK_OPTIONS.

Sebagian besar komputer saat ini dikonfigurasi untuk penjelajahan Web. Oleh karena itu, sebagian besar klien tidak perlu menentukan HttpProxy, karena akan diambil dari pengaturan konektivitas Internet.