Deploying ASP.NET Core 3.x to Local IIS using In Process and Out Of Process Hosting Model

ASP.NET Core , Posted at : Apr/12/2020  
138 Views   0 Comments

Dimulai dari versi 2.2 asp.net core menambahkan fitur baru untuk deployment, fitur baru tersebut yaitu in process hosting model. Fitur ini menjadikan proses request dan response lebih cepat performancenya dibandingkan dengan out of process yang ada di versi sebelumnya. Pada artikel ini saya akan membahas bagaimana caranya deployment asp.net core 3.1.1 (berlaku juga mulai versi 2.2 atau di atasnya) ke local IIS menggunakan in process hosting dan membandingkannya dengan out of process.

Out of process hosting menggunakan iis sebagai proxy sebelum akhirnya diproses oleh kestrel.exe yang bertugas sebagai web server host yang merupakan sebuah aplikasi console. Tentunya proses ini memiliki perbedaan dengan in process dari sisi request dan response time, hal tersebut dikarenakan in process sudah tidak lagi menggunakan kestrel.exe namun menggunakan iis module dan prosesnya dilakukan langsung di dalam iis itu sendiri (iis worker process) dan tidak ada proxy yang menjembatani request dan response.

Diasumsikan dalam artikel ini saya menggunakan asp.net core api 3.1 yang dibangun dengan menggunakan visual studio 2019 dan mengakses data ke database sql server. Deployment akan menggunakan in process model hosting yang sebenarnya untuk versi 3.1 sudah merupakan default model hosting. Lakukan langkah-langkah berikut ini:

1. Install Asp.Net Core Hosting Bundle di link berikut ini: https://dotnet.microsoft.com/download/dotnet-core/thank-you/runtime-aspnetcore-3.1.1-windows-hosting-bundle-installer

2. Buat folder baru misalnya di c:\inetpub\wwwroot\NetCore\CoreApi

3. Buat application pool baru di iis, misalnya dengan nama NetCore, untuk setting CLR Version menggunakan No Managed Code dan pipeline Integrated. No Managed Code dipilih karena sebenarnya asp.net core tidak memerlukan .NET CLR Runtime. Pastikan nilai properti Enable 32-bit Applications yaitu false dengan membuka menu Advanced Settings application pool tersebut.

4. Tambahkan website baru di iis misalnya dengan nama NetCore, pilih NetCore application pool yang sudah dibuat pada langkah-3, untuk Physical Path merujuk ke lokasi c:\inetpub\wwwroot\NetCore, dan untuk port ubah dengan nilai yang belum digunakan di komputer tersebut misalnya 8085.

5. Buka project asp.net core yang akan dipublish melalui visual studio dengan opsi Run As Administrator agar proses upload sukses. Pastikan hosting modelnya menggunakan in process.

iis4

Gambar-1. In Process Hosting Model

6. Apabila terdapat file tambahan di project tersebut misalnya file xml untuk dokumentasi kode pastikan properti Copy to Output Directory memiliki nilai Copy Always.

xml1

Gambar-2. Xml Documentation File

7. Lakukan publishing asp.net core melalui dengan klik kanan project dan pilih menu Publish, berikut langkah-langkahnya:

publish1

Gambar-3. Pilih IIS, FTP, Web Deploy dan klik Create Profile

publish2

Gambar-4. Isi input server, site name seperti yang tampak pada gambar di atas, kemudian klik Validate Connection untuk memastikan inputan valid dan user yang menjalankan visual studio memiliki hak akses write ke virtual directory yang dituju, setelah itu klik Next.

8. Langkah berikutnya yaitu memastikan versi framework yang digunakan beserta deployment mode dan target runtime. Deployment mode memiliki dua opsi yaitu Framework-Dependent dan Self-Contained. Framework-Dependent hanya akan melakukan instalasi file-file aplikasi dan dependency saja, sedangkan Self-Contained selain file aplikasi dan dependency juga akan menambahkan .Net Core Runtime dan library. Untuk target runtime dapat menggunakan Portable atau kalau memang spesifik akan dipublish di windows 64-bit maka bisa memilih win-x64 dan size ouput filenya juga akan lebih kecil dibandingkan portable yang memang ditujukan untuk beberapa platform sekaligus.

publish3

Gambar-5. Deployment Mode dan Target Runtime.

9. Klik tombol Publish di visual studio untuk melakukan proses upload file-file aplikasi.

publish4

Gambar-6. Publish project melalui visual studio.

10. Cek hasil publish di iis. Browse url asp.net core tersebut melalui browser

result1

Gambar-7. Asp.net core api hasil publish.

11. Untuk membuktikan bahwa in process tersebut menggunakan iis worker process (bukan kestrel web server) dapat dilihat dengan menggunakan Fiddller tools.

fiddler1

Gambar-8. In process hosting model menggunakan iis web server.

Demo berikutnya yaitu mengubah asp.net core tersebut dengan menggunakan out of process hosting model. Berikut langkah-langkahnya:

12. Tambahkan folder baru di c:\inetpub\wwwroot\NetCore\CoreApiOutOfProcess.

13. Buat application pool baru dengan nama NetCoreOOP seperti pada langkah-3.

14. Ubah hosting model project menjadi Out Of Process kemudian save.

15. Edit publish profile project dengan hanya mengubah Site Name menjadi NetCore/CoreApiOutOfProcess kemudian save dan publish.

16. Sebelum dibrowse ubah terlebih dahulu application pool untuk aplikasi tersebut di iis dengan membuka Basic Settings dan mengubahnya ke application pool NetCoreOOP.

17. Terkadang perubahan hosting model di project tidak tereflesikan di file web.config hasil publish, oleh karena itu buka file web.config hasil publishing di lokasi yang sudah dibuat pada langkah-12. Apabila masih in process maka lakukan perubahan nilainya menjadi out of process seperti gambar berikut ini:

oop1

Gambar-9. Setting out of process hosting model di file web.config.

18. Browse project dan lihat hasilnya. Buka kembali fiddler tools untuk membuktikan bahwa out of process menggunakan kestrel web server.

fiddler2

Gambar-10. Out of process menggunakan kestrel web server.

19. Dari sisi performance in process lebih baik dibandingkan out of process:

fiddler3

Gambar-11. Data statistik out of process.

fiddler4

Gambar-12. Data statistik in process.

Perlu diperhatikan bahwa application pool yang sudah digunakan untuk hosting model in process tidak dapat digunakan oleh aplikasi web yang lainnya, sehingga harus membuat application pool masing-masing. Selamat mencoba...


InfoEbook yang tersedia yang dapat dipesan secara langsung atau melalui google play store:

sql dan tsql sqlserver

Ebook Id: DB-02
Judul: Pemrograman SQL dan T-SQL di Database SQL Server
Harga: Rp. 35.000
Detail ebook: Pemrograman SQL dan T-SQL di Database SQL Server

sql dan plpgsql postgresql

Ebook Id: DB-01
Judul: Pemrograman SQL dan PL/PgSQL di Database Postgresql
Harga: Rp. 35.000
Detail ebook:  Pemrograman SQL dan PL/PgSQL di Database Postgresql.aspx

Apabila ada pertanyaan lebih lanjut silahkan kontak kami melalui email books@yulianmf.com dan nantikan ebook-ebook berikutnya. Terima kasih.

[Comments]

[Write your comment]
Name (required)
Email (required-will not published)
 
Comment

NPOJ
Input code above below (Case Sensitive) :
About Me 
Rully Yulian MF
Rully Yulian Muhammad Firmansyah | Microsoft Certified Trainer | IT Trainer at Native Enterprise | IT Consultant | Software Developer | MCAD | MCPD | MOS | Bandung, West Java, Indonesia.
[Read More...]
Top Download 
Mapping Hak Akses User Pada MenuStrip Sampai Control Button : Downloaded 6775 times  
Bagaimana caranya menginstal database ketika deploying sebuah aplikasi? : Downloaded 4858 times  
Simple Voice Engine Application With Sound Player Class... : Downloaded 3962 times  
Change Group,Sort Order, Filtering By Date in Crystal Reports : Downloaded 3437 times  
WinForms DataGrid Paging With SqlDataAdapter : Downloaded 2843 times  
Links 
Certifications 
Xamarin Certified
MOS 2007
MCT
MCPD
MCTS
MCAD.NET
ASP.NET Brainbench
Native Enterprise 
Follow Me 
Facebook   Instagram   LinkedIn   Twitter
Syndication 
Hosted By 
Native Enterprise News 
© Copyright 2006 - 2020   Rully Yulian MF   All rights reserved.