Aspnetcore: Host layanan grpc di iis atau sebagai layanan aplikasi?

Dibuat pada 3 Apr 2019  ·  153Komentar  ·  Sumber: dotnet/aspnetcore

Apakah mungkin untuk melakukan ini? Jika demikian bagaimana?


Pembaruan 2020/10/28 - @JamesNK

Masalah suara pengguna

Ada masalah suara pengguna Microsoft Azure untuk menambahkan dukungan gRPC ke Layanan Aplikasi . Pertimbangkan untuk memilih jika ini adalah fitur penting bagi Anda.

gRPC-Web

gRPC-Web dengan .NET kini tersedia. gRPC-Web kompatibel dengan IIS dan Layanan Aplikasi Azure. Tautan ke posting blog dengan info lebih lanjut: https://devblogs.microsoft.com/aspnet/grpc-web-for-net-now-available/

IIS

IIS didukung dengan .NET 5 dan build orang dalam dari Windows. Info lebih lanjut: https://github.com/dotnet/aspnetcore/issues/9020#issuecomment -713738181

area-grpc

Komentar yang paling membantu

@shirhatti Mengingat gRPC tampaknya menjadi fitur utama .NET Core 3 (https://github.com/grpc/grpc-dotnet), akan sangat disayangkan jika tidak dapat di-host di IIS/App Service mengingat begitu banyak . Aplikasi web .NET dihosting di sana. Saya harap ketersediaan fitur itu di .NET Core membantu mengarahkan peta jalan Anda.

Semua 153 komentar

Hai @moodya , sudahkah Anda memeriksa dokumen di https://docs.microsoft.com/en-us/aspnet/core/tutorials/grpc/grpc-start?view=aspnetcore-3.0&tabs=visual-studio ?

Jika Anda mengalami masalah, beri tahu kami dan kami dapat menyelidikinya.

Ya, saya sudah membangun layanan yang berjalan sebagai layanan host generik. Saya telah mem-porting-nya ke template asp net core 3 baru dan menjalankannya pada kestrel yang dihosting sendiri, tetapi saat ini sedang mencari hosting di belakang iis dan mudah-mudahan menyebarkannya sebagai layanan aplikasi di Azure. Saya tidak bisa membuat yang pertama (iis) bekerja.

Dapatkan Outlook untuk Android https://aka.ms/ghei36


Dari: Eilon Lipton [email protected]
Dikirim: Rabu, 3 April 2019 18:06:17
Kepada: aspnet/AspNetCore
Cc: moodya; Menyebutkan
Perihal: Re: [aspnet/AspNetCore] Host layanan grpc di iis atau sebagai layanan aplikasi? (#9020)

Hai @moodya https://github.com/moodya , sudahkah Anda memeriksa dokumen di https://docs.microsoft.com/en-us/aspnet/core/tutorials/grpc/grpc-start?view=aspnetcore- 3.0&tabs=visual-studio ?

Jika Anda mengalami masalah, beri tahu kami dan kami dapat menyelidikinya.


Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub https://github.com/aspnet/AspNetCore/issues/9020#issuecomment-479575937 , atau nonaktifkan utas https://github.com/notifications/unsubscribe-auth/AlUvPONL4H1tZ- pHOakDspdkXLLgThWbks5vdN-JgaJpZM4cZ2SG .

Saya tidak dapat menemukan contoh bagaimana melakukan ini, jadi mungkin itu belum didukung

Dapatkan Outlook untuk Android https://aka.ms/ghei36


Dari: Alain Moody [email protected]
Dikirim: Rabu, 3 April 2019 18:11:06
Kepada: aspnet/AspNetCore; aspnet/AspNetCore
Cc: Sebutkan
Perihal: Re: [aspnet/AspNetCore] Host layanan grpc di iis atau sebagai layanan aplikasi? (#9020)

Ya, saya sudah membangun layanan yang berjalan sebagai layanan host generik. Saya telah mem-porting-nya ke template asp net core 3 baru dan menjalankannya pada kestrel yang dihosting sendiri, tetapi saat ini sedang mencari hosting di belakang iis dan mudah-mudahan menyebarkannya sebagai layanan aplikasi di Azure. Saya tidak bisa membuat yang pertama (iis) bekerja.

Dapatkan Outlook untuk Android https://aka.ms/ghei36


Dari: Eilon Lipton [email protected]
Dikirim: Rabu, 3 April 2019 18:06:17
Kepada: aspnet/AspNetCore
Cc: moodya; Menyebutkan
Perihal: Re: [aspnet/AspNetCore] Host layanan grpc di iis atau sebagai layanan aplikasi? (#9020)

Hai @moodya https://github.com/moodya , sudahkah Anda memeriksa dokumen di https://docs.microsoft.com/en-us/aspnet/core/tutorials/grpc/grpc-start?view=aspnetcore- 3.0&tabs=visual-studio ?

Jika Anda mengalami masalah, beri tahu kami dan kami dapat menyelidikinya.


Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub https://github.com/aspnet/AspNetCore/issues/9020#issuecomment-479575937 , atau nonaktifkan utas https://github.com/notifications/unsubscribe-auth/AlUvPONL4H1tZ- pHOakDspdkXLLgThWbks5vdN-JgaJpZM4cZ2SG .

@shirhatti - ada ide tentang ini?

Tidak dapat meng-host gRPC di Layanan Aplikasi IIS/Azure.
Implementasi HTTP/2 dari Http.Sys tidak mendukung header tambahan respons HTTP yang diandalkan oleh gRPC.

Terima kasih atas tanggapan yang cepat. Bagaimana Anda merekomendasikan hosting layanan grpc dalam skenario produksi saat ini? Juga, apakah Anda mengetahui rentang waktu saat layanan grpc dapat di-host di layanan iis/aplikasi?

Dapatkan Outlook untuk Android https://aka.ms/ghei36


Dari: Sourabh Shirhatti [email protected]
Dikirim: Rabu, 3 April 2019 19:13:23
Kepada: aspnet/AspNetCore
Cc: moodya; Menyebutkan
Perihal: Re: [aspnet/AspNetCore] Host layanan grpc di iis atau sebagai layanan aplikasi? (#9020)

Tidak dapat meng-host gRPC di Layanan Aplikasi IIS/Azure.
Implementasi HTTP/2 dari Http.Sys tidak mendukung header tambahan respons HTTP yang diandalkan oleh gRPC.


Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub https://github.com/aspnet/AspNetCore/issues/9020#issuecomment-479600486 , atau nonaktifkan utas https://github.com/notifications/unsubscribe-auth/AlUvPNHH4- HhNsSAtugTw0MzzNco6c76ks5vdO9DgaJpZM4cZ2SG .

Pendekatan yang disarankan adalah meng-host layanan gRPC Anda di AKS.

Sejauh garis waktu Layanan Aplikasi berjalan, saya akan tunduk pada @stefsch

Terima kasih telah kembali padaku. Dalam hal kain layanan aks Vs dalam hal hosting, layanan grpc adalah pilihan yang lebih baik? Jika demikian, mengapa?

Dapatkan Outlook untuk Android https://aka.ms/ghei36


Dari: Sourabh Shirhatti [email protected]
Dikirim: Senin, 8 April 2019 07:31:45
Kepada: aspnet/AspNetCore
Cc: moodya; Menyebutkan
Perihal: Re: [aspnet/AspNetCore] Host layanan grpc di iis atau sebagai layanan aplikasi? (#9020)

Pendekatan yang disarankan adalah meng-host layanan gRPC Anda di AKS.

Sejauh garis waktu Layanan Aplikasi berjalan, saya akan tunduk pada @stefsch https://github.com/stefsch


Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub https://github.com/aspnet/AspNetCore/issues/9020#issuecomment-480701227 , atau nonaktifkan utas https://github.com/notifications/unsubscribe-auth/AlUvPLwQW8HCp- YXsz6yNaK_RH7jbZzWks5veuJRgaJpZM4cZ2SG .

Saat ini saya mengharapkan masalah untuk melakukan ini. Saya menjalankan layanan gRPC dengan baik menggunakan aspnetcore 3 preview 3 dan Kestrel. Namun, kesalahan tentang trailer muncul menggunakan IIS ketika layanan mengirim respons (permintaan diterima dengan baik):
kesalahan gPRC => 2 TIDAK DIKETAHUI: Tidak ada status yang diterima)
Dotnet error => "Trailer tidak didukung untuk respons ini" di Microsoft.AspNetCore.Http.ResponseTrailerExtensions.AppendTrailer(HttpResponse response, String trailerName, StringValues ​​trailerValues) di Grpc.AspNetCore.Server.Internal.HttpResponsesolidExtensions.

Sesuai pesan di atas, jangan berpikir iis mendukung hosting layanan grpc

Dapatkan Outlook untuk Android https://aka.ms/ghei36


Dari: notifikasi [email protected]
Dikirim: Kamis, 25 April 2019 10:57:42
Kepada: aspnet/AspNetCore
Cc: moodya; Menyebutkan
Perihal: Re: [aspnet/AspNetCore] Host layanan grpc di iis atau sebagai layanan aplikasi? (#9020)

Saat ini saya mengharapkan masalah untuk melakukan ini. Saya menjalankan layanan gRPC dengan baik menggunakan aspnetcore 3 preview 3 dan Kestrel. Namun, kesalahan tentang trailer muncul menggunakan IIS ketika layanan mengirim respons (permintaan diterima dengan baik):
kesalahan gPRC => 2 TIDAK DIKETAHUI: Tidak ada status yang diterima)
Dotnet error => "Trailer tidak didukung untuk respons ini" di Microsoft.AspNetCore.Http.ResponseTrailerExtensions.AppendTrailer(HttpResponse response, String trailerName, StringValues ​​trailerValues) di Grpc.AspNetCore.Server.Internal.HttpResponsesolidExtensions.


Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub https://github.com/aspnet/AspNetCore/issues/9020#issuecomment-486607635 , atau matikan utasnya https://github.com/notifications/unsubscribe-auth/AJKS6PEAJ2UKKH2QIKNTCZDPSF6HDHMSDANFSM4HDHMSDANFSM .

Mengikuti pertukaran ini https://forums.iis.net/p/1241598/2147837.aspx?p=True&t=636917571046786374 , tampaknya itu bukan tanggung jawab server web untuk menangani gRPC. gPRC menggunakan HTTP/2, IIS mendukung HTTP/2, jadi harus berfungsi. Jika tidak, itu adalah bug dari IIS atau, lebih mungkin, dari dotnetcore.

Menurut orang-orang Microsoft dalam pesan di atas, iis tidak mendukung header tambahan yang diperlukan untuk meng-host layanan grpc. Ini berarti Anda tidak dapat meng-host satu di iis atau sebagai layanan aplikasi saat ini.

Dapatkan Outlook untuk Android https://aka.ms/ghei36


Dari: notifikasi [email protected]
Dikirim: Kamis, 25 April 2019 11:39:08
Kepada: aspnet/AspNetCore
Cc: moodya; Menyebutkan
Perihal: Re: [aspnet/AspNetCore] Host layanan grpc di iis atau sebagai layanan aplikasi? (#9020)

Mengikuti pertukaran ini https://forums.iis.net/p/1241598/2147837.aspx?p=True&t=636917571046786374 , tampaknya itu bukan tanggung jawab server web untuk menangani gRPC. gPRC menggunakan HTTP/2, IIS mendukung HTTP/2, jadi harus berfungsi. Jika tidak, itu adalah bug dari IIS atau, lebih mungkin, dari dotnetcore.


Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub https://github.com/aspnet/AspNetCore/issues/9020#issuecomment-486620151 , atau nonaktifkan utas https://github.com/notifications/unsubscribe-auth/AJKS6PBQO4427EYN67SI7A3PSGC4ZANCDANFSM4 .

Terima kasih, saya melewatkannya dan masuk akal dengan masalah saya.
@shirhatti dukungannya direncanakan di peta jalan?

Kami (IIS) sedang mengevaluasi apakah akan mendukung cuplikan respons HTTP. Belum ada peta jalan/komitmen yang bisa saya ajak bicara.

@shirhatti Mengingat gRPC tampaknya menjadi fitur utama .NET Core 3 (https://github.com/grpc/grpc-dotnet), akan sangat disayangkan jika tidak dapat di-host di IIS/App Service mengingat begitu banyak . Aplikasi web .NET dihosting di sana. Saya harap ketersediaan fitur itu di .NET Core membantu mengarahkan peta jalan Anda.

Saya sepenuhnya setuju dengan @jbrantly. gRPC diiklankan sebagai salah satu fitur utama .NET Core 3.
Itu harus dapat di-host di Layanan Aplikasi IIS/Azure.
@shirhatti tolong pertimbangkan untuk menambahkan ini ke peta jalan

Saya juga setuju.

Dapatkan Outlook untuk Android https://aka.ms/ghei36


Dari: Tomasz Jagusz [email protected]
Dikirim: Jumat, 26 April 2019 09:42:58
Kepada: aspnet/AspNetCore
Cc: moodya; Menyebutkan
Perihal: Re: [aspnet/AspNetCore] Host layanan grpc di iis atau sebagai layanan aplikasi? (#9020)

Saya sepenuhnya setuju dengan @jbrantly https://github.com/jbrantly . gRPC diiklankan sebagai salah satu fitur utama .NET Core 3.
Itu harus dapat di-host di Layanan Aplikasi IIS/Azure.
@shirhatti https://github.com/shirhatti harap pertimbangkan untuk menambahkan ini ke peta jalan


Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub https://github.com/aspnet/AspNetCore/issues/9020#issuecomment-486977989 , atau matikan utasnya https://github.com/notifications/unsubscribe-auth/AJKS6PENWT46GCJ7GQGEGPTPSK6BFANCDANFSM4 .

Saya sangat setuju.

Kami sedang menyelidikinya. Ini membutuhkan perubahan kernel Windows dan perubahan IIS.

@davidfowl apakah ini mungkin ketika .NET Core 3 dirilis?
Kemampuan untuk meng-host GRPC di Layanan Aplikasi adalah penghalang bagi saya.

Yah 29 Mei 2019 , namun tidak ada sinyal bahwa ini akan mungkin. Saya mencari Host layanan GRPC di IIS dan menambahkan sertifikat untuk menggunakan HTTPS :(

Tidak, itu tidak mungkin di IIS, kami sedang berupaya mendapatkan perubahan tetapi ini akan menjadi proses yang lambat (karena memerlukan pembaruan windows).

Saya kira-kira kehilangan sekitar 3 hari ... terima kasih iis

Hai @davidfowl
Perubahan apapun?

@davidfowl apakah ada kemungkinan ini akan ditambahkan sebelum .NET Core 3.0 dirilis? Atau haruskah kita menunggu 3.1 atau 5.0?

Tidak karena memerlukan perubahan windows. Ini tidak akan menjadi bagian dari 3.0 dan akan membutuhkan versi terbaru Windows (apa pun yang ada saat itu) untuk mendapatkan fitur-fitur ini. Tidak ada ETA

Hmm, saya sedang merencanakan implementasi struktur layanan yang akan menggunakan layanan stateless berbasis gRPC dan aktor yang andal, di atas dotnet core 3. Apakah ini akan mengganggu saya? Jika saya menghosting di SF, saya kira saya akan menggunakan inti kestrel? Saatnya membuat prototipe.

@oising perahu yang sama di sini - tapi kami perlahan-lahan menuju k8s + wadah linux, jadi bagaimanapun juga ini membantu mendorong kami ke arah itu.

Saya baru saja menambahkan ini karena saya telah bermain-main dengan gRPC sekarang untuk sementara waktu dan akhirnya ingin mulai mengadopsinya di beberapa proyek klien saya, jadi saya melihat alur kerja penyebaran. Saya sedikit kecewa dengan jumlah overhead operasional yang akan digunakan dalam produksi dengan .net core.

Saya juga membutuhkan waktu berhari-hari untuk mengetahui IIS adalah masalahnya. Benar-benar mencari perbaikan. Ada solusi?

@bingoo tanpa dukungan Windows dan IIS Anda kurang beruntung. Anda dapat menggunakan Service Fabric tetapi saya tidak memiliki pengalaman dengannya. Saya berharap dapat meng-host-nya di IIS atau di Azure dengan cara yang sederhana.
Untuk proyek saat ini, Grpc bukan pilihan bagi saya karena masalah ini.

Akan lebih baik jika ini adalah peringatan besar yang berani pada dokumen ...

Hosting IIS belum didukung. Layanan Aplikasi memang menggunakan Windows Server 2016 + IIS sebagai backend secara default, tetapi sekarang juga mendukung Linux / Containers. Jika Anda hanya ingin menggunakan GRPC di Azure App Service, Anda dapat melakukannya sekarang dengan Linux Container. Tetapi Paket Layanan Aplikasi tidak dapat dibagikan dengan paket hosting Windows. Anda perlu mengeluarkan uang ekstra untuk Paket Layanan Aplikasi baru yang didukung oleh Linux Container.

Cara terbaik adalah menggunakan AKS kemudian menggunakan Ambassador. Ambassador adalah gateway api berbasis Envoy yang berjalan sebagai container di dalam Kubernetes. Ini memungkinkan Anda untuk mem-proksi grpc dan grpc-web, mis. browser ke server grpc dan juga klien grpc, mungkin ac# satu ke server grpc. Jika Anda ingin js frontend menerima panggilan gRPC, Anda memerlukan web grpc dan proxy karena browser juga tidak mendukung header trailing respons http2 dengan benar. Grpc Web menggunakan Envoy secara default jadi itulah mengapa Ambassador adalah yang terbaik.

Jika Anda hanya ingin menggunakan GRPC di Azure App Service, Anda dapat melakukannya sekarang dengan Linux Container

@EdiWang Ini saat ini tidak didukung pada Layanan Aplikasi untuk Linux. Kami sedang bekerja dengan Layanan Aplikasi untuk mengaktifkan ini, tetapi saya tidak memiliki ETA untuk dibagikan

Halo orang baik
Saya agak bingung, jadi kami tidak dapat memiliki layanan grpc di Azure.
Tetapi Azure sendiri menggunakan grpc, Protobuf Pekerja Languge Fungsi Azure.
https://github.com/Azure/Azure-functions-language-worker-protobuf
Atau apakah saya melewatkan sesuatu di sini?
Mencoba memahami :bingung:

@GoranHalvarsson Anda dapat memiliki layanan gRPC di Azure, Anda hanya belum dapat menjalankannya di Layanan Aplikasi Azure.

@markrendle Terima kasih telah menjawab. Jadi bagaimana saya bisa menggunakan/mengatur layanan gRpc di Azure?

Akan lebih baik jika ini adalah peringatan besar yang berani pada dokumen ...

https://github.com/aspnet/AspNetCore.Docs/issues/14684

@markrendle Terima kasih telah menjawab. Jadi bagaimana saya bisa menggunakan/mengatur layanan gRpc di Azure?

Dengan tidak menggunakan IIS yang artinya menggunakan Service Fabric, atau AKS – keduanya menggunakan raw Kestrel. SF dan AKS memiliki karakteristik yang berbeda. Google untuk "Layanan Fabric vs AKS" dan ambil kopi besar.

Saya telah membuat panduan langkah demi langkah untuk membuat tes dan menggunakan layanan grpc menggunakan .NET Core 3.0
https://github.com/rupeshtech/k8s-grpc-dotntecore

Saya baru saja melihat masalah ini, jadi saya belum mencoba apa pun; tetapi adakah yang mencoba menggunakan Azure Web App untuk (Container https://azure.microsoft.com/en-us/services/app-service/containers/)?

Saya menjalankan banyak layanan mikro berbasis buruh pelabuhan di Layanan Aplikasi Azure dan memiliki sedikit masalah dan memungkinkan saya untuk mengatasi karakteristik pembatas lainnya dari penawaran Layanan Aplikasi OOB.

@ikemtz gRPC berfungsi saat menggunakan kestral (yaitu: saat berjalan dalam wadah).

@rupeshtech Terima kasih, tetapi artikel Anda tidak terkait dengan masalah ini.

Masalah ini untuk hosting gRPC (atau aplikasi apa pun yang menggunakan header tambahan) di IIS atau Layanan Aplikasi Azure.

Akan lebih baik jika ini adalah peringatan besar yang berani pada dokumen ...

aspnet/AspNetCore.Docs#14684

Ini sekarang diimplementasikan .

@ikemtz Saya telah mencoba menjalankan tes dasar untuk menggunakan gRPC dalam wadah Linux yang berjalan di Aplikasi Web Azure untuk Wadah dan itu tidak akan berhasil untuk saya. Tidak dapat menemukan kesalahan yang dilaporkan di mana pun, tetapi penampung bahkan tidak menanggapi ping HTTP.
Memalukan. Saya tidak siap untuk pindah ke AKS hanya untuk mendapatkan fungsi ini, jadi saya rasa saya akan tetap menggunakan layanan HTTP kuno yang bagus untuk saat ini.

@searus jika Anda menggunakan mesin virtual sebagai gantinya (berjalan di Azure)

@GoranHalvarsson Saya tidak siap untuk berpindah dari PaaS ke IaaS hanya untuk memanfaatkan teknologi ini. Saya hanya akan menunggu sampai Azure App Service dapat mendukung ini.

@davidfowl Adakah peta jalan tentang ini?

Menyebarkan ke wadah menggunakan Kestral baik-baik saja tetapi itu mudah dikatakan
menggunakan Lets Encrypt di IIS atau layanan aplikasi yang benar-benar menghambat saya.
Jika ada panduan singkat tentang cara menjalankan domain khusus dengan let
mengenkripsi kestrel dalam wadah lalu saya melompat ke kepala gRPC terlebih dahulu
kalau tidak, sangat sulit untuk membenarkan overhead membuat beberapa kustom
penyebaran hanya untuk mengakomodasi tumpukan baru.

Pada Rabu, 16 Okt 2019 pukul 06:46 Russell [email protected]
menulis:

@GoranHalvarsson https://github.com/GoranHalvarsson Saya tidak siap
untuk berpindah dari PaaS ke IaaS hanya untuk memanfaatkan teknologi ini. saya hanya akan
tunggu hingga Layanan Aplikasi Azure dapat mendukung ini.


Anda menerima ini karena Anda berkomentar.
Balas email ini secara langsung, lihat di GitHub
https://github.com/aspnet/AspNetCore/issues/9020?email_source=notifications&email_token=AMNAZYUWLYLGC5ZGB4GAFITQO2TCFA5CNFSM4HDHMSDKYY3PNVWWK3TUL52HS4DFVREXG43VMWS2Zcomment-5DLNMVXHJKTULF4278
atau berhenti berlangganan
https://github.com/notifications/unsubscribe-auth/AMNAZYTKUYYBwkSW6AMQDHTQO2TCFANCNFSM4HDHMSDA
.

Dengan ini, Fungsi Azure dan apa pun yang berada di atas Layanan Aplikasi tidak dapat benar-benar menggunakan gRPC dan HTTP/2. Garis waktu akan menyenangkan, bahkan untuk pratinjau pribadi/publik.

Kami sedang mengerjakan perubahan di http.sys. Setelah itu kita perlu bereaksi terhadap perubahan IIS dan ARR tersebut. Kemudian kita perlu memperbarui versi Windows yang berjalan di layanan aplikasi untuk memanfaatkan perubahan tersebut di IIS.

Pekerjaan telah menyatakan tetapi sangat sulit untuk memperkirakan berapa lama waktu yang dibutuhkan pelanggan untuk mendapatkannya. Kami akan terus mengabari Anda seiring berjalannya waktu.

Saya merasa ini adalah sesuatu yang sayangnya tidak mengejutkan saya (bahwa mengimplementasikan fungsionalitas http baru memerlukan pembaruan kernel). Jelas IIS tidak ada di Linux / macosx tetapi saya akan terkejut jika menambahkan dukungan untuk grpc ke server kami yang lain untuk sistem operasi lain... membutuhkan banyak cara pembaruan kernela.

Mungkin ini adalah argumen/contoh yang layak untuk decoupling... Hanya mengatakan

Saya merasa ini adalah sesuatu yang sayangnya tidak mengejutkan saya (bahwa mengimplementasikan fungsionalitas http baru memerlukan pembaruan kernel). Jelas IIS tidak ada di Linux / macosx tetapi saya akan terkejut jika menambahkan dukungan untuk grpc ke server kami yang lain untuk sistem operasi lain... membutuhkan banyak cara pembaruan kernela.

Mungkin ini adalah argumen/contoh yang layak untuk decoupling... Hanya mengatakan

Saya setuju. Ini mungkin ada hubungannya dengan IIS yang menjalankan beberapa protokol tingkat rendah yang terkait langsung dengan kernel. Kelihatannya aneh tapi setidaknya kami mendapat konfirmasi bahwa ini sedang dikerjakan dan adopsi itu tidak sepenuhnya biru.

Ingat ketika Anda harus meningkatkan ke Windows 8 untuk mendapatkan dukungan WebSocket? aku juga

Ya, kami ingat! Inilah intinya: gRPC dirilis di .NET-Core dan kami menggunakan Layanan Aplikasi Azure sehingga penting untuk memiliki beberapa opsi, setidaknya untuk menguji, ASAP. Adakah yang bisa memberi tahu kami kapan sinkronisasi ini ke kemampuan .NET-Core yang dirilis akan terjadi di Layanan Aplikasi Azure? Atau solusi yang layak. Terima kasih

Terima kasih sudah menghubungi kami. Karena tidak ada aktivitas pada masalah ini, kami menutupnya sebagai upaya untuk menjaga jaminan simpanan kami tetap bersih. Jika Anda yakin ada masalah terkait dengan kerangka ASP.NET Core, yang belum ditangani, harap ajukan masalah baru.

@anurse bagaimana kami menjaga masalah ini tetap terbuka?

Itu dimasukkan ke dalam Diskusi dan menandai pertanyaan. Dibuka kembali.

Apakah sudah ada ETA tentang ini?

Apakah ada alternatif yang layak untuk membuat gRPC bekerja di lingkungan produksi?
Saya telah melihat beberapa hal dan sepertinya menghostingnya di AKS adalah sebuah opsi, saya hanya ingin memastikan bahwa kami tidak melakukan hal-hal yang tidak akan membantu kami memecahkan masalah kami.

Saat ini kami mencoba menjalankan beberapa jenis lingkungan produksi untuk proyek ini:
Proyek IdentityServer yang berbicara dengan API melalui gRPC
5 portal web yang berbicara dengan API melalui gRPC
API yang berbicara dengan Bot Perselisihan (ASP.NET Core) melalui gRPC.

Kami mencoba menghostingnya di VPS tetapi saya tidak tahu apakah kami benar-benar dapat menghostingnya di lingkungan produksi hanya dengan menggunakan kestrel jika kami ingin semua aplikasi ini hidup di VPS yang sama.

Adakah yang punya opsi untuk kami sehingga kami dapat memiliki beberapa domain (1 domain, sisanya adalah sub domain) dengan 1 alamat IP pada 1 VPS menjalankan semua proyek hanya dengan menggunakan Kestrel (karena keterbatasan di IIS, Http.Sys, jendela).

(Atau metode lain apa pun yang memungkinkan kami untuk meng-host semua ini ASAP)

Terima kasih sebelumnya!

(EDIT)

Kami menggunakan Let's Encrypt ( https://github.com/natemcmaster/LetsEncrypt ) untuk mendapatkan sertifikat SSL

(EDIT 2)
Kami juga mencoba menghubungi @davidfowl tentang ini di twitter
https://twitter.com/DapperDino4/status/1204119195765682177 dan
https://twitter.com/DapperDino4/status/120419695344971778

Apakah sudah ada ETA tentang ini?

Menambahkan @shirhatti dan @Tratcher yang telah mengerjakan ini.

Waktu ini sulit untuk dijabarkan sekarang. IIS adalah komponen Windows, dan bergantung pada http.sys, yang juga merupakan komponen Windows. Baik IIS, maupun http.sys tidak memiliki fitur HTTP/2 yang memadai untuk mendukung gRPC. Kami telah bekerja sangat erat dengan tim tersebut untuk mendapatkan perubahan, dan mereka semua berada di jalur yang tepat untuk rilis mendatang tetapi tidak akan tersedia sampai rilis Windows Server dengan perubahan yang sesuai ditayangkan.

@JamesNK dapatkah Anda berbicara tentang ketersediaan alternatif seperti gRPC-web?

Konteks untuk orang yang tidak tahu apa itu gRPC-Web: https://grpc.io/blog/state-of-grpc-web/. Karena menggunakan HTTP/1.1, pembatasan Layanan Aplikasi Azure tidak akan berlaku untuk itu. Kelemahannya adalah tidak ada manfaat HTTP/2 (multipleks, kompresi header), dan tidak ada klien atau streaming dua arah.

Proksi terbalik utusan gRPC-Web tersedia sekarang, tetapi itu tidak mudah diatur. Dan tidak ada klien .NET gRPC-Web.

Tim Inti ASP.NET belum memutuskan apakah kami akan berkomitmen untuk mendukung gRPC-Web secara resmi. Saya sedang melihat gRPC-Web sekarang, dan seperti apa tampilannya di .NET Core. Dalam beberapa minggu saya dapat mengatakan lebih banyak, dan mungkin memiliki pratinjau eksperimental untuk dicoba orang-orang pada bulan Januari.

Karena IIS tidak mendukung ini, dapatkah layanan netcore gRPC di-host di belakang Nginx?

@Dennis-Petrov saya melakukan hal ini. Saya mengikuti dokumen ini https://docs.microsoft.com/en-us/aspnet/core/Host-and-deploy/linux-nginx?view=aspnetcore-3.1 dan gRPC berjalan dengan baik

Bisakah saya mengajukan pertanyaan bodoh: Mengapa ini tidak berfungsi di Layanan Aplikasi Azure di Paket Layanan Aplikasi linux?

Apakah IIS juga terlibat di dalamnya?

@searus Ada lapisan umum antara frontend dan layanan Aplikasi terlepas dari Linux/Windows. Yaitu saat ini frontend App Service menerima koneksi HTTP/2, dan kemudian koneksi internal diproksi sebagai HTTP "lama" ke masing-masing pekerja layanan aplikasi. Saya yakin mendukung gRPC sepenuhnya sedang dalam proses, tetapi perlu upaya karena komponen internal perlu diperbarui, diuji, dan dirilis.

Terima kasih @devlead.
Saya (mungkin secara naif) berpikir bahwa Paket Layanan Aplikasi Linux seluruhnya adalah Linux.
Saya sangat menghargai upaya yang terlibat di sini, dan terima kasih telah meluangkan waktu untuk menjelaskan.

Saya yakin sedang dalam proses untuk mendukung gRPC sepenuhnya

Itu pasti sedang dalam pengerjaan. Kami secara aktif mengerjakannya tetapi tidak dapat menjamin timeline (ada beberapa tim independen yang perlu berkoordinasi di sini). @devlead benar tentang dukungan Azure App Service Linux. Proxy front-end menjalankan IIS. Ini mendukung penerimaan HTTP/2 dari klien, tetapi ketika mem-proxy lalu lintas ke aplikasi Anda, itu menurunkan versi ke HTTP/1.1. Ini OK (meskipun tidak ideal) untuk aplikasi normal, tetapi karena gRPC memerlukan fitur HTTP/2, itu tidak cocok untuk itu.

Ya, saya sudah membangun layanan yang berjalan sebagai layanan host generik. Saya telah mem-porting-nya ke template asp net core 3 baru dan menjalankannya pada kestrel yang dihosting sendiri, tetapi saat ini sedang mencari hosting di belakang iis dan mudah-mudahan menyebarkannya sebagai layanan aplikasi di Azure. Saya tidak bisa membuat yang pertama (iis) bekerja.

@moodya dapatkah Anda berbagi dengan kami bagaimana Anda melakukannya??

Ya, saya sudah membangun layanan yang berjalan sebagai layanan host generik. Saya telah mem-porting-nya ke template asp net core 3 baru dan menjalankannya pada kestrel yang dihosting sendiri, tetapi saat ini sedang mencari hosting di belakang iis dan mudah-mudahan menyebarkannya sebagai layanan aplikasi di Azure. Saya tidak bisa membuat yang pertama (iis) bekerja.

@moodya dapatkah Anda berbagi dengan kami bagaimana Anda melakukannya??

Template gRPC adalah kestrel yang dihosting sendiri secara default. Itu tidak akan berfungsi di layanan aplikasi karena alasan yang diuraikan di utas ini.

Meskipun tidak dapat di-host di layanan aplikasi, katakanlah kami meng-host layanan grpc di aks, apakah ada masalah untuk memanggil grpc dari layanan aplikasi? Akankah klien grpc setidaknya bekerja pada layanan aplikasi?

Meskipun tidak dapat di-host di layanan aplikasi, katakanlah kami meng-host layanan grpc di aks, apakah ada masalah untuk memanggil grpc dari layanan aplikasi? Akankah klien grpc setidaknya bekerja pada layanan aplikasi?

Ya, klien harus bekerja. Batasannya hanya pada permintaan masuk, tidak keluar.

Mungkin pertanyaan bodoh, tetapi mengapa ini berhasil jika saya menjalankan layanan gRPC di Debug dengan IIS Express? Misalnya, saya memiliki aplikasi web (Razor Pages, .net core 3.1) yang melakukan panggilan ke layanan gRPC [ditingkatkan dari aplikasi kerangka kerja mvc yang berbicara dengan layanan wcf, jika ada yang peduli]. Jika saya men-debug keduanya di workstation saya, dengan layanan gRPC di IIS Express, aplikasi web dapat berbicara dengan layanan dengan baik. Karena perilaku proxy @anurse yang dijelaskan di atas, ketika layanan di-host di IIS, saya mendapatkan pengecualian bahwa gRPC memerlukan HTTP/2. Apakah proxy IIS Express ke Kestrel berbeda dari IIS?

Juga, mungkin bukan tempat untuk ini, tetapi saya ingin dengan rendah hati meminta agar halaman di bawah ini diberikan penjelasan kecil tentang perilaku proxy IIS/App Service. Saya (mungkin bodoh) menghabiskan sepanjang hari mencoba mengakali IIS karena saya pikir saya bisa memaksanya ke proxy di HTTP/2 jika aplikasi kehabisan proses di Kestrel https://docs.microsoft.com/en- us/aspnet/core/grpc/aspnetcore?view=aspnetcore-3.1&tabs=visual-studio#integration -with-aspnet-core-apis

IIS Express seharusnya tidak berfungsi karena semua alasan yang sama dengan IIS tidak.

@Tratcher Ah ya Anda benar. Saya menjalankan layanan gRPC sebagai self-host, bukan IIS Express. Terima kasih!

Adakah yang punya tutorial tentang cara membuatnya berfungsi di AKS? (poin bonus untuk debugging dengan kode vs di aks secara lokal tanpa harus membangun kembali wadah sehingga kami memiliki seluruh tumpukan dengan .net core dev, hingga menyebarkan ke Azure menggunakan Azure devops dan aks).

Yang terpenting, apa yang Anda gunakan di AKS untuk mem-proksi lalu lintas web ke pod AKS tanpa harus menggunakan ngix di pod itu sendiri (yaitu penyeimbang beban Azure atau apa?)

Meskipun tidak dapat di-host di layanan aplikasi, katakanlah kami meng-host layanan grpc di aks, apakah ada masalah untuk memanggil grpc dari layanan aplikasi? Akankah klien grpc setidaknya bekerja pada layanan aplikasi?

Ya, klien harus bekerja. Batasannya hanya pada permintaan masuk, tidak keluar.

Sayangnya, hal ini tampaknya tidak terjadi pada Aplikasi Web berbasis .Net Core 3.1 yang memanggil layanan grpc (dalam hal ini kode Pyhton berjalan pada VM) saat dihosting di Azure Web Apps - waktu habis. Saat menjalankan kode yang sama persis dari localhost, panggilan dilakukan (VM layanan yang sama).

@lyulyok dapatkah Anda mengumpulkan diagnostik dan membuka masalah terpisah? Tidak ada masalah yang diketahui dengan klien di sini.

Adakah yang punya tutorial tentang cara membuatnya berfungsi di AKS?

Silakan buka edisi baru untuk membahas ini atau bertanya di Stack Overflow . Mari jaga topik ini tetap sesuai topik, terutama karena ada banyak orang yang tertarik dengan status gRPC di IIS dan HTTP.sys dan setiap komentar mem-ping setiap orang yang ada di dalamnya. Saya akan menyembunyikan komentar di luar topik, jangan ragu untuk memposting masalah baru jika Anda memiliki pertanyaan lebih lanjut.

Ya, saya sudah membangun layanan yang berjalan sebagai layanan host generik. Saya telah mem-porting-nya ke template asp net core 3 baru dan menjalankannya pada kestrel yang dihosting sendiri, tetapi saat ini sedang mencari hosting di belakang iis dan mudah-mudahan menyebarkannya sebagai layanan aplikasi di Azure. Saya tidak bisa membuat yang pertama (iis) bekerja.

Dukungan eksperimental untuk gRPC-Web di .NET kini tersedia. gRPC-Web bekerja dengan HTTP/1.1 dan HTTP/2, dan berjalan di IIS dan Azure App Service.

Kami terus bekerja menuju HTTP/2 gRPC yang berjalan di Azure App Service, tetapi gRPC-Web adalah sesuatu yang dapat Anda gunakan hari ini . Ketika pekerjaan untuk mendukung HTTP/2 di IIS dan Azure App Service selesai, akan menjadi proses sederhana untuk mengalihkan aplikasi .NET dari gRPC-Web ke HTTP/2 gRPC.

Entri blog: https://devblogs.microsoft.com/aspnet/grpc-web-experiment
Dokumentasi: https://docs.microsoft.com/aspnet/core/grpc/browser

Saya memiliki klien grpc yang berjalan di layanan aplikasi dan layanan berjalan dengan baik di aks, jika ada orang lain yang ingin mencoba juga

@andrew-vdb Bisakah Anda memposting konfigurasi?

Hai @JamesNK ,
terkait dengan komentar Anda https://github.com/dotnet/aspnetcore/issues/9020#issuecomment -579597202 dan fakta bahwa gRpc-Web saat ini tampaknya merupakan _proyek eksperimental, bukan produk yang berkomitmen._

  • Apakah saya memerlukan gRpc-Web untuk disebarkan ke IIS? Jika tidak, apakah tidak mungkin sama sekali?
  • Apakah Anda memiliki ETA tentang kapan dimungkinkan untuk menyebarkan ke IIS tanpa gRpc-Web?
  • Apakah Anda memiliki ETA kapan gRpc-Web akan secara resmi didukung oleh Microsoft?

Apakah saya memerlukan gRpc-Web untuk disebarkan ke IIS? Jika tidak, apakah tidak mungkin sama sekali?

Saat ini gRPC melalui HTTP/2 tidak berfungsi di IIS. gRPC-Web berfungsi.

Apakah Anda memiliki ETA tentang kapan dimungkinkan untuk menyebarkan ke IIS tanpa gRpc-Web?

Tidak. Perlu waktu untuk membuat perubahan pada Windows dan dirilis ke publik.

Apakah Anda memiliki ETA kapan gRpc-Web akan secara resmi didukung oleh Microsoft?

Tidak saat ini.

untuk diketahui
Saya memiliki aplikasi (ASP.Net Core 3.2.0-Preview1) di mana saya mengubah REST API DAL menjadi gRPC-Web DAL. Saya mengikuti panduan posting blog Steve Sanderson. Solusi saya dapat dijalankan sebagai CSB atau SSB dan saya berhasil dengan gRPC-Web di kedua konfigurasi (saya memang harus melanjutkan ke versi yang lebih baru dari paket nuget gRPC.*).

Saya keliru melakukan pembaruan lebih lanjut dari build malam dan saat ini paket gRPC saya semuanya ada di versi 2.28.0-dev202003020801. Saya salah mengatakannya karena dua penerapan solusi kerja saya masing-masing gagal.

SSB - Klien melaporkan kesalahan "Komponen perenderan pengecualian yang tidak ditangani: Tidak dapat memuat file atau rakitan 'System.Text.Json, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. Sistem tidak dapat menemukan file yang ditentukan. "
Dengan hanya menambahkan paket nuget eksplisit System.Text.Json (4.7.1) ke proyek server web saya, kesalahan ini hilang dan semuanya berfungsi.
[EDIT] Kembali ke versi 2.27.0/2.27.0-Pre1 untuk semua paket gRPC.* dari umpan NuGet menyelesaikan masalah ini.

CSB - Pada titik yang sama di klien saat menerima respons gRPC-Web pertama, saya mendapatkan kesalahan "WASM: Grpc.Core.RpcException: Status(StatusCode=Internal, Detail="Respons gRPC buruk. Protokol respons diturunkan ke HTTP /1.1.")". Saya tidak memiliki solusi untuk ini, tetapi ini tidak penting karena kami mengirimkan SSB hingga CSB dirilis.
[EDIT] Kembali ke versi 2.27.0/2.27.0-Pre1 untuk semua paket gRPC.* dari umpan NuGet menyelesaikan masalah ini.

Maaf untuk verbositas, tapi akhirnya, dua pertanyaan:

  • Apakah mungkin menggunakan serializer/deserializer json lain di gRPC/gRPC-Web?
  • Apakah paket gRPC/gRPC-Web akan 'disejajarkan' dengan ASP.Net Core 3.2-Preview 2 atau akankah mengakses build malam diperlukan?

Hai @JamesNK ,
Pelanggan saya telah bermigrasi ke gRpcWeb, tetapi kami telah menemukan batasan penting (dari mana saya belum menemukan dokumentasi apa pun): ukuran pesan maksimal adalah 3067 karakter.
Jika dari layanan klien biasa dari layanan gRpc dasar, dikonversi ke gRpc-Web, baris ini akan gagal (karena string adalah 3068 karakter, 1 melebihi batas):

// Mengonfigurasi saluran untuk menggunakan gRPC-Web
var handler = GrpcWebHandler baru(GrpcWebMode.GrpcWebText, HttpClientHandler baru());
// Nomor port(5001) harus cocok dengan port server gRPC.
menggunakan saluran var = GrpcChannel.ForAddress(" https://localhost :5001", GrpcChannelOptions baru
{
HttpClient = HttpClient baru (penangan)
});
var client = new Greeter.GreeterClient(channel);
var reply = menunggu klien.SayHelloAsync(new HelloRequest { Nama = string baru('A', 3068 ) });
Console.WriteLine("Salam: " + balasan.Pesan);
Console.WriteLine("Tekan sembarang tombol untuk keluar...");
Console.ReadKey();

Saya melampirkan solusi repro yang berisi klien dan server.
GrpcWeb.zip

Proyek yang setara dengan normale gRpc mampu menangani pesan 20k tanpa masalah.
Bisakah Anda memberi saran kepada saya jika saya dapat mengonfigurasi sesuatu untuk menghapus batas ini?

@curia-damiano dapatkah Anda mengajukan masalah baru dengan ini? Mari kita pertahankan utas ini untuk membahas fitur spesifik pendukung gRPC ( tanpa gRPC-Web) di IIS/Azure App Service. gRPC-Web diangkat sebelumnya di utas ini karena ini adalah alternatif yang baik, tetapi saya ingin agar utas ini tetap fokus pada tujuan utama dukungan gRPC asli.

@MarkStega dapatkah Anda juga mengajukan masalah baru dengan pertanyaan Anda? Mari kita coba untuk menghindari utas ini kelebihan beban dengan beberapa kemungkinan topik (bahkan jika itu terkait). Masalah ini melacak dukungan gRPC asli di Layanan Aplikasi IIS/Azure

Bisakah kami memiliki ETA ketika gRPC akan tersedia di Layanan Aplikasi Azure?

Kami tidak memiliki pembaruan ETA. Kami akan memperbarui utas ini ketika kami memiliki ETA. Ini memerlukan perubahan Windows dan kami sedang bekerja dengan tim tersebut untuk mencoba dan menerapkannya sesegera mungkin, tetapi jadwal mereka tidak berada dalam kendali langsung kami.

Bisakah kita membangun layanan gRPC yang dikemas sebagai wadah dan berjalan di Aplikasi Web untuk Wadah di Azure?

@fgheysels Tidak. Itu masih di belakang IIS sebagai proxy yang tidak dapat menangani fungsionalitas HTTP/2 yang diperlukan.

Ada 3 cara untuk melakukan ini sekarang:

  1. Buka IP publik dan gunakan VM.
  2. Gunakan Kubernetes dengan Azure Application Gateway Ingress (yang instruksinya gagal karena skrip helm kedaluwarsa sehingga tidak dapat digunakan sekarang) atau gunakan nginx ingress (Anda kehilangan firewall dan Mitigasi DoS)
  3. Gunakan layanan Azure Container dan ekspos ke IP publik atau gunakan nginx untuk membalikkan proxy atau gunakan Azure Application Gateway untuk membalikkan proxy.

Tidak ada lagi yang akan berhasil.

@JohnGalt1717

Gunakan layanan Azure Container dan ekspos ke IP publik atau gunakan nginx untuk membalikkan proxy atau gunakan Azure Application Gateway untuk membalikkan proxy.

Gateway Aplikasi Azure saat ini tidak akan berfungsi. Ini memiliki batasan yang sama

saya kira kita bisa menjalankannya di gpogle cloud dengan kode .net kita?

Pada Rabu, 1 April 2020, 07:26 Sourabh Shirhatti, [email protected]
menulis:

@JohnGalt1717 https://github.com/JohnGalt1717

Gunakan layanan Azure Container dan ekspos ke IP publik atau gunakan nginx untuk
membalikkan proxy atau menggunakan Azure Application Gateway untuk membalikkan proxy.

Gateway Aplikasi Azure saat ini tidak akan berfungsi. Ini memiliki hal yang sama
keterbatasan


Anda menerima ini karena Anda berkomentar.
Balas email ini secara langsung, lihat di GitHub
https://github.com/dotnet/aspnetcore/issues/9020#issuecomment-606855605 ,
atau berhenti berlangganan
https://github.com/notifications/unsubscribe-auth/ABCSC7LVZJTQ2QPRHVB5G5TRKJGYLANCNFSM4HDHMSDA
.

@shirhatti Ok, jadi ini terus memburuk. Microsoft secara efektif membuatnya sehingga .NET dengan gRPC tidak dapat dijalankan di Microsoft Azure. Jika tidak begitu sedih, itu akan sangat LUCU.

Jadi, inilah daftar yang diperbarui:

  1. Paparkan IP publik dan gunakan VM (letakkan haproxy, nginx atau sesuatu di VM untuk Membalikkan proxy itu)
  2. Gunakan Kubernetes (AKS) dengan nginx ingress.

Saya tidak percaya ACS akan berfungsi karena masih menempatkan IIS di depannya jika ingatanku.

Dan #2 mungkin juga tidak berfungsi karena penyeimbang beban mungkin juga IIS di Windows... Adakah yang benar-benar membuat ini berfungsi di mana saja di Azure?

Saya pikir tiket github ini mendefinisikan apa yang telah saya katakan selama berbulan-bulan tentang tim .NET dan apa yang terjadi.

Microsoft secara efektif membuatnya sehingga .NET dengan gRPC tidak dapat dijalankan di Microsoft Azure. Jika tidak begitu sedih, itu akan sangat LUCU.

Tidak ada di sini yang khusus untuk .NET, batasannya ada di infrastruktur Windows dan Azure yang terkait dengan HTTP/2. Anda akan memiliki masalah yang sama dengan webstacks lain di Azure. Windows dan Azure sedang berupaya untuk membuka blokir kami tetapi memerlukan perubahan pada komponen mendasar yang membutuhkan waktu lama untuk diterapkan kembali.

Ini semua berhubungan langsung dengan .net. secara harfiah mengatakan di situs web biru dan .net bahwa .net adalah bahasa biru.

Tetapi Anda tidak dapat menggunakan bahasa itu dengan Azure tetapi dapat menggunakannya di AWS dan Google cloud dengan mudah.

Ini memalukan karena dengan begitu banyak kesalahan besar dari tim .net akhir-akhir ini, namun kesombongan mereka selalu tinggi tanpa alasan.

Dan mereka bahkan tidak memberi kami pekerjaan di sekitar jenis apa pun selain menggunakan web gRPC yang merupakan poc bukan produk nyata.

Ya, tetapi kami dapat menjalankan semua .net stack di google cloud, .net mendukung
gRPC semua baik-baik saja. Jadi saya tidak keberatan menjalankan GPC sampai mereka bisa memperbaikinya
di Azure.
Saya mengembangkan layanan aplikasi atau aplikasi tanpa server, saya tidak tertarik pada apa pun
solusi container karena terlalu mahal untuk penerapan skala besar
Saya sudah.

Pada Rabu, 1 April 2020 pukul 09:57 James Hancock [email protected]
menulis:

Ini semua berhubungan langsung dengan .net. itu benar-benar mengatakan di biru dan
situs web .net bahwa .net adalah bahasa biru.

Tetapi Anda tidak dapat menggunakan bahasa itu dengan Azure tetapi dapat menggunakannya di AWS dan
Google awan dengan mudah.

Ini memalukan karena begitu banyak kesalahan besar dari tim .net
akhir-akhir ini, namun kesombongan mereka selalu tinggi tanpa alasan.

Dan mereka bahkan belum memberi kami pekerjaan jenis apa pun selain untuk digunakan
web gRPC yang merupakan poc bukan produk nyata.


Anda menerima ini karena Anda berkomentar.
Balas email ini secara langsung, lihat di GitHub
https://github.com/dotnet/aspnetcore/issues/9020#issuecomment-606927717 ,
atau berhenti berlangganan
https://github.com/notifications/unsubscribe-auth/ABCSC7MRPFQBH52XDHUNP63RKJYMVANCNFSM4HDHMSDA
.

Pertama Microsoft harus takut dengan apa yang baru saja Anda katakan.

Kedua, saya baru saja mengganti konten web kami ke Azure kubernetes menggunakan node virtual dan kami menghabiskan sekitar setengah dari biaya layanan aplikasi dan memiliki kinerja dua kali lipat.

Aks adalah kekacauan hal-hal yang tidak berfungsi dengan benar dan dokumentasi kedaluwarsa tetapi begitu Anda mendapatkan identitas yang dikelola, dan IP publik di tempat, sisanya langsung.

Ya, tetapi ini adalah perubahan yang sangat besar bagi microsoft! dan saya suka
kesederhanaan gRPC meskipun saya mungkin beralih ke http Rx. Saya tidak bisa mendapatkan saya
websocket agar solusi berfungsi karena tampaknya memiliki masalah SSL/TLS.
Sepertinya saya bisa mendapatkan kub biru dengan biaya yang sama seperti layanan aplikasi S1 saya,
harus memeriksa kinerjanya.

Pada hari Rabu, 1 Apr 2020 jam 10:13 James [email protected]
menulis:

Pertama Microsoft harus takut dengan apa yang baru saja Anda katakan.

Kedua, saya baru saja mengubah konten web kami ke Azure kubernetes menggunakan
node virtual dan biayanya sekitar setengah dari biaya layanan aplikasi
kami dan memiliki kinerja dua kali lipat.

Aks adalah barang berantakan yang tidak berfungsi dengan baik dan ketinggalan zaman
dokumentasi tetapi setelah Anda mendapatkan identitas yang dikelola, dan IP publik di tempat
sisanya lurus ke depan.


Anda menerima ini karena Anda berkomentar.
Balas email ini secara langsung, lihat di GitHub
https://github.com/dotnet/aspnetcore/issues/9020#issuecomment-606933338 ,
atau berhenti berlangganan
https://github.com/notifications/unsubscribe-auth/ABCSC7O3N4XVCWM5MGCTS33RKJ2I7ANCNFSM4HDHMSDA
.

Ini semua berhubungan langsung dengan .net. secara harfiah mengatakan di situs web biru dan .net bahwa .net adalah bahasa biru.

Ini jelas tidak benar. Tumpukan TCP dan HTTP yang mendasarinya tidak ditulis menggunakan .NET. Microsoft sedang bekerja untuk mengadaptasi fondasi mereka untuk gRPC. Ini adalah pengiriman kompleks yang memiliki efek knock-on untuk semua yang berjalan di server Windows, termasuk Azure itu sendiri.

Ini memalukan karena dengan begitu banyak kesalahan besar dari tim .net akhir-akhir ini, namun kesombongan mereka selalu tinggi tanpa alasan.

Cara merengek yang tidak produktif dan kekanak-kanakan ini sama sekali tidak perlu. Ini tidak ada hubungannya dengan tim .NET. Mereka mendapatkan sebagian besar gRPC yang di-porting secara asli sehingga kami dapat mengerjakan PoC kami dan menggunakan solusi jika diperlukan, dan seperti orang dewasa yang matang, kami akan menunggu hingga platform dasar siap mengirimkan bagian akhir.

@oising

.NET adalah bahasa Azure. Microsoft Memasarkannya seperti itu. .NET gRPC tidak dapat dipahami oleh Azure. Ini 100% benar. Ini benar-benar gagal karena tidak tersedia saat rilis dan bahkan lebih buruk setahun kemudian. Tidak relevan bahwa tumpukan tidak ditulis oleh tim .NET di dalam Microsoft . Microsoft adalah Microsoft . Saya tidak peduli dengan wilayah kekuasaan kecil mereka dan batas-batas artifisial dan prioritas yang tidak selaras. Saya peduli dengan produk terbaik yang benar-benar berfungsi. Saya tidak peduli bahwa Microsoft mengklaim bahwa karena .NET adalah open source yang entah bagaimana tidak membuatnya menjadi produk berbayar lagi. Ini adalah produk berbayar. Saya hanya membayarnya secara tidak langsung dengan menggunakan Azure, Office dan Windows.

Dan tidak, kami tidak akan menunggu. Kami akan pindah ke penyedia cloud lain yang berfungsi. Itulah yang didorong oleh Microsoft tanpa henti. Neraka Saya memiliki orang dukungan Microsoft, katakan dan saya kutip "Jika Anda tidak menyukai [fakta bahwa kami memecahkan ini pada saat run-time dengan desain] Anda dapat menggunakan produk orang lain" Kepada sekitar 100 pelanggan. Ya, saya tahu dari 8 yang melakukan persis apa yang mereka sarankan sejauh ini dan 30-40 lebih yang sedang menyelidiki melakukannya. Perkiraan pendapatan yang hilang untuk MS dari satu agen pendukung itu sekitar 2,8 juta USD dan terus bertambah.

Ya, itulah yang akan kita semua lakukan. Terima kasih atas sarannya Microsoft. Kami akan meninggalkan Azure, dan kami akan meninggalkan .NET jika kepemimpinan tidak segera diluruskan.

Apa yang harus mereka khawatirkan adalah ketika orang-orang seperti saya berhenti mengeluh tentang kegagalan publik besar-besaran ini di mana mereka tidak bertanggung jawab atas mereka, dan sebaliknya mereka tidak mendengar apa-apa dan semua orang tidak peduli. Itu terjadi sekitar setahun yang lalu ketika Xamarin Forms pergi 18 minggu tanpa dapat membangun ke Apple Store, Android Store dan Windows Store dengan build yang sama dari Xamarin Forms dan Xamarin pada umumnya. Saya memposting, mereka mengakuinya, dan 18 minggu kemudian, hanya 1 orang yang mengikuti laporan bug meskipun itu adalah terobosan penuh, bukan hanya kasus tepi. Mengapa? Tidak ada yang peduli dengan Xamarin Forms dan pergi dan mulai menggunakan alat non-Microsoft dan Microsoft kehilangan desktop dan ponsel. (dan terus mencoba pendekatan gagal yang sama untuk memenangkannya kembali bahkan dengan Neo dan Duo) Saat ini orang masih berpikir bahwa mereka memiliki suara di .NET dan bahwa keluhan mereka tidak akan didengar dan hal ini akan diperbaiki. Pimpinan .NET bekerja sangat keras untuk menjelaskan bahwa bukan itu masalahnya dan hasilnya akan identik dengan Xamarin Forms.

Bagian header trailer adalah sesuatu yang kami temukan lebih mendesak daripada yang kami pikirkan untuk Stack Overflow juga. Bisakah kami membantu menentukan prioritas di sini?

Kasus penggunaan

Kami melakukan pengaturan waktu melalui header server untuk menangkapnya di log HTTP kami (di HAProxy). Kami memiliki beberapa tajuk seperti X-Sql-DurationMs , X-Sql-Count , X-Reds-DurationMs , dll. sehingga kami dapat menangkapnya dalam log, dan menggabungkan metrik di dalamnya. Jika lebih detail membantu, ada bagian di posting blog ini . Ini bekerja cukup baik di ASP.NET MVC 5 (kerangka kerja penuh) karena seluruh respons disangga. Karena kami melakukan sangat sedikit kueri dalam tampilan, itu adalah strategi pengaturan waktu yang akurat ~99% yang bekerja dengan baik secara keseluruhan.

Sekarang kami menjalankan .NET Core dan semuanya mengalir. Masalah dengan ini adalah bahwa header waktu dikirim sebelum selesai, karena kurangnya buffering. Ini adalah trade-off yang keras. Ini akan dapat diperbaiki dengan cepat jika kami dapat mengirim dan menangkap pengaturan waktu tersebut sebagai header trailer. Tapi sepertinya kami berada di pemblokir IIS di sini dan kami bergantung pada itu yang ditingkatkan (atau kami pindah dari IIS) agar fungsi ini berfungsi.

Secara pribadi, saya juga memiliki kegunaan lain, seperti MiniProfiler mengirim header Server-Timing (sudah siap dan menunggu sekitar 3 tahun sekarang ).

Bagaimana kami dapat membantu dengan prioritas ini? Apakah ada kemungkinan kasus penggunaan tambahan akan membantu mengubahnya?

Terima kasih @NickCraver. Pekerjaan ini sudah menjadi prioritas tinggi dan sedang berlangsung, tetapi menerapkannya ke layanan seperti AppService itu rumit dan masih akan memakan waktu cukup lama.

Apakah ada kemungkinan akan segera didukung di IIS, terlepas dari peluncuran Azure? -- Saya benar-benar hanya membutuhkan klien di IIS - jika itu penting. Jadi bisakah IIS menjadi klien http2?

Saya harus setuju, itu mengkhawatirkan, bahwa tampaknya mustahil bagi karyawan Microsoft, untuk mengambil kaki mereka (Atau telepon saat ini) dan pergi ke tim lain itu. Dan sangat mengganggu mereka sehingga mereka menyebarkan perbaikan terbaru dalam sehari.
Jika tim asp / .net tidak mendorong grpc, masa tunggu ini akan baik-baik saja. Tetapi karena Anda memasarkan produk yang tidak dapat digunakan dalam produksi, sayangnya inilah saatnya untuk tindakan putus asa dan melanggar peringkat.

Jika Anda peduli, Anda akan mewujudkannya.

Sunting: Saya tahu "sehari" dilebih-lebihkan tetapi sudah setahun!

Apakah ada dokumen yang menjelaskan cara menyebarkan gRPC ke Azure? setidaknya menggunakan AKS? Akan menyenangkan untuk memiliki sesuatu.

Apakah ada dokumen yang menjelaskan cara menyebarkan gRPC ke Azure? setidaknya menggunakan AKS? Akan menyenangkan untuk memiliki sesuatu.

@lumogox Saya telah membuat panduan langkah demi langkah untuk menyebarkan gRPC ke Azure.
https://github.com/rupeshtech/k8s-grpc-dotntecore

@rupeshtech Saya benar-benar melihat panduan Anda, namun, itu tidak berfungsi jika Anda ingin menampilkan pesan di jalur root di port 80.

Hal-hal hebat tetapi saya ingin menerapkan layanan aplikasi dan kami masih belum memiliki ETA.
Diklaim oleh salah satu orang lain bahwa AKS lebih murah daripada aplikasi
layanan, saya merasa sulit untuk percaya?
Pokoknya saya hanya ingin menggunakan layanan aplikasi atau infrastruktur tanpa server.

Pada Selasa, 12 Mei 2020 pukul 17:51 Luis Molina [email protected]
menulis:

@rupeshtech https://github.com/rupeshtech Saya benar-benar melihat ke
panduan Anda, namun, itu tidak berfungsi jika Anda ingin menampilkan pesan di
jalur root di port 80.


Anda menerima ini karena Anda berkomentar.
Balas email ini secara langsung, lihat di GitHub
https://github.com/dotnet/aspnetcore/issues/9020#issuecomment-627175783 ,
atau berhenti berlangganan
https://github.com/notifications/unsubscribe-auth/ABCSC7MUWWWYCGMEK2FH663RRD5YPANCNFSM4HDHMSDA
.

AKS: b12, 2 cluster node adalah $176 / bulan dan memberi Anda kinerja seperti p3.

Anda memerlukan yang berikut ini untuk membuatnya berfungsi:

  1. nginx ingress sebagai proxy terbalik.
  2. Aplikasi inti .net dockerized
  3. Template penerapan untuk aplikasi inti .net Anda
  4. Template layanan untuk penerapan tersebut
  5. Template ingress yang memetakan entri dns Anda
  6. cert bot untuk k8s atau sertifikat Anda sendiri untuk dipetakan ke ingress.
  7. Matikan SSL hanya di aplikasi .net Anda, itu akan mengacaukan RP dan mengaktifkan dukungan proxy di .net core.
  8. IP publik
  9. Registri Kontainer Azure

Ini adalah proses 30 bagian untuk mengonfigurasi ini di Azure sekarang dan hampir tidak ada yang dapat dilakukan melalui portal GUI. Mereka kehilangan pendaftar penampung yang terkait, mengonfigurasi penyedia masuk (Azure Application Gateway atau nginx atau haproxy dll. Memiliki gui untuk mengaturnya. Tidak ada hal utama Layanan dengan sumber daya lain, atau barang identitas terkelola yang diotomatisasi dengan benar (dan Anda membutuhkan keduanya untuk alasan yang tidak terduga).

Jika Anda melakukan sertifikat wildcard maka Anda juga memerlukan akses ke DNS Anda melalui salah satu penyedia dns yang didukung layanan certbot k8s.

Berikut skrip kami untuk menyiapkan lingkungan yang mungkin membantu Anda memulai:

Konfigurasi Azure

  1. Buat AKS
  2. az aks install-cli (jika Anda belum melakukannya)
  3. az aks dapatkan-kredensial --resource-group RGL-\ --nama XX-AKS-\
  4. az network public-ip create --resource-group MC_RGL-\ _XX-AKS-\ _eastus --nama PIP-AKS-\ --sku Standar --allocation-method static --query publicIp.ipAddress -o tsv
  5. Peta api, www, admin ke ip publik di DNS (yaitu beta.XX.com)
  6. az identitas buat -g RGL-\ -n XX-MI-AKS-\ -o json (Rekam ClientId, PrincipalId, Id dan Nama)
  7. az penetapan peran buat --role Reader --assignee \ --lingkup /langganan/\ /resourcegroups/RGL-\
  8. Dapatkan info Prinsip Layanan dari aplikasi direktori Azure Active: XX-AKS-\ SP-xxxx (Nama rekam, id klien)
  9. Buat rahasia klien tanpa kedaluwarsa dan catat
  10. tugas peran az buat --role "Operator Identitas Terkelola" --assignee \ --lingkup "\ "
  11. Dapatkan dns zone id: az network dns zone list --query "[].{ id: id, name: name}"
  12. tugas peran az buat --assignee \ --role Kontributor --scope \
  13. tugas peran az buat --assignee \ --role Kontributor --scope \
  14. az aks perbarui -n XX-AKS-\ -g RGL-\ --attach-acr clcr\
  15. Tambahkan Identitas Terkelola (XX-MI-AKS-\ ) ke Gudang Kunci

Kubernetes Let's encrypt (Jika bukan produksi)

  1. kubectl membuat namespace ingress-basic
  2. helm repo tambahkan stabil https://kubernetes-charts.storage.googleapis.com/
  3. helm install nginx-ingress stable/nginx-ingress --namespace ingress-basic --set controller.replicaCount=2 --set controller.nodeSelector."beta.kubernetes.io/os"=linux --set defaultBackend.nodeSelector." beta.kubernetes.io/os"=linux --set controller.service.loadBalancerIP="\ "
  4. Pastikan diperlukan: kubectl --namespace ingress-basic get services -o wide -w nginx-ingress-controller
  5. kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v0.14.3/cert-manager.yaml
  6. Perbarui issuer.yaml dengan langganan, dan Prinsip Layanan ClientId
  7. Perbarui sertifikat.yaml ke alamat dns
  8. Perbarui ingress.yaml dengan informasi domain, dll.
  9. Buat versi Base64 dari Service Principal Secret: echo \ | openssl base64
  10. Perbarui secure-dazuredns.yaml dengan rahasia

ATAU Gerbang Aplikasi Kubernetes Azure

  1. Tidak bekerja. Kekacauan total

Selesaikan Konfigurasi Kubernetes

  1. kubectl apply -f https://raw.githubusercontent.com/Azure/aad-pod-identity/master/deploy/infra/deployment-rbac.yaml
  2. Perbarui deploy-api dengan registry, keyvault, Environment, dan kunci instrumentasi
  3. Perbarui registri di deploy-portal dan deploy-admin
  4. Perbarui nilai di identity-binding.yaml (ClientId juga dari identitas terkelola di atas)
  5. kubectl buat namespace XX
  6. kubectl config set-context --current --namespace=XX
  7. kubectl apply -k ./\
  8. Verifikasi sertifikat tersedia: kubectl jelaskan sertifikat XX-tls-secret

Ya, itu benar-benar sulit. Dan tidak, tidak ada cara yang lebih mudah di k8s. Satu-satunya pilihan Anda yang lain adalah VM dengan IP publik dan menggunakan RP di depan aplikasi Anda. Anda dapat menggunakan VM Linux dan menjalankan buruh pelabuhan di dalamnya, dan menginstal HAproxy dan aplikasi Anda dalam wadah buruh pelabuhan dengan satu file pembuatan buruh pelabuhan dengan cukup mudah.

Jika tidak, Anda akan kacau sampai mereka mulai meluncurkan kernel dari Windows 2004 (musim semi 2020) ke Azure. (dengan asumsi itu berhasil di sana dan tidak ditunda hingga November)

Wow sobat itu luar biasa terima kasih, tetapi karena saya juga penggemar berat
Azure Dev Ops dengan pendekatan NoOps Saya benar-benar merasa bahwa AKS tidak masuk
liga saya.
Terutama ketika saya mungkin dapat menjalankan layanan aplikasi yang layak dengan harga yang lebih murah
daripada itu. Atau alihkan ke fungsi Azure. Saya tidak bisa mendapatkan soket web saya
solusi untuk disebarkan ke Azure.
Saya juga penggemar berat Ekstensi Reaktif dan ada beberapa Rx yang bagus
alat di luar sana seperti ini
https://github.com/lucassklp/Rx.Http
Tidak yakin tentang skalabilitas ini

Pada Selasa, 12 Mei 2020 pukul 22:09 James Hancock [email protected]
menulis:

AKS: b12, 2 cluster node adalah $176 / bulan dan memberi Anda kinerja seperti p3.

Anda memerlukan yang berikut ini untuk membuatnya berfungsi:

  1. nginx ingress sebagai proxy terbalik.
  2. Aplikasi inti .net dockerized
  3. Template penerapan untuk aplikasi inti .net Anda
  4. Template layanan untuk penerapan tersebut
  5. Template ingress yang memetakan entri dns Anda
  6. cert bot untuk k8s atau sertifikat Anda sendiri untuk dipetakan ke ingress.
  7. Matikan SSL hanya di aplikasi .net Anda, itu akan mengacaukan RP dan
    nyalakan dukungan proxy di .net core.
  8. IP publik
  9. Registri Kontainer Azure

Ini adalah proses 30 bagian untuk mengonfigurasi ini di Azure sekarang dan secara virtual
tidak ada yang dapat dilakukan melalui portal GUI. Mereka kehilangan pergaulan
pendaftar kontainer, mengonfigurasi penyedia ingress (Aplikasi Azure
Gateway atau nginx atau haproxy dll. memiliki gui untuk mengaturnya. Tak satupun dari
Layanan hal-hal utama dengan sumber daya lain, atau hal-hal identitas yang dikelola adalah
otomatis dengan benar (dan Anda membutuhkan keduanya untuk alasan yang tidak terduga).

Jika Anda melakukan sertifikat wildcard maka Anda juga memerlukan akses ke DNS Anda
melalui salah satu penyedia dns yang didukung layanan certbot k8s.

Berikut skrip kami untuk menyiapkan lingkungan yang mungkin membantu Anda mendapatkan
dimulai:
Konfigurasi Azure

  1. Buat AKS
  2. az aks install-cli (jika Anda belum melakukannya)
  3. az aks dapatkan-kredensial --resource-group RGL- --name XX-AKS-
  4. az network public-ip create --resource-group MC_RGL-_XX-AKS-_eastus
    --name PIP-AKS- --sku Standard --allocation-method static --query
    publicIp.ipAddress -o tsv
  5. Peta api, www, admin ke ip publik di DNS (yaitu beta.XX.com)
  6. az identitas buat -g RGL- -n XX-MI-AKS- -o json (Rekam
    ClientId, PrincipalId, Id dan Nama)
  7. tugas peran az buat --role Reader --assignee --scope
    /langganan//resourcegroups/RGL-
  8. Dapatkan info Prinsip Layanan dari aplikasi direktori Azure Active:
    XX-AKS-SP-xxxx (Nama rekaman, id klien)
  9. Buat rahasia klien tanpa kedaluwarsa dan catat
  10. tugas peran az buat --role "Operator Identitas Terkelola"
    --penerima tugas --lingkup ""
  11. Dapatkan dns zone id: az network dns zone list --query "[].{ id:
    id, nama: nama}"
  12. az penetapan peran buat --assignee --role Contributor --scope
  13. az penetapan peran buat --assignee --role Contributor --scope
  14. az aks update -n XX-AKS- -g RGL- --attach-acr clcr
  15. Tambahkan Identitas Terkelola (XX-MI-AKS-) ke Key Vault

Kubernetes Let's encrypt (Jika bukan produksi)

  1. kubectl membuat namespace ingress-basic
  2. helm repo tambahkan stabil
    https://kubernetes-charts.storage.googleapis.com/
  3. helm instal nginx-ingress stable/nginx-ingress --namespace
    ingress-basic --set controller.replicaCount=2 --set
    controller.nodeSelector."beta.kubernetes.io/os"=linux --set
    defaultBackend.nodeSelector."beta.kubernetes.io/os"=linux --set
    controller.service.loadBalancerIP=""
  4. Pastikan diperlukan: kubectl --namespace ingress-basic get services -o
    wide -w nginx-ingress-controller
  5. kubectl apply --validate=false -f
    https://github.com/jetstack/cert-manager/releases/download/v0.14.3/cert-manager.yaml
  6. Perbarui issuer.yaml dengan langganan, dan Prinsip Layanan ClientId
  7. Perbarui sertifikat.yaml ke alamat dns
  8. Perbarui ingress.yaml dengan informasi domain, dll.
  9. Jadikan versi Base64 dari Rahasia Utama Layanan: echo | opensl
    base64
  10. Perbarui secure-dazuredns.yaml dengan rahasia

ATAU Gerbang Aplikasi Kubernetes Azure

  1. Tidak bekerja. Kekacauan total

Selesaikan Konfigurasi Kubernetes

  1. kubectl apply -f
    https://raw.githubusercontent.com/Azure/aad-pod-identity/master/deploy/infra/deployment-rbac.yaml
  2. Perbarui deploy-api dengan registry, keyvault, Environment dan
    kunci instrumentasi
  3. Perbarui registri di deploy-portal dan deploy-admin
  4. Perbarui nilai di identity-binding.yaml (ClientId juga dari
    identitas terkelola di atas)
  5. kubectl buat namespace XX
  6. kubectl config set-context --current --namespace=XX
  7. kubectl apply -k ./
  8. Verifikasi sertifikat tersedia: kubectl jelaskan sertifikat XX-tls-secret

Ya, itu benar-benar sulit. Dan tidak, tidak ada cara yang lebih mudah di k8s. Milikmu
hanya pilihan lain adalah VM dengan IP publik dan menggunakan RP di depan Anda
aplikasi. Anda dapat menggunakan VM Linux dan menjalankan buruh pelabuhan di dalamnya, dan menginstal HAproxy dan
aplikasi Anda dalam wadah buruh pelabuhan dengan satu file komposisi buruh pelabuhan cantik
dengan mudah.

Kalau tidak, Anda kacau sampai mereka mulai meluncurkan kernel dari
Windows 2004 (musim semi 2020) ke Azure. (dengan asumsi itu berhasil di sana dan
tidak ditunda sampai November)


Anda menerima ini karena Anda berkomentar.
Balas email ini secara langsung, lihat di GitHub
https://github.com/dotnet/aspnetcore/issues/9020#issuecomment-627302354 ,
atau berhenti berlangganan
https://github.com/notifications/unsubscribe-auth/ABCSC7P74W4DK5RP2BKKI7LRRE365ANCNFSM4HDHMSDA
.

Websockets mungkin merupakan kemunduran yang baik jika Anda belum berkomitmen pada gRPC dan berfokus pada Layanan Aplikasi Azure.

Setelah Anda mengonfigurasi k8, Azure Devops menjadi mudah. Anda memintanya untuk membangun wadah buruh pelabuhan dan menyebarkan ke repositori Azure dengan tag build:id dan kemudian melepaskannya, Anda menjalankan kubectl untuk memberi tahunya agar memperbarui wadah penyebaran dengan tag yang tepat untuk id build dan itu hanya akan diluncurkan secara transparan versi baru. Satu-satunya hal yang kami lakukan adalah membuat alat yang melakukan migrasi EF sebelum melakukannya sehingga Anda tidak berakhir dengan beberapa replika k8s yang memanggil skrip migrasi secara bersamaan.

Teman ajaib terima kasih banyak, saya juga sangat menyukai Desain Berbasis Domain jadi saya
kira saya dapat menambahkan AKS ke gudang senjata saya sekarang, tetapi saya ingin klien saya pindah ke
tanpa server, saya tidak mengerti mengapa kebanyakan orang sepertinya tidak ingin pindah dari
kontainer?

Pada Selasa, 12 Mei 2020 pukul 23:05 James Hancock [email protected]
menulis:

Websockets mungkin merupakan solusi yang baik jika Anda belum berkomitmen pada gRPC
dan berfokus pada Layanan Aplikasi Azure.

Setelah Anda mengonfigurasi k8, Azure Devops menjadi mudah. Anda menyuruhnya untuk membangun
wadah buruh pelabuhan dan menyebarkan ke repositori Azure dengan build:id
tag dan kemudian untuk melepaskan Anda menjalankan kubectl untuk memberitahunya untuk memperbarui penyebaran
wadah dengan tag yang tepat untuk id build dan itu hanya akan
meluncurkan versi baru secara transparan. Satu-satunya hal yang kami lakukan adalah membuat alat
yang melakukan migrasi EF sebelum melakukannya sehingga Anda tidak berakhir dengan
beberapa replika k8s yang memanggil skrip migrasi secara bersamaan.


Anda menerima ini karena Anda berkomentar.
Balas email ini secara langsung, lihat di GitHub
https://github.com/dotnet/aspnetcore/issues/9020#issuecomment-627329964 ,
atau berhenti berlangganan
https://github.com/notifications/unsubscribe-auth/ABCSC7MW7NJUS475HICIJTTRRFCQBANCNFSM4HDHMSDA
.

Wadah @acrigney secara luas dianggap sebagai teknologi 'tanpa server'. Ini pasti bisa diperdebatkan, tetapi tidak ada definisi yang ketat

@acrigney Ada banyak alasan mengapa fungsi Azure tanpa server terutama tidak diinginkan:

  1. Azure Functions adalah tumpukan sampah rapuh yang selalu tertinggal di patch keamanan dengan .net core.
  2. Fungsi Azure adalah kotak hitam dan sulit untuk di-debug dalam banyak kasus.
  3. Setelah Anda mulai menggunakannya sepenuhnya, itu lebih mahal daripada opsi lain ketika Anda memiliki beban konstan.
  4. Tidak ada yang tidak dapat Anda lakukan selain itu yang dapat Anda lakukan di fungsi Azure
  5. K8s menyediakan lingkungan umum yang dikenal yang berfungsi sama di mesin dev lokal Anda seperti halnya di cloud apa pun yang ingin Anda buat. Saat Anda membuat sumber daya, itu berfungsi. Tidak masalah apakah itu Azure atau AWS yang mendukungnya, ia bekerja dengan cara yang sama dan secara konsisten tidak seperti Fungsi Azure sehingga kami mendapatkan hasil yang berbeda di Azure daripada secara lokal secara reguler.
  6. K8, pada sistem yang dimuat harganya lebih murah daripada Fungsi Azure.
  7. K8s melakukan penyebaran lebih baik daripada fungsi.
  8. Setelah Anda mulai bekerja dengan remoting kode VS ke buruh pelabuhan, Anda tidak akan ingin kembali. Lingkungan yang sama konfigurasi yang sama seperti produksi untuk konsistensi 100%. (Kami menggunakan k8s di dalam buruh pelabuhan untuk dev dengan WSL2 buruh pelabuhan dan memutar k8s di linux yang bekerja sangat baik dengan Windows 10 2004, tetapi dev penuh di k8s akan segera hadir)
  9. k8s memberi Anda semua otonomi VM tanpa harus mengelola VM, load balancing, dll. Ini hanya berfungsi.
  10. Jika Anda membuat gambar buruh pelabuhan dengan benar menggunakan penargetan platform dan IL yang menautkan layanan mikro Anda di k8s sama kecilnya dengan fungsi Azure sehingga tidak ada masalah penskalaan.

Itu hanya daftar singkat. Fungsi Azure sangat bagus secara teori, kemudian Anda mulai membenturkan kepala ke dinding dengannya dan Anda menemukan bahwa itu tidak sepadan.

sampai mereka mulai meluncurkan kernel dari Windows 2004 (musim semi 2020) ke Azure.

Pekerjaan yang diperlukan untuk IIS masih dalam proses dan tidak tersedia dalam rilis 2004.

@Tratcher Wow. Hanya aduh. Jadi lebih dari satu tahun akan berlalu dengan .net core mendukung gRPC dan Azure tidak memiliki cara yang layak untuk sebagian besar pengembang dunia untuk menggunakannya.

MS perlu membuat layanan aplikasi berbasis buruh pelabuhan yang menggunakan proxy nginx atau ha dan bukan IIS untuk RP. Ini gila.

Benar-benar sobat, saya pikir itu meregangkannya, tentu saja AKS dapat menskalakan tetapi
terutama dengan penggabungan pesan yang diperlukan untuk menjalankan beberapa
kontainer untuk proyek besar Saya tidak akan mempertimbangkan kontainer di
sesuai dengan cita-cita teknologi tanpa server. Saya dapat dengan mudah memasang dan memainkan apa saja
layanan mikro teknologi backend dengan server dan fungsi aplikasi tetapi apakah saya akan melakukannya?
kelincahan ini dengan kontainer?

Pada Selasa, 12 Mei 2020 pukul 23.31 onionhammer [email protected]
menulis:

@acrigney https://github.com/acrigney container cukup luas
dianggap sebagai teknologi 'tanpa server'


Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/dotnet/aspnetcore/issues/9020#issuecomment-627347120 ,
atau berhenti berlangganan
https://github.com/notifications/unsubscribe-auth/ABCSC7PPWZ7MPIETCXPEFYDRRFFUNANCNFSM4HDHMSDA
.

@acrigney Tentu saja Anda akan melakukannya. Dan Anda juga tidak akan memiliki ketergantungan yang merupakan Fungsi Azure. (dan Anda dapat dengan mudah menggunakan Host Fungsi Azure dalam wadah dan bahkan k8 jika Anda mau)

@acrigney Apakah Anda mencoba mengekspos gRPC ke layanan mikro lain yang berjalan di layanan aplikasi? Seperti apa topologi Anda?

Terima kasih sobat, tetapi saya pikir Anda tidak akan memiliki ketergantungan yang buruk atau ketat
kopling dengan fungsi. Saya membuat layanan mikro stateful menggunakan aplikasi DDD
layanan dengan layanan aplikasi Azure dan saya membuat layanan mikro stateless dengan
Layanan aplikasi DDD dalam fungsi Azure. Layanan aplikasi DDD mengekspos
DTO dan menggunakan objek domain dan layanan aplikasi lainnya dapat mengamati
peristiwa dipecat oleh objek domain ini. Saya hanya tidak membutuhkan wadah dan sekali
Anda membangun sebuah wadah yang akan memiliki banyak kode duplikat yang akan
akan dibutuhkan dalam wadah lain.

Pada Rabu, 13 Mei 2020 pukul 12:09 James Hancock [email protected]
menulis:

@acrigney https://github.com/acrigney Tentu saja Anda akan melakukannya. Dan kau
tidak akan memiliki ketergantungan yang juga merupakan Fungsi Azure. (dan kamu bisa
dengan mudah menggunakan host Fungsi Azure dalam wadah dan bahkan k8 jika Anda mau)


Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/dotnet/aspnetcore/issues/9020#issuecomment-627369635 ,
atau berhenti berlangganan
https://github.com/notifications/unsubscribe-auth/ABCSC7PQLO2K4RVWBQRGQS3RRFKCZANCNFSM4HDHMSDA
.

Peringatan it-does-not-run-on-IIS harus ditempatkan di atas halaman menggunakan <marquee> -tag: https://docs.microsoft.com/en-us/aspnet/core /grpc/?view=aspnetcore-3.1

Ini benar-benar inject profanity here jika Anda telah membuat prototipe, membuat file proto, mengonfigurasi server, klien, auth Anda menggunakan JWT dan baru saja menyampaikan seluruh ide kepada klien sebagai ini-adalah-yang-terbaik-selanjutnya- Since-sliced-bread untuk mengetahui bahwa kami tidak dapat menggunakannya dalam produksi karena kami menjalankannya di IIS. :(

sampai mereka mulai meluncurkan kernel dari Windows 2004 (musim semi 2020) ke Azure.

Pekerjaan yang diperlukan untuk IIS masih dalam proses dan tidak tersedia dalam rilis 2004.

Apakah ada eta/peta jalan?

Peringatan it-does-not-run-on-IIS harus ditempatkan di atas halaman menggunakan <marquee> -tag: https://docs.microsoft.com/en-us/aspnet/core /grpc/?view=aspnetcore-3.1

Anda benar, saya telah mengajukan https://github.com/dotnet/AspNetCore.Docs/issues/18336 untuk mengklarifikasi.

Apakah ada eta/peta jalan?

Tidak, ada terlalu banyak bagian yang bergerak untuk memberikan perkiraan yang andal.

Adakah yang punya dokumentasi tentang cara mengkonfigurasi nginx dengan grpc dan kestrel?

Hai semuanya, dapatkah kami mengalihkan beberapa permintaan untuk gRPC dalam suara pengguna AppService https://feedback.azure.com/forums/169385-web-apps?

Pertanyaan singkat: Apakah dukungan untuk IIS dan Layanan Aplikasi Azure digabungkan bersama atau dapat/akankah keduanya dikirimkan secara terpisah?

Terima kasih ya!

Mereka agak digabungkan - masuknya Layanan Aplikasi Azure dan hosting windows bergantung pada IIS, jadi mendapatkan dukungan ke IIS adalah pra-persyaratan.

Kemudian App Service perlu di-deploy berdasarkan build yang memiliki perbaikan tersebut, sehingga App Service akan hadir setelah dukungan IIS.

Pertanyaan singkat: Saya menggunakan server gRPC di IIS (10.0) dan sekarang mendapatkan kesalahan, "Status(StatusCode=Cancelled, Detail=\"No grpc-status found on response.\")". Saya telah menggunakan proyek WebApi sebagai klien gRPC. Ada yang bisa bantu saya?

Pertanyaan cepat: Saya menggunakan server gRPC di IIS (10.0) dan sekarang mendapatkan kesalahan, "Status(StatusCode=Cancelled, Detail="No grpc-status found on response.")". Saya telah menggunakan proyek WebApi sebagai klien gRPC. Ada yang bisa bantu saya?

Tidak dapat dilakukan, gRCP tidak didukung oleh IIS.

@lumogox @Dhananjay48 Catatan: GRPC-web didukung oleh IIS dan Anda hanya kehilangan streaming klien untuk sebagian besar. Jadi itu adalah pekerjaan sekitar, meskipun tidak bagus.

Kalau tidak, menurut apa yang saya lihat, kami menunggu hingga setidaknya Desember sebelum ini diperbaiki di IIS, jadi pindah dan gunakan sesuatu yang lain seperti nginx sebagai proxy terbalik.

Jika Anda hanya ingin menggunakan GRPC di Azure App Service, Anda dapat melakukannya sekarang dengan Linux Container

@EdiWang Ini saat ini tidak didukung pada Layanan Aplikasi untuk Linux. Kami sedang bekerja dengan Layanan Aplikasi untuk mengaktifkan ini, tetapi saya tidak memiliki ETA untuk dibagikan

Apakah ini karena masih ada HTTP.sys di depan webapp, meskipun itu adalah wadah buruh pelabuhan yang berjalan di Linux?

Ini pemahaman saya bahwa semua layanan aplikasi diproksi terbalik oleh iis. Karenanya mereka tidak akan berfungsi sampai ini diperbaiki.

Hanya sesuatu dengan IP publik atau rped oleh ha atau nginx dll (Linux) yang akan berfungsi. Kubernetes dengan nginx atau ha berfungsi dengan baik sebagai contoh tetapi gateway aplikasi sebagai ingress tidak.

Ini pemahaman saya bahwa semua layanan aplikasi diproksi terbalik oleh iis. Karenanya mereka tidak akan berfungsi sampai ini diperbaiki.

Hanya sesuatu dengan IP publik atau rped oleh ha atau nginx dll (Linux) yang akan berfungsi. Kubernetes dengan nginx atau ha berfungsi dengan baik sebagai contoh tetapi gateway aplikasi sebagai ingress tidak.

Ini juga pemahaman saya. Saya benar-benar berakhir di sini karena saya membaca jika semua layanan aplikasi digawangi oleh IIS. Karena dalam dokumen di sini: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-3.1#when-to-use-kestrel-with-a-reverse- proxy - itu menyarankan kami untuk menginstal proxy terbalik di depan kestrel jika Anda akan mengekspos kestrel ke internet :) Saya tahu ada IIS saat berjalan di windows, tetapi saya tidak dapat menemukan apa pun untuk memvalidasi HTTP.sys atau IIS itu juga tampak saat menjalankan buruh pelabuhan di layanan aplikasi. Utas ini adalah yang paling dekat yang pernah saya datangi. Lucunya, saya berlangganan utas ini karena saya juga cukup menarik di gPRC :)

Saya dapat mengonfirmasi bahwa iis juga menyediakan layanan aplikasi berbasis container termasuk yang Linux.

Satu-satunya pilihan Anda adalah VMS di mana Anda telah melakukan rp sendiri atau aks.

Suara Pengguna Layanan Aplikasi davidfowl belum mendapat banyak perhatian.

https://feedback.azure.com/forums/169385-web-apps/suggestions/40585333-grpc-support-in-azure-app-service
Mungkinkah ini alasan implementasi yang lambat? Saat Anda melihat Masalah ini, menurut saya dukungan gRPC itu penting.

Ya terutama karena saya juga tidak bisa membuat soket web berfungsi dan saya
khawatir tentang biaya kontainer karena saya harus menjalankan banyak.

Pada Jum, 12 Jun 2020 pukul 21:58 Takekazu [email protected]
menulis:

Suara Pengguna Layanan Aplikasi davidfowl belum mendapat banyak perhatian.

https://feedback.azure.com/forums/169385-web-apps/suggestions/40585333-grpc-support-in-azure-app-service
Mungkinkah ini alasan implementasi yang lambat? Seperti yang Anda lihat ini
Masalah, saya pikir dukungan gRPC itu penting.


Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/dotnet/aspnetcore/issues/9020#issuecomment-643232429 ,
atau berhenti berlangganan
https://github.com/notifications/unsubscribe-auth/ABCSC7L4452ZISXIPNAXWYLRWIKADANCNFSM4HDHMSDA
.

Menambahkan permintaan di sana masih sangat penting.

@davidfowl Itu jauh lebih mudah diucapkan daripada dilakukan. Coba masuk ke situs dengan akun microsoft Anda dengan tepi baru. Muncul jendela baru dan tidak melakukan apa-apa. Coba dan masuk dengan email saya, yah saya lupa kata sandinya, email kata sandi masuk ke email sampah untuk alamat email @ outlook.com. Ubah, login, dan tidak ada pengelola kata sandi yang meminta untuk menyimpan kata sandi, dll.

Hanya WOW buruk. Saya kira tim Azure tidak mendapatkan umpan balik yang baik sebagai hasilnya. Semoga Anda dapat meneruskan ini ke orang yang tepat untuk memperbaiki kekacauan itu.

Mungkin akan membantu seseorang untuk meng-host grpc ke iis.
Berikut adalah contoh kerja grpcweb Blazor WebAssembly dengan pendekatan kode pertama gRPC-Web yang di- host ke iis melalui melalui publikasi jarak jauh seperti pesona. Saya berasumsi itu bisa bekerja dengan cara lain juga. Saya belum melakukan pengujian kinerja apa pun, jadi saya tidak dapat mengomentari itu, tetapi saya pikir setidaknya itu akan bekerja dengan baik pada apa pun hingga solusi ukuran menengah.
Berikut ini tautan ke github
Itu juga menggunakan protobuf-net.Grpc.AspNetCore yang bukan deklarasi protobuff yang membosankan. Sangat bagus ketika Anda bisa langsung ke implementasi atau menambahkan metode tambahan untuk meminta/menanggapi.

Hai semua, saya perlu mendefinisikan tipe datatype array string dalam pesan Grpc. tidak yakin bagaimana melakukannya. sekarang saya melakukannya sebagai
string berulang Nama = 1,
di sini saya membutuhkan bidang nama sebagai tipe array string. Tapi itu menunjukkan kesalahan, bidang ini hanya bisa dibaca ketika mengikat data di dalamnya.

@Dhananjay48 Ini bukan StackOverflow. Silakan ajukan pertanyaan Anda di sana.
Mari kita simpan masalah ini untuk hal-hal yang terkait dengan gRPC di App Service.

Ini pemahaman saya bahwa semua layanan aplikasi diproksi terbalik oleh iis. Karenanya mereka tidak akan berfungsi sampai ini diperbaiki.

Hanya sesuatu dengan IP publik atau rped oleh ha atau nginx dll (Linux) yang akan berfungsi. Kubernetes dengan nginx atau ha berfungsi dengan baik sebagai contoh tetapi gateway aplikasi sebagai ingress tidak.

Bisakah 'Kestrel digunakan dalam konfigurasi proxy terbalik' dengan nginx, menjadi solusi? https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-3.1#when -to-use-kestrel-with-a-reverse-proxy'

Saya memasukkan saran ke @JamesNK di dokumen, untuk memasukkan contoh solusi hosting:
https://github.com/dotnet/AspNetCore.Docs/issues/18953

https://devblogs.microsoft.com/aspnet/grpc-web-for-net-now-available/?utm_source=vs_developer_news&utm_medium=referral
Diumumkan baru-baru ini dan dapat digunakan ke Azure.

Pada Kamis, 25 Jun 2020 pukul 13:48 OzBob [email protected] menulis:

Ini pemahaman saya bahwa semua layanan aplikasi diproksi terbalik oleh iis.
Karenanya mereka tidak akan berfungsi sampai ini diperbaiki.

Hanya sesuatu dengan IP publik atau rped oleh ha atau nginx dll (Linux) yang akan
kerja. Kubernetes dengan nginx atau ha berfungsi dengan baik sebagai contoh tetapi aplikasi
gateway sebagai ingress tidak akan.

Bisakah 'Kestrel digunakan dalam konfigurasi proxy terbalik' dengan nginx, menjadi
larutan?
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-3.1#when -to-use-kestrel-with-a-reverse-proxy
'

Saya memberikan saran ke @JamesNK https://github.com/JamesNK di
docs, untuk menyertakan contoh solusi hosting:
dotnet/AspNetCore.Docs#18953
https://github.com/dotnet/AspNetCore.Docs/issues/18953


Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/dotnet/aspnetcore/issues/9020#issuecomment-649198280 ,
atau berhenti berlangganan
https://github.com/notifications/unsubscribe-auth/ABCSC7KBUALMCXDGUS2NV7LRYLCKNANCNFSM4HDHMSDA
.

@acrigney dan disebutkan di sini di Ch9 juga: https://youtu.be/T4RD3W2MgHQ?list=TLPQMjUwNjIwMjB6we-UTBA_VA&t=288 oleh @shirhatti (https://twitter.com/sshirhatti)

Saya hanya ingin mengatakan bahwa kami telah bekerja dengan tim Windows untuk mulai mengaktifkan skenario ini. Berikut adalah posting blog dari tim Windows tentang hal itu, dan https://github.com/dotnet/aspnetcore/pull/24120 memiliki beberapa pekerjaan tindak lanjut untuk mengekspos hal-hal di ASP.NET Core.

Masih perlu beberapa saat sebelum semua ini selesai, tetapi senang dapat melaporkan bahwa setidaknya kami membuat kemajuan.

Terima kasih atas tindak lanjutnya, sangat membantu dan dihargai!!

Pada Rabu, 22 Juli 2020 pukul 11:17 Kevin Pilch [email protected]
menulis:

Saya hanya ingin mengatakan bahwa kami telah bekerja dengan tim Windows untuk
mulai mengaktifkan skenario ini. Berikut adalah posting blog
https://aka.ms/grpcblogpost dari tim Windows tentang hal itu, dan #24120
https://github.com/dotnet/aspnetcore/pull/24120 memiliki beberapa
pekerjaan tindak lanjut untuk mengekspos hal-hal di ASP.NET Core.

Masih akan lama sebelum semua ini mendarat, tapi senang bisa
untuk melaporkan bahwa kami membuat kemajuan setidaknya.


Anda menerima ini karena Anda berkomentar.
Balas email ini secara langsung, lihat di GitHub
https://github.com/dotnet/aspnetcore/issues/9020#issuecomment-662547810 ,
atau berhenti berlangganan
https://github.com/notifications/unsubscribe-auth/AAUKMASPCV3UE47OJZ6TIMDR44GKTANCNFSM4HDHMSDA
.

Saya hanya ingin mengatakan bahwa kami telah bekerja dengan tim Windows untuk mulai mengaktifkan skenario ini. Berikut adalah posting blog dari tim Windows tentang hal itu, dan #24120 memiliki beberapa pekerjaan tindak lanjut untuk mengekspos hal-hal di ASP.NET Core.

Masih perlu beberapa saat sebelum semua ini selesai, tetapi senang dapat melaporkan bahwa setidaknya kami membuat kemajuan.

Perhatikan ini telah diintegrasikan ke dalam server HttpSys AspNetCore di pratinjau 5.0. Ayo cobalah. Jika kita dapat mengidentifikasi masalah apa pun pada lapisan ini sekarang, maka kita akan memiliki lebih sedikit masalah ketika kita menambahkan lapisan IIS di atasnya.

Apakah ini berarti saya dapat melakukan gRPC penuh pada IIS jika saya menggunakan ASP.NET Core yang menargetkan pratinjau .NET 5?

Belum. Ada banyak bagian yang berbeda di sini:

  1. Modul Http.sys di Windows
  2. Dukungan ASP.NET Core untuk ini di HttpSysServer
  3. Dukungan IIS untuk ini di Windows
  4. Dukungan ASP.NET Core untuk ini di IIS
  5. Dukungan untuk ini di proxy terbalik yang digunakan Azure App Service
  6. Azure App Service menerapkan build Windows dengan 1 dan 3.
  7. Azure App Service menyebarkan build proxy terbalik dari 5
  8. Azure App Service menyebarkan build ASP.NET Core dengan 2 dan 4.

Apa yang @Tratcher katakan adalah bahwa 1 dan 2 tersedia dalam pratinjau .NET 5. Kami sedang mengerjakan 3 dan 4 sekarang, tetapi mencoba 1 dan 2 akan membantu memberi kami umpan balik tentang apakah itu akan berhasil, karena Http. dukungan sys adalah dasar dari dukungan IIS.

Seharusnya, 1 tersedia di pratinjau Windows, dan 2 tersedia di Pratinjau .NET 5.

Pratinjau Windows Insider tersedia dengan http.sys . yang diperbarui
https://techcommunity.microsoft.com/t5/networking-blog/windows-server-insiders-getting-grpc-support-in-http-sys/ba-p/1534273

Adakah ide jika ini akan tersedia sebagai pembaruan Windows ke Windows Server 2016/2019?

Dan dukungan IIS sekarang dalam build Windows Insider terbaru yang diumumkan di sini .

Kami sedang menyelidiki apakah mungkin untuk mem-backport perubahan ini ke build servis, tetapi itu masih belum jelas. Sampai sekarang, satu-satunya rencana rekaman adalah bahwa mereka akan berada di rilis mendatang.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat