CategoriesProgramming

Deploy ASP .Net Core ke Heroku

Heroku adalah layanan cloud yang memungkinkan developer untuk mendeploy, mengatur dan memonitor aplikasi tanpa mengurus kerumitan masalah infrastruktur. Heroku sangat cocok bagi developer atau startup yang ingin menguji produknya karena proses build & deploynya sangat mudah dan murah karena ada paket harga yang gratis (dengan limit tertentu).

Dengan segala kemudahan yang ditawarkan oleh Heroku, akan tetapi Bahasa pemrograman yang disupport tidak terlalu banyak. C# dan ASP .Net Core adalah salah satu yang tidak disupport. Namun tidak usah khawatir, karena Heroku juga memberikan opsi melalui third-party buildpack untuk mengatasi hal itu. Lalu gimana caranya kita sebagai developer .Net jika ingin menggunakan layanan dari Heroku? Berikut step-step nya:

  1. Daftar akun Heroku
  2. Create Project ASP .Net Core baru
  3. Build dan push project ke GitHub
  4. Create New App di Heroku Dashboard
Continue reading
CategoriesProgramming

Benchmark Code dengan BenchmarkDotNet

Saat ini performa system merupakan hal yang sangat penting dan perlu diperhatikan bagi para developer. Semakin baik performa suatu system tentu akan membuat pengguna semakin nyaman menggunakannya. Untuk itu developer seperti kita perlu untuk melakukan Benchmark Code.

Apa itu Benchmark?

Benchmark adalah metode/langkah untuk mengukur serangkaian kode yang ada dalam sebuah fungsi. Dengan melakukan benchmark, kita bisa membandingkan kinerja kode mana yang lebih baik sehingga dapat mengoptimalkan system kita.

Untuk melakukan Benchmark Code, kita akan menggunakan tools dari DotNet yaitu BenchmarkDotNet.

Langkah Benchmark Code

  1. Buat Project baru
  2. Install BenchmarkDotNet Nuget package
  3. Buat Benchmark class
  4. Buat BenchmarkRunner instance
  5. Jalankan aplikasi dalam release mode
Continue reading
CategoriesProgramming

Membuat Planner dengan Microsoft Graph API

Microsoft Graph adalah platform dari Microsoft yang menghubungkan banyak layanan dan perangkat yang sudah disediakan oleh Microsoft. Dengan menggunakan Microsoft Graph, pengembang dapat melakukan integrasi layanan dengan layanan – layanan yang ada di Microsoft 365. Misal dalam tulisan ini saya ingin menggunakan layanan Microsoft Planner untuk membuat Task menggunakan API sendiri.

Berikut adalah langkah – langkahnya:

Continue reading
CategoriesProgramming

Pemetaan obyek dengan AutoMapper pada ASP .Net Core 3.1

AutoMapper adalah object to object mapper yang memetakan obyek A menjadi obyek B yang memiliki properti dan tipe yang berbeda. Seperti contoh kita perlu melakukan pemetaan Data Transfer Object ke object model. AutoMapper memudahkan proses pemetaan konvensional yang harus memetakan secara manual satu per satu.

Untuk menggunakan AutoMapper pada ASP .Net Core 3.1 terlebih dahulu harus menginstal AutoMapper melalui NuGet atau command pada NuGet Package Manager seperti ini.

Continue reading
CategoriesProgramming

Menambah IdentityUser Property di Identity ASP.Net Core

Identity pada ASP.Net Core ada untuk memudahkan kita menambahkan user dan mengatur user management pada website. Bahkan Identity sudah bisa menghandle  TwoFactorAuthentication, ExternalLogins dll. Secara default, identity akan membuat user dengan bentuk model seperti berikut.

Bisa kita lihat IdentityUser hanya terdiri dari beberapa property dan tidak bisa kita ubah. Lalu bagaimana jika kita butuh untuk menambah property?

Misalnya kita akan menambah property “Address” pada user, berikut langkahnya

Buat Model Baru

Mari kita buat Model baru yang extend pada IdentityUser

using Microsoft.AspNetCore.Identity;
namespace CustomIdentityUser.Models
{
    public class ApplicationUser: IdentityUser
    {
        public string Address { get; set; }
    }
}

Update Database Context

Ubah extend DatabaseContext menjadi “IdentityDbContext<ApplicationUser>”. Sehingga menjadi seperti ini

namespace CustomIdentityUser.Data
{
    public class ApplicationDbContext : IdentityDbContext
    {
        public ApplicationDbContext(DbContextOptions options)
            : base(options)
        {
        }
    }
}

Update Startup

Ubah configurasi Identity dari IdentityUser

services.AddDefaultIdentity(options => options.SignIn.RequireConfirmedAccount = true)
                .AddEntityFrameworkStores();

Menjadi ApplicationUser

services.AddDefaultIdentity(options => options.SignIn.RequireConfirmedAccount = true)
                .AddEntityFrameworkStores();

Update Views/Shared/_LoginPartial.cshtml

Ubah kode berikut

@inject SignInManager<IdentityUser> SignInManager
@inject UserManager<IdentityUser> UserManager

Menjadi

@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager

Add Default Identity Pages

  1. Klik kanan pada project
  2. Pilih Add > New Scaffolded Item
  3. Pilih Identity dan tekan Add
  4. Kamu bisa pilih override all files, atau hanya pilih beberapa yang kamu butuhkan. Misal saat ini kita pilih Account/Register
  5. Pilih database context yang sudah tersedia

Langkah ini akan membuat page register secara otomatis.

Register.cshtml.cs

Tambahkan property Address pada InputModel

public string Address { get; set; }

Tambahkan Address pada ApplicationUser di OnPostAsync

var user = new ApplicationUser { UserName = Input.Email, Email = Input.Email, Address = Input.Address };

Register.cshtml

Tambahkan input untuk address pada form

<div class="form-group">
    <label asp-for="Input.Address"></label>
    <input asp-for="Input.Address" class="form-control" />
    <span asp-validation-for="Input.Address" class="text-danger"></span>
</div>

Add Migration dan Update Database

Tambahkan migrasi dengan command berikut pada Package Manager Console

add-migration AddCustomUser

Lalu update database dengan command

update-database

Jalankan website dan coba lakukan register

Dan saat kita buka di database, bisa dilihat sudah muncul Addres pada table AspNetUsers