Tags:
Node Thumbnail

ทิศทางของไมโครซอฟท์เรื่อง .NET ชัดเจนว่าต้องการย้ายจาก .NET Framework ไปสู่ .NET Core แต่การเปลี่ยนผ่านก็ยังไม่ง่ายนัก เพราะ .NET Core ยังขาดฟีเจอร์หลายอย่างที่เคยมีใน .NET Framework (เช่น การซัพพอร์ต WPF/WinForms ที่จะมาใน .NET Core 3.0)

อย่างไรก็ตาม สถานะของ .NET Core 2.x ในปัจจุบัน ถือว่าพร้อมแล้วสำหรับงานฝั่งเซิร์ฟเวอร์ ทำให้ทีมงาน Bing.com เวอร์ชันเว็บ ที่สร้างขึ้นตั้งแต่สมัย .NET Framework ตัดสินใจย้ายงานมารันบน .NET Core 2.1 ได้สำเร็จด้วยดีในเดือนมิถุยายนที่ผ่านมา

No Description

ทีมงาน Bing.com บอกว่าอยากย้ายมาสู่ .NET Core นานแล้ว แต่ต้องรอให้ .NET Core พร้อมก่อนในเวอร์ชัน 2.x เพื่อให้มีฟีเจอร์ทัดเทียมกันกับ .NET Framework เดิม ทำให้ลดภาระดัดแปลงแก้ไขโค้ดของ Bing.com ลงจากเดิมมาก

ผลจากการย้ายมาสู่ .NET Core 2.1 ที่มีประสิทธิภาพสูงกว่าในระดับรันไทม์ ทำให้ Bing.com มีประสิทธิภาพสูงตามไปด้วย โดยเฉพาะ latency ที่ลดลงได้ถึง 34% หลังย้ายระบบ (ดูกราฟประกอบ)

No Description

ข้อดีอื่นๆ ของการใช้ .NET Core เหนือ .NET Framework คือ

  • สามารถทำ pre-compile รอไว้ตั้งแต่ก่อนดีพลอย ทำให้ลดระยะเวลาและทรัพยากรของการทำ JIT compile เมื่อนำไปรันงานจริงบนเครื่อง production
  • สามารถฝังรันไทม์ลงในแอพพลิเคชัน ทำให้เปลี่ยนแปลงแก้ไขเวอร์ชันของรันไทม์ได้ง่าย การดีพลอยและการทำ CI/CD จึงง่ายขึ้น ผลคือได้ใช้รันไทม์เวอร์ชันที่อัพเดตล่าสุดได้บ่อยขึ้น ทีม Bing สามารถอัพเดตรันไทม์ตามหลังทีม .NET เพียง 2 วันเท่านั้น

ที่มา - .NET Blog

Get latest news from Blognone

Comments

By: syootakarn
iPhoneWindows PhoneAndroidBlackberry
on 24 August 2018 - 08:18 #1067190
syootakarn's picture

.Net Framework มันซับซ้อนเกิน พอเปลี่ยนไปใช่ .Net Core มันเลยเร็ว
รอซักพักมันก็คงกลับมาช้าอย่างเดิม

By: Hadakung
iPhoneWindows PhoneAndroidWindows
on 24 August 2018 - 08:55 #1067204 Reply to:1067190

แต่กว่ามันจะช้าก็คงอีกนานครับเพราะ .Net core มันไม่ได้เร็วเพราะตัวเล็กกว่าอย่างเดัยวครับ มันมาในช่วงที่ฟีเจอร์ใหม่ๆเพิ่มขึ้น ทำให้ดึงประสิทธิภาพการประมวลผลที่ดีกว่าออกมาได้ครับ ถ้าได้ลองใช้จะเห็นชัดเจนครับว่าฟังก์ชั่นแต่ละอย่างแยกเป็นโมดูลมากขึ้นถ้าไม่ใช้ก็ไม่ต้องโหลด ถ้าเริ่มสร้างโปรเจคฝหม่ๆจะเห็นเลยว่าระบบแทบไม่มีอะไรเลย แล้วจะใช้อะไรค่อยเรียกมา ผิดกับ .NET framwork ที่ขนมาหมดทั้งที่ไม่ได้ใช้เลย

By: K-O-N-G on 24 August 2018 - 09:30 #1067210 Reply to:1067190

.Net Core มันเลยเร็วขึ้นไม่ใช่เพราะว่ามันเล็กลงนะครับ แต่เกิดจากการ Optimization ครับ https://blogs.msdn.microsoft.com/dotnet/2017/06/07/performance-improvements-in-net-core/ และ technic ใหม่ๆ เช่น
span ที่ช่วยลดการ allocate memory และอื่นอีกมากมาย และเร็วขึ้นจนติด top performance ไปแล้วครับ https://www.techempower.com/benchmarks/#section=data-r16&hw=ph&test=plaintext
และมันก็ไม่มีทางช้าลงแน่นอน ในทางตรงข้ามกันจะเร็วขึ้นเรื่อยๆจาก https://blogs.msdn.microsoft.com/dotnet/2018/08/02/tiered-compilation-preview-in-net-core-2-1/
ลองหาข้อมูลดูก่อนนะครับ

By: syootakarn
iPhoneWindows PhoneAndroidBlackberry
on 24 August 2018 - 10:06 #1067220 Reply to:1067210
syootakarn's picture

ขอบคุณมากทั้งสองท่าน

By: overbid
ContributorAndroidRed HatUbuntu
on 24 August 2018 - 09:33 #1067212

ทีมเทพ Devops

2 วัน ตัวเลขระดับตำนาน

By: adente
ContributorSUSESymbianWindows
on 24 August 2018 - 10:34 #1067227 Reply to:1067212
adente's picture

ไม่พูดเยอะ ทำให้เด็กมันดู ผมสาย nodejs ยังหวั่นไหวอยากกลับไปทำ .net เลย

By: K-O-N-G on 24 August 2018 - 15:24 #1067263 Reply to:1067212

.Net Core มันมี feature Self Contained ประมาณ embed framework ทั้งตัวเข้าไปกับ code ของเราเลย ครับเครื่อง Production ไม่ต้องลงอะไรเลย เอา program ไปวางแล้ว run ได้เลย ไม่ต้องมาดูว่าติดตั้ง runtime version ที่เราใช้แล้วหรือยัง ถ้าจะ update version ก็แค่ระบุ runtime ใหม่แล้วสั่ง publich จบเลย แต่เข้าใจว่า bing น่าจะ container แล้ว

By: akira on 24 August 2018 - 10:34 #1067226

เร็วขึ้นจริง ทำ Production ให้ลูกค้าตั้งแต่ 1.0 ลูกค้าว้าวเลย ลำบากอยู่อย่างเดียวตอนต่อ Oracle ด้วย EF พลิกหาทั่วโลกกว่าจะ Build ผ่าน ณ เมื่อ ปีครึ่งที่ผ่านมา ตอนแรกจะเอา SQL Server ก็หวาน ส่งมอบเปลี่ยนเป็น Oracle รัองจ๊ากกันเลยทีเดียว ดีที่เขียนด้วย EF หาวิธี Build อย่างเดียวก็เหนื่อยแล้ว ณ ช่วงเวลานั้น

By: akira on 24 August 2018 - 10:43 #1067228

แต่ถ้าเทียบ Node.js ผมว่าดีคนละอย่าง .Net Core เหมาะกับงาน Enterprise ที่ต้องการประสิทธิภาพเทียบเท่า Node แต่ก็อยากได้เรื่องการการันตีเรื่องมาตรฐานต่างๆ จากองค์กรผู้ผลิต งบไม่เกี่ยง ส่วน .Node.js เหมาะกับงาน Consumer ที่ต้องใช้เครื่องเล็กๆ เยอะๆ ช่วยกันประมวลผลซึ่งผมหา Infra Node ได้ในราคาที่ถูกกว่า จากคนที่เขียนทั้ง 2 อย่างในฝั่ง Server แบบ WebAPI

By: syootakarn
iPhoneWindows PhoneAndroidBlackberry
on 24 August 2018 - 14:31 #1067260 Reply to:1067228
syootakarn's picture
  • อย่าลืม PHP กันนะครับ งานส่วนใหญ่ผมเป็น Intranet ครับ
    เลยใช้ PHP + Phalcon Extension + jQuery + JSON
    โดยรวมยังพอไหวครับ และ User ไม่เยอะมาก อีกอย่างเอกสารบน
    อินเตอร์เน็ตก็เพียบ
By: K-O-N-G on 24 August 2018 - 14:33 #1067262 Reply to:1067228

Performance ของ .Net Core ตอนนี้แซง Node.js ไปไกลแล้วครับ อ้างอิงจาก TechEmpower รอบล่าสุดนี่เร็วกว่าประมาณ 9 เท่า https://www.techempower.com/benchmarks/#section=data-r16&hw=ph&test=plaintext

By: mr_tawan
ContributoriPhoneAndroidWindows
on 24 August 2018 - 17:33 #1067284 Reply to:1067262
mr_tawan's picture

ผมอ่านแล้วก็แปลกใจ คือถ้ามันช้ากว่า Node นี่ผมว่ามันแย่แล้วนะ คือ Node มันก็เร็วแหละ แต่ .Net มันเป็น VM กึ่ง ๆ Native แล้วนะ มันเร็วกว่า Java อีกในหลาย ๆ กรณี

แต่เอ้อ Java เร้วส์ นี่นะ ...


  • 9tawan.net บล็อกส่วนตัวฮับ
By: K-O-N-G on 25 August 2018 - 07:28 #1067336 Reply to:1067284

คนส่วนใหญ่จะเข้าใจว่ามันช้ากว่า node เพราะสมัย .net framework web stack มันช้ากว่าชาวบ้านเค้าครับ
ถ้าวัดกันที่ clr นี่ยังไงก็เร็วกว่า และในตัว coreclr vs jvm ผลทดสอบล่าสุดคลต้องบอกว่าเร็วกว่า Java แล้วครับ https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/csharp.html

By: Architec
ContributorWindows PhoneAndroidWindows
on 24 August 2018 - 20:33 #1067304

[นอกเรื่อง]NET Core มีวิธีแก้ไปรันไป (On the fly) โดยที่ไม่ต้อง start/stop ใหม่ไหมครับ

By: K-O-N-G on 25 August 2018 - 07:24 #1067337 Reply to:1067304

มันมี dotnet watch ให้ใช้ ครับลองหาข้อมูลดูนะครับ