Saya telah membuat beberapa Webjobs Azure yang menggunakan pemicu dan saya baru saja belajar tentang Fungsi Azure .
Dari apa yang saya pahami Fungsi Azure tampaknya tumpang tindih dengan fitur Azure Webjobs dan saya memiliki beberapa kesulitan untuk memahami kapan harus memilih antara Function dan Webjob:
Tidak seperti Webjobs, Fungsi hanya dapat dipicu, itu tidak dirancang untuk menjalankan proses yang berkelanjutan (tetapi Anda dapat menulis kode untuk membuat fungsi yang berkelanjutan).
Anda dapat menulis Webjobs dan Fungsi menggunakan banyak bahasa (C #, node.js, python ...) tetapi Anda dapat menulis fungsi Anda dari portal Azure sehingga lebih mudah dan lebih cepat untuk mengembangkan tes dan menggunakan Fungsi.
Webjobs dijalankan sebagai proses latar belakang dalam konteks aplikasi web Layanan Aplikasi, aplikasi API, atau aplikasi seluler sedangkan Fungsi dijalankan menggunakan Rencana Layanan Aplikasi Klasik / Dinamis.
Mengenai penskalaan, Fungsi tampaknya memberi lebih banyak kemungkinan karena Anda dapat menggunakan paket layanan aplikasi dinamis dan Anda dapat mengukur satu fungsi sedangkan untuk webjob Anda harus mengatur skala seluruh aplikasi web.
Jadi pasti ada perbedaan harga, jika Anda menjalankan aplikasi web yang ada, Anda dapat menggunakannya untuk menjalankan webjob tanpa biaya tambahan, tetapi jika saya tidak memiliki aplikasi web yang ada dan saya harus menulis kode untuk memicu antrian haruskah saya menggunakan webjob atau suatu Fungsi?
Apakah ada pertimbangan lain yang perlu diingat ketika Anda perlu memilih?
sumber
Jawaban:
Ada beberapa opsi di sini dalam Layanan Aplikasi. Saya tidak akan menyentuh Aplikasi Logika atau Otomatisasi Azure, yang juga menyentuh ruang ini.
Azure WebJobs
Artikel ini sejujurnya adalah penjelasan terbaik, tetapi saya akan meringkas di sini.
On Demand WebJobs alias. WebJobs terjadwal alias. WebJobs yang Dipicu
Triggered WebJobs adalah WebJobs yang dijalankan sekali ketika URL dipanggil atau ketika properti schedule ada di schedule.job . WebJobs Terjadwal hanyalah WebJobs yang telah memiliki Pekerjaan Azure Scheduler dibuat untuk memanggil URL kami pada jadwal, tetapi kami juga mendukung properti jadwal, seperti yang disebutkan sebelumnya.
Ringkasan:
+
Dapat dieksekusi / Script on demand+
Eksekusi yang dijadwalkan-
Harus dipicu melalui titik akhir .scm-
Penskalaan adalah manual-
VM selalu dibutuhkanContinuous WebJobs (non SDK)
Pekerjaan-pekerjaan ini berjalan selamanya dan kami akan membangunkan mereka ketika mereka crash. Anda harus mengaktifkan Selalu Aktif agar ini berfungsi, yang artinya menjalankannya dalam tingkat Dasar dan di atas.
Ringkasan:
+
Executable / Script selalu berjalan-
Membutuhkan selalu - Tingkat dasar dan di atas-
VM selalu dibutuhkanWebJobs berkelanjutan dengan SDK WebJobs
Ini bukan apa-apa dari sudut pandang "WebJobs fitur". Pada dasarnya, kami memiliki SDK manis yang kami tulis ini menargetkan WebJobs yang memungkinkan Anda mengeksekusi kode berdasarkan pemicu sederhana. Saya akan membicarakan hal ini lebih lanjut nanti.
Ringkasan:
+
Executable / Script selalu berjalan+
Log / dasbor yang lebih tebal+
Pemicu didukung bersama dengan tugas yang berjalan lama-
Membutuhkan selalu - Tingkat dasar dan di atas-
Penskalaan adalah manual untuk mengatur-
Memulai bisa sedikit melelahkan-
VM selalu dibutuhkanAzure WebJobs SDK
Azure WebJobs SDK adalah SDK yang sepenuhnya terpisah dari fitur platform WebJobs. Ini dirancang untuk dijalankan di WebJob, tetapi benar-benar dapat dijalankan di mana saja. Kami memiliki pelanggan yang menjalankannya berdasarkan peran pekerja dan bahkan di cloud premier atau lainnya, meskipun dukungan hanyalah upaya terbaik.
SDK hanya membuatnya mudah untuk menjalankan beberapa kode sebagai reaksi terhadap beberapa peristiwa dan membuat ikatan ke layanan / dll. mudah. Ini sejujurnya dibahas dalam beberapa dokumen , tetapi intinya adalah sifat "peristiwa" + "kode". Kami juga telah melakukan beberapa pekerjaan ekstensiblitas yang keren, tapi itu sekunder untuk tujuan inti.
Ringkasan:
+
Anda dapat memperluas dan menjalankan apa pun yang Anda inginkan. Kontrol penuh.-
Hal-hal HTTP sedikit tidak pasti, tetapi berhasilFungsi Biru
Azure Functions adalah semua tentang mengambil tujuan inti dari WebJobs SDK, hosting sebagai layanan, dan membuatnya mudah untuk memulai dengan bahasa lain. Kami juga memperkenalkan konsep "Serverless" di sini karena sangat masuk akal untuk melakukannya - kami tahu bagaimana skala SDK kami, sehingga kami dapat melakukan hal-hal cerdas untuk Anda.
Fungsi Azure adalah pengalaman yang sangat terkelola. Kami tidak mendukung membawa tuan rumah Anda sendiri. Saat ini, kami tidak mendukung ekstensi khusus tetapi sesuatu yang sedang kami selidiki. Kami berpendapat tentang apa yang bisa dan tidak bisa Anda lakukan, tetapi untuk hal-hal yang kami aktifkan, mereka apik, dan mudah digunakan serta dikelola.
Namun, sebagian besar "kerangka" yang telah kami lakukan untuk meningkatkan fungsi melalui SDJ WebJobs. Misalnya, kami akan mengunggah NuGet baru untuk WebJobs yang benar-benar secara drastis meningkatkan kecepatan pencatatan, yang memiliki manfaat perf sangat besar bagi pengguna SDK WebJobs. Dalam Fungsi pengiriman sebagai "WebJobs SDK sebagai Layanan" kami telah benar-benar meningkatkan banyak masalah pengalaman.
+
Banyak bahasa yang didukung+
Dikelola sepenuhnya, penskalaan dinamis+
Portal yang mudah digunakan dengan UX untuk mengelola koneksi / dll.-
Tuan rumah belum dapat disesuaikan (belum)~
Berjalan di "aplikasi" terpisah yang memerlukan beberapa konfigurasi di repo Anda, tetapi membuat perawatan jangka panjang jauh lebih mudah.~
Tidak ada tooling (belum)Beberapa tooling sekarang dalam alfa atau pratinjau - https://www.npmjs.com/package/azurefunctions (update Feb 2017: Alat Visual Studio untuk Fungsi Azure sekarang tersedia dalam pratinjau: https: //blogs.msdn .microsoft.com / webdev / 2016/12/01 / visual-studio-tools-for-azure-functions / )Saya mungkin bias karena Functions adalah yang terbaru dan terhebat, tetapi merasa bebas untuk menembak lebih banyak kontra untuk Functions dengan cara saya.
Saya mungkin akan akhirnya menerbitkan blog yang sedikit lebih rumit, tapi saya mencoba untuk menjaga ini sesingkat mungkin untuk forum ini.
sumber
Menjadi Fungsi Azure berdasarkan SDJ WebJobs, mereka menyediakan sebagian besar fungsi yang sudah tersedia di WebJobs, tetapi dengan beberapa kemampuan keren baru.
Dalam hal pemicu , selain yang sudah tersedia untuk WebJobs (mis. Bus Layanan, Antrian Penyimpanan, Blob Penyimpanan, jadwal CRON, WebHooks, EventHub, dan penyedia Penyimpanan Cloud File), Fungsi Azure dapat dipicu sebagai API. Dan panggilan HTTP tidak memerlukan kredensial kudu, tetapi dapat diautentikasi melalui Azure AD dan penyedia identitas pihak ketiga.
Berkenaan dengan output , satu-satunya perbedaan adalah bahwa Fungsi dapat mengembalikan respons ketika dipanggil melalui HTTP.
Keduanya mendukung berbagai bahasa , termasuk: bash (.sh), batch (.bat / .cmd), C #, F #, Node.Js, PHP, PowerShell, dan Python.
Menjadi Fungsi saat ini dalam Pratinjau, tooling masih belum ideal. Tetapi Microsoft sedang mengusahakannya. Semoga kami mendapatkan fleksibilitas yang sama untuk mengembangkan dan menguji fungsi secara lokal seperti yang kami lakukan saat ini untuk WebJobs dengan Visual Studio.
Keuntungan paling signifikan dan keren yang dibawa oleh Functions adalah alternatif memiliki Rencana Layanan Dinamis dengan model "Serverless" , di mana kita tidak perlu mengelola instance VM atau penskalaan; itu semua dikelola untuk kita. Selain itu, dengan tidak memiliki instance khusus, kami hanya membayar sumber daya yang sebenarnya kami gunakan.
Perbandingan yang lebih rinci antara keduanya di sini: https://blog.kloud.com.au/2016/09/14/azure-functions-or-webjobs/
HTH :)
sumber
if (((preference == "Serverless") || (isRequired(flexibleHttpTriggers)) && (isOk(currentFunctionsTooling))) { goWithFunctions(); } else { continueWIthWebJobs(); }
:)Menurut dokumen Azure Functions memiliki yang berikut ini yang tidak dimiliki WebJobs:
Sederhananya: Fungsi Azure adalah hewan yang lebih baru. Jika Anda belum memiliki paket Layanan Aplikasi, saya akan menggunakan Functions karena untuk jangka panjang saya tidak melihat alasan mengapa memulai dengan WebJobs akan lebih baik (Functions tooling mungkin belum stabil seperti sebelumnya).
sumber
Saya ingin menambahkan dua poin lagi ke posting lama & sedikit di atas. jika Anda memilih paket konsumsi dalam fungsi biru, di bawah ini adalah batasannya
Jika Anda ingin menjalankan pekerjaan apa pun lebih dari 10 menit, pilih webjobs. Fungsi Azure, berjalan hanya selama 5 menit secara default, jika proses Anda melebihi 5 menit, maka fungsi azure melempar pengecualian batas waktu. Anda dapat menambah batas waktu hingga 10 menit di host.json .
Catatan: Tidak ada masalah batas waktu jika Anda menggunakan fungsi layanan paket biru.
Alasan lain untuk membedakan adalah. jika Anda menggunakan fungsi biru, maka waktu mulai awal Anda akan lambat karena mesin (wadah) dibuat dengan cepat dan dihancurkan begitu digunakan.
Untuk menghindari start yang dingin, aplikasi fungsi azure telah merilis paket premium, di mana satu instance akan berjalan sepanjang waktu dan berdasarkan pada beban aplikasi fungsi akan mulai melakukan penskalaan dan Anda akan ditagih untuk satu instance dan instance lain berdasarkan pada konsumsi.
sumber
Saya menyadari bahwa saya sangat terlambat ke permainan dengan jawaban ini tetapi karena ini masih merupakan hasil pencarian teratas di Google, saya ingin memberikan beberapa panduan tentang topik ini secara ketat dari sudut pandang biaya karena tampaknya OP memiliki beberapa kekhawatiran tentang biaya . Sudah ada beberapa jawaban hebat di sini yang berbicara tentang batasan teknis dan perincian tentang bagaimana setiap layanan bekerja, jadi saya tidak akan mengulangi jawaban itu.
Jika Anda benar-benar membutuhkan sesuatu yang berjalan dengan "gratis" (seperti tanpa biaya tambahan untuk apa yang sudah Anda bayar untuk aplikasi web Anda) maka Anda memiliki dua opsi:
Jika Anda khawatir tentang biaya tetapi tidak terbatas pada tanpa biaya sama sekali, maka Anda memiliki lebih banyak opsi yang tersedia.
Jika Anda tertarik membaca beberapa skenario tertentu dan mengapa saya memilih satu (webjobs, fungsi, layanan cloud), yang lain, saya baru saja menulis posting blog di webjobs vs fungsi vs layanan cloud .
sumber
Pertimbangan utama adalah bahwa Azure Functions berhenti mendukung .NET Framework setelah versi 1, yang dihentikan dengan v2.0, dan yang tidak akan berubah sekarang di pratinjau v3.0. 😔
Dokumentasi membuat ini jelas di sini ,
seperti halnya tanggapan umpan balik ini ,
serta masalah / respons github ini .
Sementara itu, pendekatan bersenjata yang kuat ini untungnya tidak diterapkan - belum - untuk Azure WebJobs :
sumber
Saya ingin memberikan persamaan dan perbedaan antara dua fungsi Azure yang dibangun di atas AppService dan WebJobs SDK. WebJobs SDK akan memberi Anda lebih banyak kebebasan untuk bermain sementara fungsi Azure lebih terstruktur dengan lebih sedikit tanggung jawab untuk pengembang.
Ketika Anda melihat kesamaan keduanya menggunakan mode pemrograman berorientasi fungsi, binding untuk trigger / input / output, mendukung perpustakaan eksternal dan dapat menjalankan dan men-debug perlengkapan mandi Supportruntime secara lokal.
Perbedaan
sumber