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

Posted at : Apr/12/2020
2489 Views | 0 Comments

Dimulai dari versi 2.2 asp.net core menambahkan fitur baru untuk hosting model (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 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 Fiddler 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-ebook yang tersedia yang dapat dipesan secara langsung atau melalui google play store.



[Comments]


[Write your comment]

Name (required)

Email (required-will not published)

Comment
pfog
Input code above below (Case Sensitive) :

ABOUT ME

Rully Yulian MF
Rully Yulian Muhammad Firmansyah | Founder & IT Trainer Native Enterprise | MCT (2008-2019) | MVP (2009-2016) | Xamarin Certified Professional | MTA | MCAD | MCPD | MOS | Bandung, West Java, Indonesia.

[Read More...]

TOP DOWNLOAD

Mapping Hak Akses User Pada MenuStrip Sampai Control Button
downloaded 6983 times

Bagaimana caranya menginstal database ketika deploying sebuah aplikasi?
downloaded 4893 times

Simple Voice Engine Application With Sound Player Class...
downloaded 4045 times

Change Group,Sort Order, Filtering By Date in Crystal Reports
downloaded 3460 times

WinForms DataGrid Paging With SqlDataAdapter
downloaded 2881 times


LINKS

CERTIFICATIONS

Xamarin Certified
MOS 2007
MCT
MCPD
MCTS
MCAD.NET
ASP.NET Brainbench

NATIVE ENTERPRISE

Native Enterprise - IT Training

FOLLOW ME

Youtube  Facebook  Instagram  LinkedIn   Twitter

RSS


NATIVE ENTERPRISE NEWS

© Copyright 2006 - 2024   Rully Yulian MF   All rights reserved.