Penulis: Dflying Chen ( http://dflying.cnblogs.com/ )
Rangkaian artikel sebelumnya semuanya secara langsung memanggil Layanan Web tunggal. Namun, dalam pengembangan proyek sebenarnya, terutama dalam konversi proyek yang ada, mengekstraksi logika dalam halaman ke dalam Layanan Web khusus sering kali memerlukan banyak pekerjaan. Atlas mempertimbangkan hal ini dan memungkinkan Anda menambahkan atribut [WebMethod] ke metode publik sisi server untuk memungkinkan panggilan langsung dari JavaScript sisi klien.
Untuk mengizinkan klien memanggil metode yang ditentukan di halaman ASPX secara langsung, Anda perlu menentukan metode tersebut sebagai publik dan menambahkan atribut [WebMethod], seperti metode sisi server berikut yang ditentukan dalam file ASPX:
<script runat="server">
[Metode Web]
publik int TambahkanInt(int int1, int int2)
{
kembalikan int1 + int2;
}
</skrip>
Di sisi klien, Atlas akan Mashup metode AddInt JavaScript untuk Anda, yang ada dalam namespace khusus PageMethods, sehingga Anda dapat memanggil metode di atas melalui PageMethods.AddInt().
Pada saat yang sama, dengan mendefinisikan WebMethod ke dalam halaman ASPX, Anda juga dapat mengakses nilai dan ViewState dari kontrol sisi server pada semua halaman dalam metode ini, dan siklus hidup seluruh halaman akan sama dengan halaman ASP.NET tradisional PostBack, seperti Page_Load Semua metode lain akan dipanggil, memungkinkan kita memiliki akses yang lebih kuat ke halaman tersebut. Namun, hal ini juga membawa penurunan kinerja, karena setiap kali Metode Web dipanggil, ViewState dan nilai kontrol pada halaman akan diteruskan kembali ke server, dan pemrosesan sisi server dari seluruh siklus hidup halaman akan lebih lama dari sekedar memproses yang murni. Metode Web yang didefinisikan dalam ASMX jauh lebih rumit. Jadi di sini saya merekomendasikan penggunaan Layanan Web murni sebanyak mungkin. Silakan merujuk ke: Disarankan untuk menggunakan Layanan Web daripada Metode Halaman dalam implementasi sisi server Atlas.
Mari kita lihat contohnya. Pertama, mari kita definisikan WebMethod di ASPX. Anda dapat melihat bahwa ia tidak hanya menemukan jumlah dua angka, tetapi juga mengakses nilai TextBox sisi server pada halaman:
<script runat="server ">
[Metode Web]
string publik AddInt(int int1, int int2)
{
return (int1 + int2).ToString() + string.Format("rnDan Teks Kotak Teks Server adalah '{0}'.", tbServer.Text);
}
</skrip>
Lalu ada ScriptManager halaman tersebut. Tidak perlu menambahkan referensi apa pun di sini: <atlas:ScriptManager ID="scriptManager" runat="server" />
Lalu ada dua input yang digunakan untuk memasukkan addend dan satu input yang digunakan untuk memicu panggilan server:
<input id="value1" type="text" value="1" />
<masukan id="nilai2" type="teks" nilai="2" />
<input id="btnAdd" type="button" value="Tambahkan!" onclick="kembalikan btnAdd_onclick()" />
Ada juga TextBox sisi server:
<asp:TextBox ID="tbServer" runat="server" Text="Server control"></asp:TextBox>
Yang terakhir adalah panggilan JavaScript. Perhatikan namespace bawaan PageMethods:
function btnAdd_onclick() {
Metode Halaman.AddInt(
$('nilai1').nilai,
$('nilai2').nilai,
Sedang Selesai
);
}
functionOnComplete(hasil)
{
peringatan(hasil);
}
Jalankan di browser, masukkan dua tambahan, lalu masukkan beberapa karakter di TextBox di sisi server, klik Tambah, Anda dapat melihat bahwa nilai TextBox di sisi server telah diakses:
Ini adalah transmisi jaringan yang dicegat oleh Fiddler. Anda dapat melihat bahwa ViewState dan TextBox diteruskan kembali ke Server:
Kode sumber program contoh ini dapat diunduh di sini: