ਜਾਣੋ ਕਿ C# ਕਿਵੇਂ Windows-ਨਿਰਭਰ ਮੂਲ ਤੋਂ ਲਿਨਕਸ, ਕੰਟੇਨਰ ਅਤੇ ਕਲਾਊਡ ਬੈਕਐਂਡ ਲਈ ਕ੍ਰਾਸ-ਪਲੇਟਫਾਰਮ ਭਾਸ਼ਾ ਬਣ ਗਿਆ।

C# ਸ਼ੁਰੂਆਤੀ ਜ਼ਮਾਨੇ ਵਿੱਚ ਕਾਫ਼ੀ "Microsoft-ਨੈਟਿਵ" ਭਾਸ਼ਾ ਸੀ। 2000s ਦੇ ਸ਼ੁਰੂ ਵਿੱਚ, ਇਹ .NET Framework ਨਾਲ ਮਿਲ ਕੇ ਬਣੀ ਅਤੇ Windows (Windows Server, IIS, Active Directory) ਅਤੇ Microsoft ਦੇ ਟੂਲਿੰਗ ਵਾਤਾਵਰਨ ਵਿੱਚ ਆਰਾਮਦਾਇਕ ਮਹਿਸੂਸ ਕਰਨ ਲਈ ਡਿਜ਼ਾਈਨ ਕੀਤੀ ਗਈ ਸੀ। ਕਈ ਟੀਮਾਂ ਲਈ C# ਚੁਣਨਾ ਸਿਰਫ਼ ਇੱਕ ਭਾਸ਼ਾ ਚੁਣਨਾ ਨਹੀਂ ਸੀ—ਇਹ ਇੱਕ Windows-ਪਹਲੂ ਓਪਰੇਟਿੰਗ ਮਾਡਲ ਚੁਣਨਾ ਸੀ।
ਲੋਕ ਜਦੋਂ ਟਿਕ-ਟਿਕ ਕਰਕੇ "ਕ੍ਰਾਸ-ਪਲੇਟਫਾਰਮ" ਬੋਲਦੇ ਹਨ, ਉਹ ਆਮ ਤੌਰ 'ਤੇ ਕੁਝ ਪ੍ਰਯੋਗਿਕ ਚੀਜ਼ਾਂ ਮਤਲਬ ਲੈਂਦੇ ਹਨ:
ਇਹ ਸਿਰਫ਼ "ਚੱਲੇਗਾ" ਦੀ ਗੱਲ ਨਹੀਂ—ਇਹ ਇਸ ਬਾਰੇ ਹੈ ਕਿ Windows ਤੋਂ ਬਾਹਰ ਚਲਾਉਣਾ ਵੀ ਇੱਕ ਪਹਿਲ-ਸ਼੍ਰੇਣੀ ਅਨੁਭਵ ਹੈ।
ਇਹ ਪੋਸਟ ਦੱਸਦੀ ਹੈ ਕਿ C# ਕਿਵੇਂ Windows ਦੀਆਂ ਜੜਾਂ ਤੋਂ ਵੱਖ ਹੋ ਕੇ ਹਰ ਥਾਂ ਵਰਤੇ ਜਾਣ ਵਾਲਾ ਬੈਕਐਂਡ ਵਿਕਲਪ ਬਣਿਆ:
ਜੇ ਤੁਸੀਂ ਬੈਕਐਂਡ ਸਟੈਕਾਂ ਦਾ ਮੁਲਾਂਕਣ ਕਰ ਰਹੇ ਹੋ—ਸ਼ਾਇਦ C# ਨੂੰ Node.js, Java, Go, ਜਾਂ Python ਨਾਲ ਤੁਲਨਾ ਕਰਨਾ—ਇਹ ਗਾਈਡ ਤੁਹਾਡੇ ਲਈ ਹੈ। ਮਕਸਦ ਇਹ ਸਮਝਾਉਣਾ ਹੈ ਕਿ C# ਦੇ ਕ੍ਰਾਸ-ਪਲੇਟਫਾਰਮ ਮੋੜ ਪਿੱਛੇ ਕਿਹੜੇ ਕਾਰਨ ਸਨ ਅਤੇ ਅੱਜ ਦੇ ਸਰਵਰ-ਪਾਸੇ ਫੈਸਲਿਆਂ ਲਈ ਇਹ ਕੀ ਮਤਲਬ ਰੱਖਦਾ ਹੈ।
C# ਸਿਰਫ਼ "ਕਿਤੇ ਵੀ ਚੱਲਣ ਵਾਲੀ" ਭਾਸ਼ਾ ਵਜੋਂ ਸ਼ੁਰੂ ਨਹੀਂ ਹੋਈ। 2000s ਵਿੱਚ, C# ਦਾ ਕਾਫ਼ੀ ਨਜ਼ਦੀਕੀ ਰਿਸ਼ਤਾ .NET Framework ਨਾਲ ਸੀ, ਅਤੇ .NET Framework ਅਮਲੀ ਤੌਰ 'ਤੇ ਇੱਕ Windows ਉਤਪਾਦ ਸੀ। ਇਹ Windows-ਕੇਂਦਰਿਤ APIs ਨਾਲ ਆਉਂਦਾ ਸੀ, Windows ਕੰਪੋਨੈਂਟਾਂ 'ਤੇ ਨਿਰਭਰ ਸੀ, ਅਤੇ Microsoft ਦੇ ਵਿਖੇ ਵਿਕਾਸਕ ਸਟੈਕ ਦੇ ਨਾਲ ਵਿਕਸਤ ਹੋਇਆ।
ਜ਼ਿਆਦਾਤਰ ਟੀਮਾਂ ਲਈ, "C# ਵਿੱਚ ਬਣਾਉਣਾ" ਅਕਸਰ "Windows ਲਈ ਬਣਾਉਣਾ" ਦਾ ਮਤਲਬ ਸੀ। ਰੰਟਾਈਮ ਅਤੇ ਲਾਇਬ੍ਰੇਰੀਆਂ ਮੁੱਖ ਤੌਰ 'ਤੇ Windows 'ਤੇ ਪੈਕੇਜ ਅਤੇ ਸਹਾਇਤਾ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਸਨ, ਅਤੇ ਬਹੁਤ ਸਾਰੀਆਂ ਆਮ ਵਰਤੀ ਜਾਂਦੀਆਂ ਫੀਚਰ Windows ਤਕਨੀਕਾਂ ਨਾਲ ਗਹਿਰਾਈ ਨਾਲ ਜੁੜੀਆਂ ਹੋਈਆਂ ਸਨ।
ਇਸ ਨੇ C# ਨੂੰ ਬੁਰਾ ਨਹੀਂ ਬਣਾਇਆ—ਇਹ ਇਸਨੂੰ ਪੇਸ਼ਗੋਇ ਬਣਾਉਂਦਾ ਸੀ। ਤੁਸੀਂ ਜਾਣਦੇ ਸੀ ਕਿ ਤੁਹਾਡਾ ਪ੍ਰੋਡਕਸ਼ਨ ਵਾਤਾਵਰਨ ਕਿਵੇਂ ਦਿਖੇਗਾ: Windows Server, Microsoft-ਸਹਾਇਤਾ ਨਾਲ ਅਪਡੇਟ, ਅਤੇ ਇੱਕ ਸਟੈਂਡਰਡ ਸਿਸਟਮ ਸਮਰੱਥਾ ਸੈੱਟ।
ਬੈਕਐਂਡ C# ਅਕਸਰ ਅਜਿਹਾ ਲੱਗਦਾ ਸੀ:
ਜੇ ਤੁਸੀਂ ਵੈੱਬ ਐਪ ਚਲਾ ਰਹੇ ਸਨ, ਤਾਂ ਤਿਆਰ ਰਹੋ ਕਿ ਡਿਪਲੌਇ ਰਨਬੁੱਕ ਬੁਨਿਆਦੀ ਤੌਰ 'ਤੇ ਐਸਾ ਹੋਵੇ: “Windows Server VM ਪ੍ਰੋਵਾਈਜ਼ ਕਰੋ, IIS ਇੰਸਟਾਲ ਕਰੋ, ਸਾਈਟ ਡਿਪਲੌਇ ਕਰੋ।”
ਇਹ Windows-ਪਹਿਲੀ ਹਕੀਕਤ ਨੇ ਇੱਕ ਸਪੱਸ਼ਟ ਫਾਇਦੇ ਅਤੇ ਨੁਕਸਾਨ ਦਾ ਸੈੱਟ ਪੈਦਾ ਕੀਤਾ।
ਫਾਇਦੇ ਵਿੱਚ, ਟੀਮਾਂ ਨੂੰ ਉੱਤਮ ਟੂਲਿੰਗ ਮਿਲੀ—ਖਾਸ ਕਰਕੇ Visual Studio ਅਤੇ ਇੱਕ ਸਮੂੰਹ ਲਾਇਬ੍ਰੇਰੀਆਂ। ਵਿਕਾਸਕ ਵਰਕਫਲੋ ਆਰਾਮਦਾਇਕ ਅਤੇ ਉਤਪਾਦਕਸ਼ੀਲ ਸਨ, ਅਤੇ ਪਲੇਟਫਾਰਮ ਸਥਿਰ ਮਹਿਸੂਸ ਹੁੰਦਾ ਸੀ।
ਨੁਕਸਾਨ ਇਹ ਸੀ ਕਿ ਹੋਸਟਿੰਗ ਵਿਕਲਪ ਸੀਮਿਤ ਸਨ। Linux ਸਰਵਰ ਕਈ ਉਤਪਾਦਨ ਵਾਤਾਵਰਨਾਂ ਵਿੱਚ ਬਹੁਤਰ ਸੀ, ਅਤੇ ਵੈੱਬ ਹੋਸਟਿੰਗ ਇਕੋਜ਼ਿਆਦਾ Linux-ਅਧਾਰਿਤ ਸਟੈਕਾਂ ਵੱਲ ਝੁਕੀ ਹੋਈ ਸੀ। ਜੇ ਤੁਹਾਡੀ ਇਨਫਰਾਸਟ੍ਰਕਚਰ ਮਿਆਰੀ Linux ਸੀ, C# ਅਪਣਾਉਣਾ ਅਕਸਰ ਮੁਸ਼ਕਲ ਹੁੰਦਾ—ਜਾਂ ਤਾਂ ਤੁਸੀਂ Windows ਹੀ ਜੋੜਦੇ ਜੋ ਸਿਰਫ਼ ਇਕ ਹਿੱਸੇ ਲਈ ਲੋੜ ਸੀ।
ਇਹੀ ਕਾਰਣ ਸੀ ਕਿ C# ਨੂੰ "Windows-only" ਲੇਬਲ ਮਿਲਿਆ: ਨਹੀਂ ਕਿ ਇਹ ਬੈਕਐਂਡ ਨਹੀਂ ਕਰ ਸਕਦਾ ਸੀ, ਪਰ ਪ੍ਰੋਡਕਸ਼ਨ ਨੂੰ ਪਹੁੰਚਾਉਣ ਦਾ ਮੁੱਖ ਰਸਤਾ Windows ਦੇ ਰਾਹੀਂ ਹੀ ਸੀ।
"ਕ੍ਰਾਸ-ਪਲੇਟਫਾਰਮ .NET" ਸਰਕਾਰੀ ਤਰਜੀਹ ਬਣਨ ਤੋਂ ਪਹਿਲਾਂ, Mono ਇੱਕ व्यাবਹਾਰਿਕ ਹੱਲ ਸੀ: ਇਕ ਖੁਦਮੁਖਤਾਰ, open-source ਇੰਪਲੀਮੇਨਟੇਸ਼ਨ ਜਿਸ ਨੇ ਵਿਕਾਸਕਾਰਾਂ ਨੂੰ Linux ਅਤੇ macOS ‘ਤੇ C# ਅਤੇ .NET-ਸਟਾਈਲ ਐਪ ਚਲਾਉਣ ਦਿੱਤੇ।
Mono ਦਾ ਸਭ ਤੋਂ ਵੱਡਾ ਪ੍ਰਭਾਵ ਸੀ ਸਧਾਰਨ: ਇਸ ਨੇ ਸਾਬਤ ਕੀਤਾ ਕਿ C# ਨੂੰ Windows ਸਰਵਰਾਂ ਨਾਲ ਜੁੜਿਆ ਰਹਿਣ ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ।
ਸਰਵਰ ਪਾਸੇ, Mono ਨੇ ਕਈ ਪਹਿਲੇ ਡਿਪਲੌਇਮੈਂਟਾਂ ਨੂੰ Linux 'ਤੇ ਚਲਾਉਣ ਯੋਗ ਬਣਾਇਆ—ਅਕਸਰ ਮੌਜੂਦਾ ਹੋਸਟਿੰਗ ਵਾਤਾਵਰਨ ਜਾਂ ਲਾਗਤ ਕਾਰਨ ਦੇ ਕਰਕੇ। ਇਸ ਨੇ ਹੋਰ ਦਰਵਾਜੇ ਵੀ ਖੋਲ੍ਹੇ:
ਜੇ Mono ਨੇ ਪੁਲ ਬਣਾਇਆ, Unity ਨੇ ਉਸ 'ਤੇ ਵੱਡੀ ਟਰੈਫਿਕ ਭੇਜੀ। Unity ਨੇ ਆਪਣੇ ਸਕ੍ਰਿਪਟਿੰਗ ਰੰਟਾਈਮ ਵਜੋਂ Mono ਅਪਨਾਇਆ, ਜਿਸ ਨਾਲ ਬਹੁਤ ਸਾਰੇ ਵਿਕਾਸਕਾਰ macOS ਅਤੇ ਹੋਰ ਟਾਰਗੇਟ ਪਲੇਟਫਾਰਮਾਂ 'ਤੇ C# ਨਾਲ ਕੰਮ ਕਰਨ ਲੱਗੇ। ਹਾਲਾਂਕਿ ਉਹ ਪ੍ਰੋਜੈਕਟ ਵੈੱਬ ਬੈਕਐਂਡ ਨਹੀਂ ਸਨ, ਪਰ ਉਹਨਾਂ ਨੇ ਇਹ ਨਾਰਮਲ ਕੀਤਾ ਕਿ C# Windows ecosystem ਤੋਂ ਬਾਹਰ ਵੀ ਵਰਤੀ ਜਾ ਸਕਦੀ ਹੈ।
Mono .NET Framework ਦੇ ਬਰਾਬਰ ਨਹੀਂ ਸੀ, ਅਤੇ ਇਹ ਫਰਕ ਮਹੱਤਵਪੂਰਨ ਸੀ। APIs ਵਿੱਚ ਫਰਕ ਹੋ ਸਕਦਾ ਸੀ, compatibility ਦੀ ਗਾਰੰਟੀ ਨਹੀਂ ਸੀ, ਅਤੇ ਟੀਮਾਂ ਨੂੰ ਕਈ ਵਾਰ ਕੋਡ ਅਨੁਕੂਲਿਤ ਕਰਨ ਜਾਂ ਕੁਝ ਲਾਇਬ੍ਰੇਰੀਆਂ ਤੋਂ बचਣ ਦੀ ਲੋੜ ਪਈ। ecosystem ਵਿਚ ਕਈ “ਫਲੇਵਰ” ਹੋਣ ਕਾਰਨ ਤਜ਼ਰਬਾ ਤਕਨੀਕੀ ਤੌਰ 'ਤੇ ਵੰਞ-ਵੰਡਯੋਗ ਮਹਿਸੂਸ ਹੁੰਦਾ ਸੀ।
ਫਿਰ ਵੀ, Mono ਨੇ ਉਹ ਸਬੂਤ ਦਿੱਤਾ ਜਿਸ ਨੇ ਉਮੀਦਾਂ ਬਦਲ ਦਿੱਤੀਆਂ—ਅਤੇ ਅਗਲੇ ਪੜਾਅ ਲਈ ਮੰਚ ਤਿਆਰ ਕੀਤਾ।
Microsoft ਦਾ Linux ਅਤੇ open source ਵੱਲ ਦਿਸ਼ਾ-ਬਦਲਾਅ ਸਿਰਫ਼ ਬ੍ਰਾਂਡਿੰਗ ਨਹੀਂ ਸੀ—ਇਹ ਇਸ ਕਰਣ ਦੀ ਜਵਾਬੀ ਕਾਰਵਾਈ ਸੀ ਕਿ ਬੈਕਐਂਡ ਸੌਫਟਵੇਅਰ ਅਸਲ ਵਿੱਚ ਕਿੱਥੇ ਚੱਲ ਰਹੀ ਸੀ। ਮੱਧ-2010s ਤੱਕ, ਕਈ ਟੀਮਾਂ ਲਈ ਡੀਫਾਲਟ ਟਾਰਗਟ ਹੁਣ “ਇੱਕ Windows ਸਰਵਰ” ਨਹੀਂ ਰਿਹਾ, ਸਗੋਂ ਕਲਾਊਡ 'ਤੇ Linux, ਅਕਸਰ ਕੰਟੇਨਰਾਂ ਵਿੱਚ, ਅਤੇ ਆਟੋਮੈਟਿਕ ਤੌਰ 'ਤੇ ਡਿਪਲੌਇ ਹੁੰਦੇ ਸੀ।
ਤਿੰਨ ਪ੍ਰਯੋਗਿਕ ਤਾਕਤਾਂ ਨੇ ਇਹ ਬਦਲਾਅ ਤੇਜ਼ ਕੀਤਾ:
ਇਹ ਵਰਕਫਲੋਜ਼ ਨੂੰ ਸਮਰਥਨ ਕਰਨ ਲਈ .NET ਨੂੰ ਵਿਕਾਸਕਾਰਾਂ ਦੇ ਮੌਜੂਦਾ ਢੰਗਾਂ (Linux ਅਤੇ ਕਲਾਊਡ-ਨੇਟਿਵ) ਨਾਲ ਮਿਲਨਾ ਪਿਆ।
ਇਤਿਹਾਸਕ ਤੌਰ 'ਤੇ, ਬੈਕਐਂਡ ਟੀਮਾਂ ਇਕ ਐਸੇ ਸਟੈਕ 'ਤੇ ਦਾਣਾ ਲਾਉਣ ਵਿੱਚ ਹਿਚਕਣ ਕਰਦੀਆਂ ਸਨ ਜੋ ਇੱਕ ਹੀ ਵੇਂਡਰ ਦਾ ਨਿਯੰਤਰਣ ਜ਼ਿਆਦਾ ਮਹਿਸੂਸ ਕਰਦਾ ਸੀ। .NET ਦੇ ਮੁੱਖ ਹਿੱਸਿਆਂ ਨੂੰ open source ਕਰਨ ਨਾਲ ਇਹ ਸੀਧਾ ਜਵਾਬ ਮਿਲਿਆ: ਲੋਗ implementation ਵੇਖ ਸਕਦੇ ਸਨ, ਫੈਸਲੇ ਟ੍ਰੈਕ ਕਰ ਸਕਦੇ ਸਨ, ਸੁਝਾਅ ਦੇ ਸਕਦੇ ਸਨ, ਅਤੇ ਮੁੱਦੇ ਖੁਲ੍ਹੇ ਤੌਰ 'ਤੇ ਚਰਚਾ ਹੋ ਸਕਦੇ ਸਨ।
ਇਹ ਪਾਰਦਰਸ਼ਤਾ ਪ੍ਰੋਡਕਸ਼ਨ ਉਪਯੋਗ ਲਈ ਮਹੱਤਵਪੂਰਨ ਸੀ—ਇਸ ਨਾਲ "ਬਲੈਕ ਬਾਕਸ" ਵਾਲਾ ਅਹਿਸਾਸ ਘਟਿਆ ਅਤੇ ਕੰਪਨੀਆਂ ਲਈ .NET 'ਤੇ ਅਟਲ ਹੋਣਾ ਆਸਾਨ ਹੋ ਗਿਆ ਜਿੱਥੇ ਸੇਵਾ 24/7 ਚੱਲਨੀ ਸੀ।
ਵਿਕਾਸ ਨੂੰ GitHub 'ਤੇ ਲਿਜਾਣ ਨਾਲ ਪ੍ਰਕਿਰਿਆ ਸਪਸ਼ਟ ਹੋ ਗਈ: ਰੋਡਮੈਪ, pull requests, ਡਿਜ਼ਾਈਨ ਨੋਟਸ ਅਤੇ ਰਿਲੀਜ਼ ਚਰਚਾ ਸਧਾਰਣ ਤਰੀਕੇ ਨਾਲ ਪਬਲਿਕ ਹੋ ਗਈ। ਇਸ ਨਾਲ ਸਮੁਦਾਇਕ ਯੋਗਦਾਨ ਲਈ ਬਾਧਾ ਘੱਟ ਹੋਈ ਅਤੇ ਤੀਜੀ-ਪੱਖੀ ਮੈੰਟੇਨਰਜ਼ ਵੀ ਪਲੇਟਫਾਰਮ ਬਦਲਾਵਾਂ ਨਾਲ ਉਲਝਣਾ ਘੱਟ ਮਹਿਸੂਸ ਕਰਨ ਲੱਗੇ।
ਨਤੀਜਾ: C# ਅਤੇ .NET ਹੁਣ "Windows-ਪਹਿਲੀ" ਨਾ ਰਹਿ ਕੇ ਹੋਰ ਸਰਵਰ ਸਟੈਕਾਂ ਦੇ ਬਰਾਬਰ ਮਹਿਸੂਸ ਹੋਣ ਲੱਗੇ—ਲਿਨਕਸ ਸਰਵਰਾਂ, ਕੰਟੇਨਰਾਂ ਅਤੇ ਆਧੁਨਿਕ ਕਲਾਊਡ ਡਿਪਲੌਇਮੈਂਟ ਵਰਕਫਲੋਜ਼ ਲਈ ਤਿਆਰ।
.NET Core ਉਹੁ ਸਮਾਂ ਸੀ ਜਦ Microsoft ਨੇ ਪੁਰਾਣੇ .NET Framework ਨੂੰ "ਵਧਾਇਆ" ਨਹੀਂ ਕੀਤਾ, ਬਲਕਿ ਆਧੁਨਿਕ ਸਰਵਰ ਕੰਮ ਲਈ ਨਵੇਂ ਸਿਰੇ ਤੋਂ ਰੰਟਾਈਮ ਬਣਾਇਆ। ਜਿੱਥੇ ਐੱਥੇ ਮਸ਼ੀਨ-ਵਾਇਡ ਇੰਸਟਾਲੇਸ਼ਨ ਮਾਡਲ ਮੰਨਿਆ ਜਾਂਦਾ ਸੀ, .NET Core ਨੂੰ ਮੋਡੀਊਲਰ, ਹਲਕਾ ਅਤੇ ਅਜਿਹੇ ਤਰੀਕੇ ਨਾਲ ਬਣਾਇਆ ਗਿਆ ਕਿ ਆਧੁਨਿਕ ਬੈਕਐਂਡ ਸਰਵਿਸਾਂ ਦੀ ਡਿਪਲੌਇਮੈਂਟ ਰੀਅਲਿਟੀ ਨੂੰ ਬਿਹਤਰ ਸਮਝਿਆ ਜਾ ਸਕੇ।
.NET Core ਨਾਲ, ਇਕੋ C# ਬੈਕਐਂਡ ਕੋਡਬੇਸ ਇਹਨਾਂ 'ਤੇ ਚੱਲ ਸਕਦਾ ਸੀ:
ਅਮਲੀ ਤੌਰ 'ਤੇ, ਟੀਮਾਂ ਹੁਣ C# ਤੇ standardized ਹੋ ਸਕਦੀਆਂ ਸਨ ਬਿਨਾਂ ਇਹੋ ਜਿਹਾ ਕੀ ਉਹਨਾਂ ਨੂੰ Windows ਨੂੰ ਹੀ ਮਿਆਰੀ ਬਣਾਉਣਾ ਪਏ।
ਬੈਕਐਂਡ ਸਰਵਿਸਾਂ ਨੂੰ ਲਾਭ ਹੁੰਦਾ ਹੈ ਜਦ ਡਿਪਲੌਇ ਛੋਟੇ, ਪ੍ਰीडਿਕਟੇਬਲ ਅਤੇ ਤੇਜ਼-ਸਟਾਰਟ ਹੋਣ। .NET Core ਨੇ ਇੱਕ ਫਲੈਕਸਿਬਲ ਪੈਕੇਜਿੰਗ ਮਾਡਲ ਪੇਸ਼ ਕੀਤਾ ਜੋ ਤੁਹਾਨੂੰ ਸਿਰਫ਼ ਉਹੀ ਸ਼ਾਮਿਲ ਕਰਨ ਦਿੰਦਾ ਹੈ ਜੋ ਐਪ ਨੂੰ ਚਾਹੀਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਡਿਪਲੌਇਮੈਂਟ ਆਕਾਰ ਘਟਦਾ ਅਤੇ cold-start ਰਹਿਵਾਰ ਬਿਹਤਰ ਹੁੰਦੀ—ਮਾਇਕਰੋਸਰਵਿਸਾਂ ਅਤੇ ਕੰਟੇਨਰ-ਅਧਾਰਿਤ ਸੈਟਅਪ ਲਈ ਖ਼ਾਸ ਤੌਰ 'ਤੇ ਲਾਭਦਾਇਕ।
ਇਕ ਹੋਰ ਮਹੱਤਵਪੂਰਨ ਬਦਲਾਅ ਇਹ ਸੀ ਕਿ ਇਹ ਸਿਸਟਮ-ਵਾਇਡ ਸਾਂਝੇ ਰੰਟਾਈਮ 'ਤੇ ਨਿਰਭਰ ਨਹੀਂ ਰਿਹਾ। ਐਪ ਆਪਣੇ ਡਿਪੈਂਡੈਂਸੀਜ਼ ਲੈ ਕੇ ਚੱਲ ਸਕਦੇ (ਜਾਂ ਕਿਸੇ ਖ਼ਾਸ ਰੰਟਾਈਮ ਨੂੰ ਟਾਰਗੇਟ ਕਰਦੇ), ਜਿਸ ਨਾਲ "ਮੈਂਰੇ ਸਰਵਰ 'ਤੇ ਇਹ ਚੱਲਦਾ ਸੀ" ਵਾਲੀ ਸਮੱਸਿਆ ਘਟਦੀ।
.NET Core ਨੇ ਵੱਖ-ਵੱਖ ਰੰਟਾਈਮ ਵਰਜਨਾਂ ਦੇ side-by-side ਇੰਸਟਾਲ ਨੂੰ ਮਦਦ ਦਿੱਤੀ। ਇਹ ਅਸਲ ਜੀਵਨ ਵਿੱਚ ਮਾਇਨੇ ਰੱਖਦਾ ਹੈ: ਇਕ ਸਰਵਿਸ ਪੁਰਾਣੀ ਵਰਜਨ 'ਤੇ ਰਹਿ ਸਕਦੀ ਹੈ ਜਦਕਿ ਦੂਜੀ ਅਪਗ੍ਰੇਡ ਕਰਦੀ ਹੈ, ਬਿਨਾਂ ਖਤਰਨਾਕ ਸਰਵਰ-ਵਾਇਡ ਚੇਂਜ ਕਰਵਾਇਆ। ਨਤੀਜਾ ਹੋਇਆ ਸੁਚੱਜੇ ਰੋਲਆਉਟ, ਆਸਾਨ rollback ਵਿਕਲਪ ਅਤੇ ਟੀਮਾਂ ਵਿਚਕਾਰ ਘੱਟ ਕੋਆਰਡੀਨੇਸ਼ਨ।
ASP.NET Core ਉਹ ਮੋੜ ਸੀ ਜਿੱਥੇ "C# ਬੈਕਐਂਡ" ਦਾ ਮਤਲਬ ਹੋਰ Windows ਸਰਵਰ ਲੋੜੀਂਦਾ ਨਹੀਂ ਰਹਿ ਗਿਆ। ਪੁਰਾਣੀ ASP.NET ਸਟੈਕ (ਜੋ .NET Framework 'ਤੇ ਸੀ) Windows ਕੰਪੋਨੈਂਟਾਂ ਨਾਲ ਕੜੀ ਤਰ੍ਹਾਂ ਜੁੜੀ ਹੋਈ ਸੀ—ਇਹ ਓਖਾ ਕੰਮ ਕਰਦਾ ਸੀ, ਪਰ ਇਹ Linux ਜਾਂ ਲਘੂ ਕੰਟੇਨਰਾਂ ਵਿੱਚ ਸਾਫ਼ ਚੱਲਣ ਲਈ ਬਣਾਇਆ ਨਹੀਂ ਗਿਆ ਸੀ।
ASP.NET Core ਨੂੰ ਮੁੜ-ਆਰਕੀਟੈਕਟ ਕੀਤਾ ਗਿਆ ਹੈ: ਛੋਟਾ, ਮੋਡੀਊਲ ਸਤਹ ਅਤੇ ਆਧੁਨਿਕ ਰੀਕਵੇਸਟ ਪਾਈਪਲਾਈਨ। System.Web ਦੇ ਭਾਰੀ, ਇਵੈਂਟ-ਚਲਿਤ ਮਾਡਲ ਦੀ ਥਾਂ, ਇਹ explicit middleware ਅਤੇ ਸਾਫ਼ ਹੋਸਟਿੰਗ ਮਾਡਲ ਵਰਤਦਾ ਹੈ। ਇਸ ਨਾਲ ਐਪਸ ਨੂੰ ਸਮਝਣਾ, ਟੈਸਟ ਅਤੇ ਇੱਕਸਾਰ ਡਿਪਲੌਇ ਕਰਨਾ ਆਸਾਨ ਹੋ ਗਿਆ।
ASP.NET Core Kestrel ਨਾਲ ਆਉਂਦਾ ਹੈ, ਜੋ ਇਕ ਤੇਜ਼, ਕ੍ਰਾਸ-ਪਲੇਟਫਾਰਮ ਵੈੱਬ ਸਰਵਰ ਹੈ ਅਤੇ Windows, Linux ਅਤੇ macOS 'ਤੇ ਇੱਕੋ ਤਰ੍ਹਾਂ ਚੱਲਦਾ ਹੈ। ਪ੍ਰੋਡਕਸ਼ਨ ਵਿੱਚ, ਟੀਮਾਂ ਅਕਸਰ ਇਕ ਰਿਵਰਸ ਪ੍ਰੌਕਸੀ (ਕਈ ਵਾਰੀ Nginx, Apache, ਜਾਂ ਕਲਾਉਡ ਲੋਡ ਬੈਲਾਂਸਰ) ਨੂੰ ਅੱਗੇ ਰੱਖਦੀਆਂ ਹਨ TLS ਟਰਮੀਨੇਸ਼ਨ, ਰੂਟਿੰਗ ਅਤੇ ਐਜ ਦੇ ਮੁੱਦਿਆਂ ਲਈ—ਜਦਕਿ Kestrel ਐਪ ਟ੍ਰੈਫਿਕ ਸੰਭਾਲਦਾ ਹੈ।
ਇਹ ਹੋਸਟਿੰਗ ਤਰੀਕਾ Linux ਸਰਵਰਾਂ ਅਤੇ ਕੰਟੇਨਰ ਓਰਕੈਸਟ੍ਰੇਸ਼ਨ ਲਈ ਕੁਦਰਤੀ ਹੈ, ਬਿਨਾਂ ਕਿਸੇ ਖ਼ਾਸ Windows-ਕੇਂਦਰਿਤ ਸੰਰਚਨਾ ਦੇ।
ASP.NET Core ਨਾਲ, C# ਟੀਮਾਂ ਆਧੁਨਿਕ ਸਿਸਟਮਾਂ ਜੋ ਉਮੀਦ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ ਉਹ ਅਮਲ ਕਰ ਸਕਦੀਆਂ ਹਨ:
ਬਿਨਾਂ ਹੋਰ ਕੁਝ, ਤੁਸੀਂ ਪ੍ਰਾਜੈਕਟ ਟੈਂਪਲੇਟ, built-in dependency injection, ਅਤੇ middleware ਪਾਈਪਲਾਈਨ ਪ੍ਰਾਪਤ ਕਰਦੇ ਹੋ ਜੋ ਸਾਫ਼ ਲੇਅਰਿੰਗ (auth, logging, routing, validation) ਨੂੰ ਉਤਸ਼ਾਹਿਤ ਕਰਦਾ ਹੈ। ਨਤੀਜਾ ਇੱਕ ਆਧੁਨਿਕ ਮਹਿਸੂਸ ਕਰਨ ਵਾਲਾ ਬੈਕਐਂਡ ਫਰੇਮਵਰਕ ਹੈ ਜੋ ਕਿਸੇ Windows-ਅਕੜੇ ਇਨਫਰਾਸਟ੍ਰਕਚਰ ਤੋਂ ਬਿਨਾਂ ਹੀ ਇੰਥੇ ਡਿਪਲੌਇ ਹੁੰਦਾ ਹੈ।
ਕੁਝ ਸਮੇਂ ਲਈ, ".NET" ਦਾ ਮਤਲਬ ਇੱਕ ਉਲਝਣ ਭਰੀਆਂ ਲਾਈਨਾਂ ਸੀ: classic .NET Framework (ਜ਼ਿਆਦਾਤਰ Windows), .NET Core (ਕ੍ਰਾਸ-ਪਲੇਟਫਾਰਮ), ਅਤੇ Xamarin/Mono ਮੋਬਾਈਲ ਟੂਲਿੰਗ। ਇਹ fragmentation ਬੈਕਐਂਡ ਟੀਮਾਂ ਲਈ ਸਵਾਲ ਪੈਦਾ ਕਰਦੀ ਸੀ: "ਸਾਡੀ ਸਟੈਂਡਰਡ runtime ਕਿਹੜੀ ਹੋਵੇ?"
ਵੱਡਾ ਬਦਲਾਅ ਉਸ ਵੇਲੇ ਆਇਆ ਜਦ Microsoft ਨੇ ਵੱਖ-ਵੱਖ “.NET Core” ਬ੍ਰਾਂਡ ਤੋਂ ਸ਼ੁਰੂ ਕਰਕੇ .NET 5 ਨਾਲ ਇੱਕ ਇਕਕ੍ਰਿਤ ਲਾਈਨ ਵੱਲ ਵਧਿਆ। ਮਕਸਦ ਸਿਰਫ਼ ਨਾਮ ਨਹੀਂ ਸੀ—ਇਹ ਇਕ ਸੰਘੱਠਨ ਸੀ: ਇੱਕ ਰੰਟਾਈਮ ਫੰਡਾਮੈਂਟਲ, ਇੱਕ base class library ਦਿਸ਼ਾ, ਅਤੇ ਸਰਵਰ ਐਪਸ ਲਈ ਸਾਫ਼ ਅਪਗ੍ਰੇਡ ਰਾਹ।
ਪ੍ਰਯੋਗਿਕ ਬੈਕਐਂਡ ਸ਼ਬਦਾਂ ਵਿੱਚ, Unified .NET ਫੈਸਲੇ ਕਰਨ ਦੀ ਥਕਾਵਟ ਘਟਾਉਂਦਾ ਹੈ:\n\n- ਵੈੱਬ APIs ਅਤੇ ਸਰਵਿਸਾਂ ਲਈ ਘੱਟ ਮੁਕਾਬਲੇ ਵਾਲੇ ਪਲੇਟਫਾਰਮ\n- Windows, Linux, ਅਤੇ macOS 'ਤੇ ਇੱਕੋ ਜਿਹੇ project templates ਅਤੇ tooling\n- ਵਿਕਾਸ ਮਸ਼ੀਨਾਂ, CI ਅਤੇ ਪ੍ਰੋਡਕਸ਼ਨ ਦਰਮਿਆਨ ਕੋਡ ਬਿਨਾਂ platform-ਖਾਸ ਰੀਰਾਇਟ ਦੇ move ਹੋ ਸਕਣ ਦੀ ਸੰਭਾਵਨਾ
ਤੁਸੀਂ ਅਜੇ ਵੀ ਵੱਖ-ਵੱਖ workloads ਵਰਤ ਸਕਦੇ ਹੋ (web, worker services, containers), ਪਰ ਤੁਹਾਨੂੰ ਹਰ ਇੱਕ ਲਈ ਵੱਖ-ਵੱਖ ".NET" 'ਤੇ ਨਿਰਭਰ ਹੋਣ ਦੀ ਲੋੜ ਨਹੀਂ ਰਹਿੰਦੀ।
Unified .NET ਨੇ LTS (Long-Term Support) ਵਰਜਨਾਂ ਰਾਹੀਂ ਰਿਲੀਜ਼ ਯੋਜਨਾ ਨੂੰ ਆਸਾਨ ਬਣਾਇਆ। ਬੈਕਐਂਡ ਲਈ, LTS ਜ਼ਰੂਰੀ ਹੈ ਕਿਉਂਕਿ ਤੁਸੀਂ ਆਮ ਤੌਰ 'ਤੇ ਅਣੁਮਾਨਯੋਗ ਅਪਡੇਟ ਨਹੀਂ ਚਾਹੁੰਦੇ—ਲੰਮੀ ਸਮੇਂ ਦੀ ਸਹਾਇਤਾ ਅਤੇ ਘੱਟ ਜ਼ੋਰਦਾਰ ਅਪਗ੍ਰੇਡ ਵਿੰਡੋਜ਼ ਮੁੱਖ ਹਨ, ਖ਼ਾਸ ਕਰਕੇ ਉਹ APIs ਜਿਹੜੇ ਸਾਲਾਂ ਚੱਲਣੇ ਹਨ।
ਨਵੀਂ ਪ੍ਰੋਡਕਸ਼ਨ ਸਰਵਿਸ ਲਈ ਇੱਕ ਸੁਰੱਖਿਅਤ ਨਿਰਦੇਸ਼ ਹੈ ਕਿ ਤੁਹਾਨੂੰ ਨਵੀਂ LTS ਨੂੰ ਟਾਰਗਟ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ ਅਤੇ ਫਿਰ ਅਪਗ੍ਰੇਡਾਂ ਨੂੰ ਯੋਜਨਾਬੱਧ ਤਰੀਕੇ ਨਾਲ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ। ਜੇ ਤੁਹਾਨੂੰ ਕਿਸੇ ਖ਼ਾਸ ਨਵੀਂ ਫੀਚਰ ਜਾਂ ਪਰਫਾਰਮੈਂਸ ਸੁਧਾਰ ਦੀ ਲੋੜ ਹੈ, ਤਾਂ ਨਵੀਂ ਰਿਲੀਜ਼ ਸੋਚੋ—ਪਰ ਇਸ ਫੈਸਲੇ ਨੂੰ ਆਪਣੇ ਸੰਸਥਾ ਦੀ ਬਦਲਾਅ ਸਹਿਣਸ਼ੀਲਤਾ ਨਾਲ ਸੰਗਤ ਰੱਖੋ।
C# ਸਿਰਫ਼ ਇਸ ਲਈ ਗੰਭੀਰ ਬੈਕਐਂਡ ਵਿਕਲਪ ਨਹੀਂ ਬਣੀ ਕਿ ਇਹ Linux 'ਤੇ ਚੱਲਦੀ—ਇਸਦੀ ਰਨਟਾਈਮ ਅਤੇ ਲਾਇਬ੍ਰੇਰੀਆਂ ਨੇ ਵੀ ਸਰਵਰ ਕੰਮ ਦੇ ਹਕੀਕਤੀ ਲੋੜਾਂ ਅਨੁਸਾਰ ਕੁशलਤਾ ਵਿੱਚ ਥੋੜ੍ਹਾ-ਥੋੜ੍ਹਾ ਸੁਧਾਰ ਕੀਤਾ। ਸਾਲਾਂ ਵਿੱਚ, ਰੰਟਾਈਮ ਅਤੇ ਲਾਇਬ੍ਰੇਰੀਆਂ ਨੇ "ਬਸ ਠੀਕ" ਤੋਂ "ਪੈਦਾ ਅਤੇ ਤੇਜ਼" ਵੱਲ ਤਬਦੀਲੀ ਕੀਤੀ ਹੈ।
ਆਧੁਨਿਕ .NET ਇੱਕ ਕਾਫ਼ੀ ਬਹਤਰ JIT ਕੰਪਾਇਲਰ ਵਰਤਦਾ ਹੈ। tiered compilation (ਸ਼ੁਰੂ ਵਿੱਚ ਤੇਜ਼ startup code, ਫਿਰ hot paths ਲਈ optimize ਹੋਇਆ code) ਅਤੇ profile-guided optimizations ਵਰਗੀਆਂ ਖੂਬੀਆਂ ਨਵੇਂ ਰਿਲੀਜ਼ਾਂ ਵਿੱਚ throughput ਵਿੱਚ ਸਧਾਰਨ ਸੁਧਾਰ ਲਿਆਉਂਦੀਆਂ ਹਨ।
ਬੈਕਐਂਡ ਟੀਮਾਂ ਲਈ ਪ੍ਰਯੋਗਿਕ ਨਤੀਜਾ ਆਮ ਤੌਰ 'ਤੇ ਘੱਟ CPU spikes ਅਤੇ ਵਧੀਕ ਸਥਿਰ request handling ਹੁੰਦੀ ਹੈ—ਬਿਨਾਂ ਕਿਸੇ ਗਹਿਰੇ business logic ਨੂੰ ਨੀਵੀਂ ਭਾਸ਼ਾ ਵਿੱਚ ਲਿਖਣ ਦੇ।
Garbage collection ਨੇ ਵੀ ਵਿਕਾਸ ਕੀਤਾ। Server GC ਮੋਡ, background GC ਅਤੇ ਵੱਡੀਆਂ allocations ਨੂੰ ਬਿਹਤਰ ਹੈਂਡਲ ਕਰਨ ਵਾਲੇ ਸੁਧਾਰ ਲੰਮੇ "stop-the-world" ਰੁਕਾਵਟਾਂ ਨੂੰ ਘਟਾਉਂਦੇ ਹਨ ਅਤੇ sustained throughput ਨੂੰ ਸੁਧਾਰਦੇ ਹਨ।
ਇਸਦਾ ਮਤਲਬ: GC ਵਤੀਅਤ tail latency ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰਦੀ ਹੈ (ਉਹ ਕਦੇ-ਕਦੇ ਦੇਰ ਨਾਲ ਆਉਣ ਵਾਲੀਆਂ requests ਜਾਂਦੀਆਂ ਹਨ) ਅਤੇ ਇੰಫ੍ਰਾਸਟ੍ਰਕਚਰ ਲਾਗਤ (ਕਿੰਨੇ ਇੰਸਟਾਂਸ ਚਾਹੀਦੇ) 'ਤੇ ਪ੍ਰਭਾਵ ਪਾਉਂਦੀ ਹੈ। ਇੱਕ ਐਸਾ ਰੰਟਾਈਮ ਜੋ ਘਣ-ਘਣ ਰੁਕਾਵਟਾਂ ਤੋਂ ਬਚਦਾ ਹੈ, ਆਮ ਤੌਰ 'ਤੇ ਹੋਰ ਨਰਮ ਜਵਾਬ ਸਮਾਂ ਦੇ ਸਕਦਾ ਹੈ।
C# ਦੀ async/await ਮਾਡਲ ਆਮ ਬੈਕਐਂਡ ਕੰਮਾਂ ਲਈ ਵੱਡਾ ਫਾਇਦਾ ਹੈ: ਵੈੱਬ ਰਿਕਵੇਸਟਾਂ, ਡੇਟਾਬੇਸ ਕਾਲ, ਕੁਇਜ਼ ਅਤੇ ਹੋਰ ਨੈਟਵਰਕ I/O। I/O ਦੀ ਉਡੀਕ ਦੌਰਾਨ threads ਨੂੰ ਬਲਾਕ ਨਾ ਕਰਕੇ, ਸਰਵਿਸ ਇੱਕੋ thread pool ਨਾਲ ਵਧੇਰੇ concurrent ਕੰਮ ਸੰਭਾਲ ਸਕਦੀ ਹੈ।
ਟਰੇਡ-ਆਫ਼ ਇਹ ਹੈ ਕਿ async ਕੋਡ ਵਿਚ ਸਹੀ ਅਮਲ ਸ਼ਾਂਕਤਿਹੀਨ ਹੋਣਾ ਚਾਹੀਦਾ—ਗਲਤ ਵਰਤੋਂ overhead ਜਾਂ ਜਟਿਲਤਾ ਵਧਾ ਸਕਦੀ ਹੈ—ਪਰ I/O-ਬਧ ਰਸਤੇ 'ਤੇ ਲਗੂ ਕਰਨ 'ਤੇ ਇਹ ਆਮ ਤੌਰ 'ਤੇ ਸਕੇਲੇਬਿਲਟੀ ਸੁਧਾਰਦਾ ਹੈ ਅਤੇ ਲੇਟੈਂਸੀ ਨੂੰ ਸਥਿਰ ਰੱਖਦਾ ਹੈ।
C# ਉਸ ਵੇਲੇ ਇਕ ਕੁਦਰਤੀ ਬੈਕਐਂਡ ਚੋਣ ਬਣੀ ਜਦੋਂ ਡਿਪਲੌਇਮੈਂਟ ਦਾ ਮਤਲਬ "IIS ਉੱਤੇ Windows VM ਇੰਸਟਾਲ ਕਰੋ" ਰਹਿਣਾ ਬੰਦ ਹੋ ਗਿਆ। ਆਧੁਨਿਕ .NET ਐਪਸ ਆਮ ਤੌਰ 'ਤੇ ਹੋਰ ਸਰਵਰ ਵਰਕਲੋਡਾਂ ਵਾਂਗ ਹੀ ਪੈਕੇਜ, ਭੇਜੇ ਅਤੇ ਚਲਾਏ ਜਾਂਦੇ ਹਨ: Linux ਪ੍ਰੋਸੈਸ ਦੇ ਰੂਪ ਵਿੱਚ, ਅਕਸਰ ਕੰਟੇਨਰਾਂ ਵਿੱਚ, ਇੱਕਸਾਰ ਸੰਰਚਨਾ ਅਤੇ ਮਿਆਰੀ ਓਪਰੇਸ਼ਨਲ ਹੁਕਮਾਂ ਨਾਲ।
ASP.NET Core ਅਤੇ ਆਧੁਨਿਕ .NET ਰੰਟਾਈਮ Docker ਵਿੱਚ ਚੰਗਾ ਕੰਮ ਕਰਦੇ ਹਨ ਕਿਉਂਕਿ ਇਹ ਮਸ਼ੀਨ-ਵਾਇਡ ਇੰਸਟਾਲਾਂ 'ਤੇ ਨਿਰਭਰ ਨਹੀਂ ਹਨ। ਤੁਸੀਂ ਇਕ ਇਮੇਜ ਬਣਾਉਂਦੇ ਹੋ ਜਿਸ ਵਿੱਚ ਬਿਲਕੁਲ ਉਹੀ ਹੈ ਜੋ ਐਪ ਨੂੰ ਚਾਹੀਦਾ ਹੈ, ਫਿਰ ਉਸ ਨੂੰ ਕਿਤੇ ਵੀ ਚਲਾਉਂਦੇ ਹੋ।
ਆਮ ਪੈਟਰਨ ਇੱਕ multi-stage build ਹੈ ਜੋ ਅੰਤਮ ਇਮੇਜ ਨੂੰ ਛੋਟਾ ਰੱਖਦਾ:
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY . .
RUN dotnet publish -c Release -o /app
FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app
COPY --from=build /app .
ENV ASPNETCORE_URLS=http://+:8080
EXPOSE 8080
ENTRYPOINT ["dotnet", "MyApi.dll"]
ਛੋਟੇ ਇਮੇਜ ਤੇਜ਼ੀ ਨਾਲ ਪُل ਹੁੰਦੇ ਹਨ, ਤੇਜ਼ ਚੱਲਦੇ ਹਨ ਅਤੇ attack surface ਘੱਟ ਹੂੰਦੀ ਹੈ—ਜਦੋਂ ਤੁਸੀਂ ਸਕੇਲ ਕਰ ਰਹੇ ਹੋ ਤਾਂ ਇਹ ਪ੍ਰਜੈਕਟਿਕਲ ਫਾਇਦੇ ਹਨ।
ਜ਼ਿਆਦਾਤਰ ਕਲਾਊਡ ਪਲੇਟਫਾਰਮ ਡੀਫਾਲਟ ਤੌਰ 'ਤੇ Linux 'ਤੇ ਚੱਲਦੇ ਹਨ, ਅਤੇ .NET ਉੱਠੇ ਆਰਾਮ ਨਾਲ ਫਿੱਟ ਹੁੰਦਾ ਹੈ: Azure App Service for Linux, AWS ECS/Fargate, Google Cloud Run ਅਤੇ ਹੋਰ managed container ਸੇਵਾਵਾਂ।
ਇਸ ਦਾ ਮਤਲਬ ਲਾਗਤ ਅਤੇ ਇੱਕਸਾਰਤਾ ਹੈ: ਇੱਕੋ Linux-ਅਧਾਰਿਤ container image ਵਿਕਾਸਕਾਰ ਦੀ ਲੈਪਟਾਪ, CI ਪਾਈਪਲਾਈਨ ਅਤੇ ਪ੍ਰੋਡਕਸ਼ਨ 'ਤੇ ਚੱਲ ਸਕਦਾ ਹੈ।
ਜਦੋਂ ਟੀਮਾਂ autoscaling ਅਤੇ ਮਿਆਰੀ ਓਪਰੇਸ਼ਨ ਚਾਹੁੰਦੀਆਂ ਹਨ ਤਾਂ Kubernetes ਇੱਕ ਆਮ ਟਾਰਗਟ ਹੁੰਦਾ ਹੈ। ਤੁਹਾਨੂੰ Kubernetes-ਖ਼ਾਸ ਕੋਡ ਦੀ ਲੋੜ ਨਹੀਂ—ਤੁਹਾਨੂੰ conventions ਦੀ ਲੋੜ ਹੈ।
ਜੇ ਤੁਸੀਂ ਇਹ ਬੁਨਿਆਦੀਆਂ ਅਮਲ ਕਰੋਗੇ, ਤਾਂ C# ਸਰਵਿਸਾਂ ਕਿਸੇ ਹੋਰ ਆਧੁਨਿਕ ਬੈਕਐਂਡ ਵਾਂਗ ਹੀ ਡਿਪਲੌਇ ਅਤੇ ਚਲਾਈਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ—ਬਹੁਤੇ ਕਲਾਊਡਾਂ ਵਿੱਚ ਪੋਰਟੇਬਿਲ ਅਤੇ ਆਟੋਮੇਟੇਬਲ।
C# ਇਕ ਪ੍ਰਾਇਕਟਿਕ ਚੋਣ ਬਣਨ ਦਾ ਵੱਡਾ ਕਾਰਨ ਸਿਰਫ਼ ਰੰਟਾਈਮ ਨਹੀਂ—ਇਹ ਰੋਜ਼ਾਨਾ ਦੇ ਵਿਕਾਸਕ ਅਨੁਭਵ ਵੀ ਹੈ। ਜਦੋ ਟੂਲ ਇਕਸਾਰ ਅਤੇ automation-ਮਿਤ੍ਰ ਹੁੰਦੇ ਹਨ, ਟੀਮਾਂ ਆਪਣਾ ਸਮਾਂ ਵਾਤਾਵਰਨ ਨਾਲ ਲੜਨ ਵਿੱਚ ਨਹੀਂ ਲਗਾਉਂਦੀਆਂ, ਸਗੋਂ ਫੀਚਰ ਰਿਲੀਜ਼ ਕਰਨ ਵਿੱਚ ਲਗਾਉਂਦੀਆਂ ਹਨ।
dotnet CLI ਨਾਲdotnet CLI ਨੇ ਆਮ ਟਾਸਕਾਂ ਨੂੰ ਹਰ ਓਐਸ 'ਤੇ ਪੇਸ਼ਗੀਤੀ ਬਣਾਇਆ: ਪ੍ਰਾਜੈਕਟ ਬਣਾਓ, dependencies ਰੀਸਟੋਰ ਕਰੋ, ਟੈਸਟ ਚਲਾਓ, builds ਪਬਲਿਸ਼ ਕਰੋ ਅਤੇ deployment-ready ਆਰਟੀਫੈਕਟ ਜਨਰੇਟ ਕਰੋ—ਸਾਰੇ ਇਕੋ commands ਨਾਲ।
ਇਹ ਇੱਕਸਾਰਤਾ onboarding ਅਤੇ CI/CD ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਨਵਾਂ ਵਿਕਾਸਕਾਰ ਰਿਪੋ ਕਲੋਨ ਕਰਕੇ ਉਹੀ ਸਕ੍ਰਿਪਟ ਚਲਾ ਸਕਦਾ ਹੈ ਜੋ ਤੁਸੀਂ build ਸਰਵਰ 'ਤੇ ਚਲਾਉਂਦੇ ਹੋ—ਕੋਈ Windows-ਅਕਸklusਿਵ ਸੈਟਅਪ ਦੀ ਲੋੜ ਨਹੀਂ।
C# ਵਿਕਾਸ ਹੁਣ ਇੱਕ ਹੀ ਟੂਲ 'ਤੇ ਅਧਾਰਿਤ ਨਹੀਂ ਰਹਿ ਗਿਆ:
ਫਾਇਦਾ ਇਹ ਹੈ ਕਿ ਟੀਮ ਇੱਕ ਵਿਲੱਖਣ environment 'ਤੇ standardize ਕਰ ਸਕਦੀ ਹੈ ਜਾਂ ਵਿਕਾਸਕਾਰਾਂ ਨੂੰ ਉਹ ਚੁਣਨ ਦਿੰਦੀ ਹੈ ਜੋ ਉਨ੍ਹਾਂ ਲਈ ਆਰਾਮਦਾਇਕ ਹੋਵੇ—ਬਿਨਾਂ build ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਵਿਖੰਡਿਤ ਕੀਤੇ।
ਆਧੁਨਿਕ .NET ਟੂਲਿੰਗ macOS ਅਤੇ Linux 'ਤੇ ਲੋਕਲ ਡੀਬੱਗਿੰਗ ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਸਹਾਇਤਾ ਕਰਦੀ ਹੈ ਕਿ ਇਹ ਨਾਰਮ ਮਹਿਸੂਸ ਹੁੰਦਾ ਹੈ: API ਚਲਾਓ, ਡੀਬੱਗਰ ਜੁੜੋ, breakpoints ਲਗਾਓ, ਵੇਰੀਏਬਲ ਵੇਖੋ ਅਤੇ ਕੋਡ ਵਿੱਚ قدم-ਕਦਮ ਕਰਕੇ ਜਾਓ। ਇਹ ਪੁਰਾਣੀ ਰੁਕਾਵਟ ਦੂਰ ਕਰਦਾ ਹੈ ਜਿੱਥੇ "ਅਸਲ ਡੀਬੱਗਿੰਗ" ਸਿਰਫ਼ Windows 'ਤੇ ਹੁੰਦੀ ਸੀ।
ਲੋਕਲ parity ਵੀ ਬਿਹਤਰ ਹੁੰਦੀ ਹੈ ਜਦ ਤੁਸੀਂ ਆਪਣੀਆਂ ਸਰਵਿਸਾਂ ਨੂੰ ਕੰਟੇਨਰਾਂ ਵਿੱਚ ਚਲਾਉਂਦੇ ਹੋ: ਤੁਸੀਂ ਆਪਣੇ C# ਬੈਕਐਂਡ ਨੂੰ ਡੀਬੱਗ ਕਰ ਸਕਦੇ ਹੋ ਜਦ ਇਹ ਉਹੀ Postgres/Redis ਆਦਿ ਵਰਜ਼ਨਾਂ ਨਾਲ ਗੱਲ ਕਰ ਰਿਹਾ ਹੋ ਜਿਵੇਂ ਪ੍ਰੋਡਕਸ਼ਨ ਵਿੱਚ ਹੁੰਦੇ ਹਨ।
NuGet .NET ਟੀਮਾਂ ਲਈ ਇਕ ਵੱਡਾ ਵੇਹੜਾ ਹੈ। ਲਾਇਬ੍ਰੇਰੀਆਂ ਨੂੰ ਖਿੱਚਣਾ, ਵਰਜਨਾਂ ਨੂੰ ਲੌਕ ਕਰਨਾ ਅਤੇ dependencies ਅਪਡੇਟ ਕਰਨਾ automation ਦਾ ਹਿੱਸਾ ਬਣ ਸਕਦਾ ਹੈ।
ਸਭ ਤੋਂ ਮਹੱਤਵਪੂਰਨ ਗੱਲ ਇਹ ਹੈ ਕਿ dependency management ਆਟੋਮੇਸ਼ਨ ਵਿੱਚ ਅਸਾਨ ਹੈ: package restore ਅਤੇ vulnerability checks ਹਰ build ਦਾ ਹਿੱਸਾ ਬਣ ਸਕਦੇ ਹਨ।
ਇੱਕੋ-ਓ ਨੈੱਟ-ਮੈਨੇਜਡ ਪੈਕੇਜ ਤੋਂ ਬਾਹਰ ਸਮੁਦਾਇਕ ਵਿਕਲਪਾਂ ਵੀ ਵੱਧੇ ਹਨ—logging, configuration, background jobs, API documentation, testing ਆਦਿ ਲਈ ਮਜ਼ਬੂਤ ਵਿਕਲਪ ਹਨ।
ਟੈਂਪਲੇਟ ਅਤੇ starter projects ਸਟਾਰਟਅਪ ਵਿੱਚ ਸਮਾਂ ਬਚਾ ਸਕਦੇ ਹਨ, ਪਰ ਉਹ ਜਾਦੂ ਨਹੀਂ। ਚੰਗੇ ਵਾਲੇ plumbing ਬਚਾਉਂਦੇ ਹਨ ਜਦੋਂ ਕਿ ਟੀਮ ਨੂੰ ਅਜੇ ਵੀ ਇੱਕ ਸਪਸ਼ਟ ਅਤੇ maintainable ਆਰਕੀਟੈਕਚਰ ਚਾਹੀਦੀ ਹੋਵੇ।
C# ਹੁਣ "Windows ਦੀ ਬੂੰਦ" ਨਹੀਂ ਰਹੀ। ਕਈ ਬੈਕਐਂਡ ਪ੍ਰੋਜੈਕਟਾਂ ਲਈ, ਇਹ ਇੱਕ ਪ੍ਰਯੋਗਿਕ ਚੋਣ ਹੈ ਜੋ ਚੰਗੀ ਪਰਫਾਰਮੈਂਸ, ਪੱਕੀਆਂ ਲਾਇਬ੍ਰੇਰੀਆਂ ਅਤੇ ਇੱਕ ਉਤਪਾਦਕ ਵਿਕਾਸ ਅਨੁਭਵ ਜੋੜਦੀ ਹੈ। ਫਿਰ ਵੀ, ਕੁਝ ਸਥਿਤੀਆਂ ਵਿੱਚ ਇਹ ਸਭ ਤੋਂ ਸਧਾਰਨ ਟੂਲ ਨਹੀਂ ਹੋ ਸਕਦੀ।
C# ਅਕਸਰ ਚਮਕਦਾ ਹੈ ਜਦੋਂ ਤੁਸੀਂ ਉਹਨਾਂ ਸਿਸਟਮਾਂ ਨੂੰ ਬਨਾ ਰਹੇ ਹੋ ਜੋ ਸਾਫ਼ ਸੰਰਚਨਾ, ਲੰਮੀ ਦਰਖ਼ਾਸਤ ਤੇ ਸਹਾਇਤਾ ਲੋੜੀਂਦੇ ਹਨ:
C# "ਬਹੁਤ ਜ਼ਿਆਦਾ" ਹੋ ਸਕਦਾ ਹੈ ਜਦ ਮਕਸਦ ਬਹੁਤ ਵੱਧ ਸਰਲਤਾ ਜਾਂ ਬਹੁਤ ਛੋਟੇ ਓਪਰੇਸ਼ਨਲ ਫੁਟਪ੍ਰਿੰਟ ਹਨ:
C# ਚੁਣਨਾ ਅਕਸਰ ਲੋਕਾਂ ਬਾਰੇ ਹੁੰਦਾ ਹੈ ਜਿੰਨਾ ਬਾਰੇ ਟੈਕ: ਮੌਜੂਦਾ C#/.NET ਸਕਿੱਲ, ਸਥਾਨਕ hiring ਬਜ਼ਾਰ, ਅਤੇ ਕੀ ਤੁਸੀਂ ਉਮੀਦ ਕਰਦੇ ਹੋ ਕਿ ਕੋਡਬੇਸ ਸਾਲਾਂ ਤੱਕ ਜੀਉ
ਇੱਕ ਪ੍ਰਯੋਗਿਕ ਤਰੀਕਾ ਜੋ ਜੋਖਮ ਘਟਾਉਂਦੀ ਹੈ, ਉਹ ਹੈ ਇਕੋ ਛੋਟੀ ਸਰਵਿਸ ਨੂੰ ਦੋ ਸਟੈਕਾਂ ਵਿੱਚ ਪ੍ਰੋਟੋਟਾਈਪ ਕਰਕੇ ਵਿਕਾਸਕ ਤੇਜ਼ੀ, ਡਿਪਲੌਇ ਤਕਲੀਫ਼ ਅਤੇ ਓਪਰੇਸ਼ਨਲ ਸਪਸ਼ਟਤਾ ਦੀ ਤੁਲਨਾ ਕਰਨਾ। ਉਦਾਹਰਨ ਲਈ, ਕੁਝ ਟੀਮਾਂ Koder.ai ਵਰਤਦੀਆਂ ਹਨ ਤਾੰ ਜੋ ਤੇਜ਼ੀ ਨਾਲ ਇੱਕ ਪ੍ਰੋਡਕਸ਼ਨ-ਆਕਾਰ ਬੇਸਲਾਈਨ (React frontend, Go backend, PostgreSQL, ਵਿਕਲਪਿਕ Flutter mobile) ਜਨਰੇਟ ਕਰ ਸਕਣ, ਸੋурс ਕੋਡ ਨਿਰਯਾਤ ਕਰ ਸਕਣ, ਅਤੇ ਫਿਰ ASP.NET Core ਸਮਾਨ ਤੌਰ 'ਤੇ ਉਸ workflow ਦੀ ਤੁਲਨਾ ਕਰ ਸਕਣ। ਜੇ ਤੁਸੀਂ ਆਖ਼ਰਕਾਰ .NET ਚੁਣਦੇ ਹੋ, ਇੱਕ ਤੇਜ਼ "ਤੁਲਨਾਤਮਕ ਬਣਾਵ" ਵਿਚ ਤੁਹਾਨੂੰ ਫੈਸਲਿਆਂ ਨੂੰ ਸਪਸ਼ਟ ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਮਿਲ ਸਕਦੀ ਹੈ।
C# ਇੱਕ ਕ੍ਰਾਸ-ਪਲੇਟਫਾਰਮ ਬੈਕਐਂਡ ਕਹਾਣੀ ਨਹੀਂ ਬਣੀ ਰਾਤੋਂ-ਰਾਤ—ਇਹ ਕਈ ਮੰਚਾਂ ਰਾਹੀਂ ਕਮਾ ਕੇ ਮਿਲੀ ਜੋ "Windows-only" ਧਾਰਣਾਵਾਂ ਨੂੰ ਹਟਾ ਕੇ Linux ਡਿਪਲੌਇਮੈਂਟ ਨੂੰ ਸਧਾਰਨ ਬਣਾਉਂਦੀਆਂ ਹਨ।
ਬਦਲਾਅ ਕਈ ਚਰਣਾਂ ਵਿੱਚ ਹੋਇਆ:
ਜੇ ਤੁਸੀਂ ਬੈਕਐਂਡ ਕੰਮ ਲਈ C# ਦਾ ਮੁਲਾਂਕਣ ਕਰ ਰਹੇ ਹੋ, ਤਾਂ ਸਭ ਤੋਂ ਸੀਧਾ ਰਸਤਾ ਇਹ ਹੈ:
ਜੇ ਤੁਸੀਂ ਪੁਰਾਣੀਆਂ .NET Framework ਐਪਸ ਤੋਂ ਆ ਰਹੇ ਹੋ, ਤਾਂ modernization ਨੂੰ ਢੰਗ ਨਾਲ ਫੇਜ਼ ਕੀਤੀ ਗਤੀ ਨਾਲ ਕਰੋ: ਨਵੇਂ ਸਰਵਿਸਾਂ ਨੂੰ API ਪਿੱਛੇ ਰੱਖੋ, ਲਾਇਬ੍ਰੇਰੀਆਂ ਨੂੰ ਅਲੱਗ ਕਰੋ ਅਤੇ ਜਿੱਥੇ ਮੱਕੂਰ ਹੈ ਉਥੇ workloads ਨੂੰ ਆਧੁਨਿਕ .NET 'ਤੇ ਲਿਜਾਓ।
ਜੇ ਤੁਸੀਂ ਸ਼ੁਰੂਆਤੀ ਇਟਰੇਸ਼ਨਾਂ 'ਤੇ ਤੇਜ਼ੀ ਨਾਲ ਅੱਗੇ ਵਧਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ Koder.ai ਵਰਗੇ ਟੂਲ ਤੁਹਾਨੂੰ ਚੈਟ ਰਾਹੀਂ ਕੰਮ ਕਰਨਯੋਗ ਐਪ ਤੇਜ਼ੀ ਨਾਲ ਪੈਦਾ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰ ਸਕਦੇ ਹਨ, snapshot ਅਤੇ rollback ਦੀ ਸਹੂਲਤ ਦੇ ਸਕਦੇ ਹਨ, ਅਤੇ ਜਦ ਤੱਕ ਤੁਸੀਂ ਆਪਣੀ ਮਿਆਰੀ ਇੰਜੀਨੀਅਰਿੰਗ ਵਰਕਫਲੋ ਵਿੱਚ ਲਿਆਉਣਾ ਚਾਹੁੰਦੇ ਹੋ ਤੁਹਾਡਾ ਸੋurs ਕੋਡ ਨਿਰਯਾਤ ਕਰ ਸਕਦੇ ਹਨ।
ਹੋਰ ਗਾਈਡਾਂ ਅਤੇ ਪ੍ਰਯੋਗਿਕ ਉਦਾਹਰਨਾਂ ਲਈ ਬਲੌਗ ਵੇਖੋ। ਜੇ ਤੁਸੀਂ ਪ੍ਰੋਡਕਸ਼ਨ ਡਿਪਲੌਇਮੈਂਟ ਲਈ ਹੋਸਟਿੰਗ ਜਾਂ ਸਹਾਇਤਾ ਵਿਕਲਪਾਂ ਦੀ ਤੁਲਨਾ ਕਰ ਰਹੇ ਹੋ, ਤਾਂ ਪ੍ਰਾਈਸਿੰਗ ਵੇਖੋ।
ਨਤੀਜਾ: C# ਹੁਣ ਨਾਂ ਤਾਂ ਤਕਨੀਕੀ ਨਿਸ਼ ਹੈ ਅਤੇ ਨਾਂ ਹੀ ਸਿਰਫ Windows-ਬੱਧ ਚੋਣ—ਇਹ ਇੱਕ ਆਮ ਬੈਕਐਂਡ ਵਿਕਲਪ ਹੈ ਜੋ ਆਧੁਨਿਕ Linux ਸਰਵਰਾਂ, ਕੰਟੇਨਰਾਂ ਅਤੇ ਕਲਾਊਡ ਡਿਪਲੌਇਮੈਂਟ ਵਰਕਫਲੋਜ਼ ਨਾਲ ਫਿੱਟ ਹੁੰਦਾ ਹੈ।
C# ਖੁਦ ਇੱਕ ਆਮ-ਉਦੇਸ਼ ਭਾਸ਼ਾ ਰਹੀ ਹੈ, ਪਰ ਇਹ ਮੁੱਖ ਤੌਰ 'ਤੇ .NET Framework ਨਾਲ ਜੁੜੀ ਹੋਈ ਸੀ, ਜੋ ਅਮਲ ਵਿੱਚ Windows-ਪਹਲੂ ਸੀ.
ਜ਼ਿਆਦਾਤਰ ਪ੍ਰੋਡਕਸ਼ਨ “C# ਬੈਕਐਂਡ” ਡਿਪਲੌਇਮੈਂਟਸ ਵਿੱਚ ਇਹ ਮੁੰਨਹਾ ਮੰਨਿਆ ਜਾਂਦਾ ਸੀ ਕਿ Windows Server + IIS + Windows-ਇੰਟੀਗਰੇਟਿਡ APIs ਵਰਤੇ ਜਾਣਗੇ, ਇਸ ਲਈ ਅਮਲੀ ਰਸਤਾ Windows ਨਾਲ ਜੁੜਿਆ ਰਹਿੰਦਾ ਸੀ ਭਾਵੇਂ ਭਾਸ਼ਾ ਸੈਧਾਂਤਿਕ ਤੌਰ 'ਤੇ ਸੀਮਿਤ ਨਾ ਹੋਵੇ।
ਬੈਕਐਂਡ ਕੰਮ ਲਈ, “ਕ੍ਰਾਸ-ਪਲੇਟਫਾਰਮ” ਆਮ ਤੌਰ 'ਤੇ ਇਹ ਮਤਲਬ ਰਖਦਾ ਹੈ:
ਇਹ ਸਿਰਫ਼ "ਚੱਲਦਾ ਹੈ" ਤੋਂ ਵੱਧ ਹੈ—ਇਹ ਇਸ ਬਾਰੇ ਹੈ ਕਿ Windows ਤੋਂ ਬਾਹਰ ਚਲਾਉਣਾ ਇੱਕ ਪਹਿਲ-ਸ਼੍ਰੇਣੀ ਅਨੁਭਵ ਹੈ।
Mono ਇੱਕ ਸ਼ੁਰੂਆਤੀ, open-source ਇੰਪਲੀਮੇਨਟੇਸ਼ਨ ਸੀ ਜਿਸ ਨੇ ਸਾਬਤ ਕੀਤਾ ਕਿ C# Windows ਤੋਂ ਬਾਹਰ ਵੀ ਚੱਲ ਸਕਦੀ ਹੈ।
ਇਸ ਨਾਲ Linux/macOS ਤੇ ਕੁਝ .NET-ਸਟਾਈਲ ਐਪ ਚਲ ਸਕੀਆਂ ਅਤੇ Unity ਵਰਗੀਆਂ ਪਲੇਟਫਾਰਮਾਂ ਰਾਹੀਂ C# ਬਹੁਤ ਸਾਰੇ ਵਿਕਾਸਕਾਰਾਂ ਤੱਕ ਪਹੁੰਚ ਗਿਆ.
ਟਰੇਡ-ਆਫ਼ ਇਹ ਸੀ ਕਿ ਮਿਲਾਪ ਪੂਰਾ ਨਹੀਂ ਸੀ: ਕੁਝ APIs ਵਿੱਚ ਅੰਤਰ ਹੋ ਸਕਦਾ ਸੀ ਅਤੇ ecosystem ਕਿਸੇ ਹੱਦ ਤੱਕ fragmented ਰਹੀ।
ਇਸ ਨੇ .NET ਨੂੰ ਉਸ ਥਾਂ ਲਿਆ ਗਿਆ ਜਿੱਥੇ ਸਰਵਰ ਅਸਲ ਵਿੱਚ ਚੱਲ ਰਹੇ ਸਨ:
Open source ਹੋਣ ਨਾਲ ਭਰੋਸਾ ਵਧਿਆ ਕਿਉਂਕਿ ਡਿਜ਼ਾਈਨ ਵਿਚਾਰ, issue ਅਤੇ fixes ਪਬਲਿਕ ਤੌਰ 'ਤੇ ਵੇਖੇ ਜਾ ਸਕਦੇ ਸਨ।
.NET Core ਨੇ ਉਹ ਬਦਲਾਅ ਲਿਆ ਜੋ .NET Framework ਨੂੰ Windows-ਕੇਂਦਰਿਤ ਮਾਡਲ ਦਿਖਾਉਂਦਾ ਸੀ—ਇਸ ਨੇ ਰਨਟਾਈਮ ਨੂੰ ਨਵੀਂ ਤਰ੍ਹਾਂ ਬਣਾਇਆ ਜੋ ਆਧੁਨਿਕ ਸਰਵਰ ਵਰਕ ਲਈ ਸੂਟ ਕਰਦਾ ਹੈ।
ਮੁੱਖ ਪ੍ਰੈਕਟਿਕਲ ਬਦਲਾਅ:
ASP.NET Core ਨੇ ਪੁਰਾਣੀ Windows-ਨਿਗਦੇ ਹੋਏ ਵੈੱਬ ਸਟੈਕ (System.Web/IIS ਦੀਆਂ ਧਾਰਨਾਵਾਂ) ਦੀ ਜਗ੍ਹਾ ਇਕ ਆਧੁਨਿਕ, ਮੋਡੀਊਲ ਫਰੇਮਵਰਕ ਦਿੱਤਾ।
ਆਮ ਤੌਰ 'ਤੇ ਇਹ ਚੱਲਦਾ ਹੈ:
ਇਹ ਮਾਡਲ Linux ਸਰਵਰ ਅਤੇ ਕੰਟੇਨਰ ਸਾਹਮਣੇ ਸਾਫ਼ ਮਿਲਦਾ ਹੈ।
Unified .NET (ਆਮ ਤੌਰ 'ਤੇ .NET 5 ਤੋਂ ਬਾਅਦ) ਨੇ ਵੱਖ-ਵੱਖ ".NET" ਲਾਈਨਾਂ (Framework, Core, Xamarin/Mono) ਦੀ ਭਿੜ ਭੰਗ ਕਰਕੇ ਇਕ ਸਾਫ਼ ਰਾਹ ਦਿੱਤਾ।
ਫਾਇਦੇ:
ਆਧੁਨਿਕ .NET ਨੇ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਤਰੀਕੇ ਨਾਲ ਕਾਰਗਰਤਾ ਸੁਧਾਰੀ ਹੈ:
ਨਤੀਜਾ: ਬਹੁਤ ਵਾਰ ਬਿਹਤਰ throughput ਅਤੇ ਹੋਰ ਪੈਦਾ ਹੋਣ ਵਾਲੀਆਂ ਟੇਲ latency ਵਿੱਚ ਕੁਝ ਹੀ ਸਮੇਂ ਵਿੱਚ ਸੁਧਾਰ ਮਿਲਦਾ ਹੈ।
ਆਮ ਵਰਕਫਲੋ ਅਜਿਹਾ ਹੁੰਦਾ ਹੈ:
dotnet publish ਨਾਲ ਬਿਲਡ ਅਤੇ ਪਬਲਿਸ਼ਪੋਰਟੇਬਿਲਟੀ ਲਈ ਆਮ ਬੁਨਿਆਦੀ ਨੁਕਤੇ:
C# ਅਕਸਰ ਚੰਗਾ ਚੋਣ ਹੈ ਜਦੋਂ ਤੁਸੀਂ ਲੰਬੇ ਸਮੇਂ ਲਈ ਰੱਖਣਯੋਗ ਕੋਡਬੇਸ, ਮਜ਼ਬੂਤ ਟੂਲਿੰਗ ਅਤੇ ਟਾਈਪ ਸੁਰੱਖਿਆ ਚਾਹੁੰਦੇ ਹੋ।
ਉਚਿਤ ਪਰਿਸ਼ਥਿਤੀਆਂ:
ਕਮਜ਼ੋਰ ਮੈਚ ਜੇ: