Singleton Design Pattern (C#, Microservices)

  Рет қаралды 14,603

Raw Coding

Raw Coding

Күн бұрын

Пікірлер: 60
@johnviggogrnbech1089
@johnviggogrnbech1089 3 жыл бұрын
I have been using locking just like this for my caching. Just nice to see that I am actually doing it as you explain it here with locking.
@RawCoding
@RawCoding 3 жыл бұрын
As long as the lock is not on critical code path and the creation process doesn’t take too long
@ShayanFiroozi1
@ShayanFiroozi1 2 жыл бұрын
I really wonder why you have only 43K subscribers ?!!🤷‍♂️ It should be at least 1 million 👍 Very informative channel and contents. Greetings from Iran.
@RawCoding
@RawCoding 2 жыл бұрын
Share the channel maybe we’ll get there ;) thank you for the kind words
@ЕгорБрызгалов-й7ж
@ЕгорБрызгалов-й7ж 3 жыл бұрын
Thank you! That was a really great example!
@RawCoding
@RawCoding 3 жыл бұрын
Thank you for watching
@superpcstation
@superpcstation 3 жыл бұрын
3:28 I don't understand the down side of using a static ctor? it looks cleaner than using locks
@RawCoding
@RawCoding 3 жыл бұрын
It runs on app start, so long creation processes will cause long startup time, I know it can sound silly but some apps are REALLY BIG. Additionally it’s hard to control the flow of construction as well as lack of being able to use async.
@superpcstation
@superpcstation 3 жыл бұрын
@@RawCoding Thank you :)
@thatcreole9913
@thatcreole9913 3 жыл бұрын
This is extremely well done content! Thank you.
@RawCoding
@RawCoding 3 жыл бұрын
Glad you like it
@ehvlullo
@ehvlullo 3 жыл бұрын
Awesome stuff. Do you ever see reason to write your own singleton (/locking) pattern in a production environment that has a DI container in place?
@RawCoding
@RawCoding 3 жыл бұрын
No
@LucasMarinoElementh
@LucasMarinoElementh 3 жыл бұрын
Thanks, amazing content as always!
@RawCoding
@RawCoding 3 жыл бұрын
Thank you
@TheNorthRemember
@TheNorthRemember 3 жыл бұрын
greate explanation, bty whats ur headset?
@RawCoding
@RawCoding 3 жыл бұрын
It’s shit, don’t recommend - smthn Bose, not the noice cancellation ones
@nandyad
@nandyad Жыл бұрын
This is the best example
@ДмитрийЯворский-е1ф
@ДмитрийЯворский-е1ф 3 жыл бұрын
Good explanation of the pattern)
@RawCoding
@RawCoding 3 жыл бұрын
Cheers
@muradazimzadadev
@muradazimzadadev 2 жыл бұрын
Great elucidation! But a problem here is that private constructor of safethread singleton class called 3 times, however it should have been called once. Anyone has any idea? ( No difference in the code)
@tomthunderforest1681
@tomthunderforest1681 3 жыл бұрын
why you didn't use lock(_instance) ? 7:37
@RawCoding
@RawCoding 3 жыл бұрын
Because instance is null and we need to instantiate it, if it’s null there’s nothing to lock. You can create an empty implement that will indicate it needs instantiation but at that point it’s too much work.
@tomthunderforest1681
@tomthunderforest1681 3 жыл бұрын
​@@RawCoding Thank you for explanation :) can't wait for next episodes. Good work !
@teseract7442
@teseract7442 2 жыл бұрын
If u use task, can use concurrent dictionary for same caching?
@RawCoding
@RawCoding 2 жыл бұрын
Sure
@piotrc966
@piotrc966 3 жыл бұрын
Interesting case. 'bad' version: if (!c.Contains("job_id", "job1")) { c.Write("job_id", "job1"); Console.WriteLine("Big Operation"); } when set .net core 3.1 in LinqPad generate null reference exception for : { _registry[key] = value; } Same exeption is in Visual Studio. :) but just change for: { Console.WriteLine(_registry == null); _registry[key] = value; } And it's OK.
@RawCoding
@RawCoding 3 жыл бұрын
And works for net5?
@piotrc966
@piotrc966 3 жыл бұрын
@@RawCoding Yes, in LinqPad works fine, but in Visual Studio throws: "System.InvalidOperationException: 'Operations that change non-concurrent collections must have exclusive access. " This exception seems OK, but for net 3.1 "null reference" in VS and LinqPad seems very strange - probably some bugs in .NET :).
@RawCoding
@RawCoding 3 жыл бұрын
That exception is expected because we aren’t using a concurrent dictionary. As for null I’d double check what is actually null
@babybob8823
@babybob8823 3 жыл бұрын
Thanks for the video!! It was great. Can we do this without static ctor and lock? Wouldn't be it thread-safe and the instance will be created only once when Create() is invoked? Correct me if I'm wrong. public class MemoryCache { private static readonly MemoryCache _instance = new MemoryCache(); private MemoryCache() {} public static MemoryCache Create() { return _instance; } }
@RawCoding
@RawCoding 3 жыл бұрын
that is fine if your creation process is that simple :)
@mohankumarsantha1770
@mohankumarsantha1770 3 жыл бұрын
I like this video, but little advice to you. Try to give a small explanation about the pattern and then start with an example that makes more sense to learners. 😊
@RawCoding
@RawCoding 3 жыл бұрын
Cheers
@rajenlenka7806
@rajenlenka7806 3 жыл бұрын
Graitude Brother...Thank you
@RawCoding
@RawCoding 3 жыл бұрын
Thank you for watching
@madd5
@madd5 3 жыл бұрын
ты работаешь программистом сам, или только ютюб?
@RawCoding
@RawCoding 3 жыл бұрын
Работаю
@ShayanFiroozi1
@ShayanFiroozi1 2 жыл бұрын
#suggestion Would you please make a video about how to choose our apps architecture and design patterns with real world example ? Thank you.
@RawCoding
@RawCoding 2 жыл бұрын
It’s a hard topic to cover I’ll see what I can do
@ShayanFiroozi1
@ShayanFiroozi1 2 жыл бұрын
@@RawCoding Thank You 👍
@clearlyunwell
@clearlyunwell 3 жыл бұрын
👍🏽
@RawCoding
@RawCoding 3 жыл бұрын
)
@devjutsu
@devjutsu 3 жыл бұрын
Do Observer and Strategy :)
@RawCoding
@RawCoding 3 жыл бұрын
We’ll get there
@XpLoeRe
@XpLoeRe 3 жыл бұрын
what a fucking god.
@RawCoding
@RawCoding 3 жыл бұрын
Thank you, no god though just a nerd )
@wisnu7734
@wisnu7734 3 жыл бұрын
Please make video System.IO.Pipeline
@RawCoding
@RawCoding 3 жыл бұрын
I’ll do, it’s quite a niche api didn’t have to use it that much
@stefanioan7569
@stefanioan7569 3 жыл бұрын
What happened to you? Where’s the beard?
@RawCoding
@RawCoding 3 жыл бұрын
🔪
@cigdemturkmen
@cigdemturkmen 3 жыл бұрын
still too advanced for me. I will come back 6 months later
@RawCoding
@RawCoding 3 жыл бұрын
No rush )
@darkomartinovic1955
@darkomartinovic1955 8 ай бұрын
What about Lazy? public sealed class Singleton { private static readonly Lazy lazy = new Lazy(() => new Singleton()); public static Singleton Instance { get { return lazy.Value; } } private Singleton() { } }
@godsonjoseph
@godsonjoseph 3 жыл бұрын
First :P
@RawCoding
@RawCoding 3 жыл бұрын
👏
Adapter/Wrapper Design Pattern (C#, Microservices)
12:05
Raw Coding
Рет қаралды 18 М.
Decorator/Wrapper Design Pattern (C#)
16:01
Raw Coding
Рет қаралды 14 М.
1% vs 100% #beatbox #tiktok
01:10
BeatboxJCOP
Рет қаралды 67 МЛН
小丑女COCO的审判。#天使 #小丑 #超人不会飞
00:53
超人不会飞
Рет қаралды 16 МЛН
Singleton Design Pattern in C# - Do it THAT way
13:15
tutorialsEU - C#
Рет қаралды 31 М.
Proxy/Ambassador Design Pattern (C#, Microservices)
13:09
Raw Coding
Рет қаралды 9 М.
Master the Fluent Builder Design Pattern in C#
15:05
Milan Jovanović
Рет қаралды 30 М.
The Singleton Pattern in C#. How to Use It...But Should You???
10:42
Facade Design Pattern (C#, Microservices)
11:55
Raw Coding
Рет қаралды 9 М.
7 Outside The Box Puzzles
12:16
MindYourDecisions
Рет қаралды 221 М.
Singleton Pattern - Design Patterns (ep 6)
20:09
Christopher Okhravi
Рет қаралды 254 М.
The Singleton Design Pattern - Part of the Gang of Four
28:41
IAmTimCorey
Рет қаралды 76 М.
1% vs 100% #beatbox #tiktok
01:10
BeatboxJCOP
Рет қаралды 67 МЛН