oh iyah om nanya lagi ini ada cara yang lebih baik gak sih om? i mean koneksinya itu cukup sekali aja kayak bikin koneksi mysql di php gitu loh om
kalo mau enak coba bikin dummy project aja yang kirim sesuatu ke client tiap 1 detik
oh iyah om masalah ane yang ini gimana yah @RonnyGunawan
ada gak sih cara supaya koneksinya itu sekali eksekusi aja
dan bisa dipakai berulang
dalemnya begini om
biasanya patternnya gini
builder.Services.AddSingleton<FooConnection>(() => {
var connectionString = // ambil dari configuration
return new FooConnection(connectionString);
});
Bjirrr
jadi AddSingleton
itu terima function untuk instantiate instancenya
Pake services builder juga yah
yup
Kirain ane services builder itu untuk hal2 yang berkaitan sama aspnya doang
Ini manggil singletonnya gimana om?
itu namanya dependency injection
dependency injection in a nutshell gini:
builder.Services.AddSingleton<Foo>();
builder.Services.AddTransient<Bar>();
builder.Services.AddScoped<Baz>(() => new Baz());
class Bar {
private readonly Foo _foo;
public Bar(Foo foo) {
_foo = foo;
}
}
constructor dari Bar di sini ngga pernah kita panggil sama sekali pakai new
statement. Bar
itu sendiri bakal kita inject ke constructor dari class lain, yang mana class lain itu juga bakal diinject ke something else. pokoknya berantai saling inject gitu tanpa ada yang pakai keyword new
3. ada beberapa hal yang invoked by framework. misalnya aspnetcore framework, misalnya controller. controller ini ngga diinject ke constructor class lain, tapi just trust the framework. semua yang kita taruh di constructornya controller akan diinject
Transient = setiap kali injected create new instance
Scoped = 1 instance dibuat per scope (di aspnetcore, 1 scope = 1 http request)
Singleton = 1 instance dibuat per app instance
RX is missing
lock missing, volatile missing, interlocked missing
masih banyak sih
oh iya ada Channel juga
Wew
Thanks om
Per app instance ini kalau dalam asp mvc itu percontroller bukan sih om?
Atau entire?
entire app
kalau mau global singleton (1 instance per planet) bisa pake orleans