[C#] Use-Case การใช้งาน Named Pipe เชื่อม VB6 กับ .NET

จาก blog 2 ตอนก่อนหน้า เพื่อนๆ น่าจะเข้าใจ

ใน Blog นีัขอแชร์ Use-Case จริง ที่ใช้งานครับ เพราะคงเอา Code มาแปะทั้งหมดไม่ได้ครับ เผื่อจะเป็น Idea ให้กับคนที่ต้องพัฒนาระบบงานเก่าๆ เอาไปใช้ได้ครับ โดยการพัฒนาของผมจะเป็น 2 Step ซึ่งมีอธิบายต่อไปครับ

จุดที่ 1 @Client VB6 <-> .NET

  • เอา .NET มาช่วยลดการพัฒนาระบบ โดยใช้ VB6 และนำเอา Named Pipe มาเป็น Protocol ในการสื่อสารระหว่าง VB6 กับ .NET ครับ และมีการวาง Core Logic ซึ่งประกอบไปด้วย Business Logic (Service) / Data Access / DTO ให้สามารถ Reuse ได้)
  • เมื่อทำ Step นี้เสร็จ เราจะได้ Business Logic บางส่วนบน .NET แล้ว แต่จะติดปัญหาอยู่ เพราะ มันจะไม่สามารถทำงานที่ Long Task ได้ เพราะ Pipe เอามีข้อจำกัด เรื่อง Timeout ตรงนี้ ผมแก้ปัญหา
    • เมื่อมีการส่งงานแล้ว ให้ Pipe Server ส่ง KEY ID กลับไปก่อน ส่วนงานที่ใช้เวลา Execute นาน ยกให้เป้นภาระของ .NET ไป
    • เมื่องานส่วน .NET เสร็จสิ้นให้ Pipe ส่ง KEY ID กลับไปของ VB6 ให้มาเอาของที่ทำเสร็จแล้ว อาจจะทดไว้ใน Database เอาไปใช้งานต่อได้ครับ
  • หลายคนอาจจะส่งสัย ทำไมไม่แยก App Server ออกมาเลย ณ ตอนที่ทำจุดที่ 1 App Server ยังเป็น AIX อยู่ครับ .NET Core ยังใช้งานได้ไม่สมบูรณ์

จุดที่ 2 เพิ่ม App Server (.NET Core : WEB API)

  • เนื่องจากลูกค้าบาง Site เปลี่ยนเครื่อง Server จาก AIX > RedHat 8 ทำให้เอา Container มาใช้งานได้แล้ว
  • ตอนนี้เลยแบ่งงานที่ทำไว้ใน Pipe Server มาส่งต่อให้ WEB API จัดการต่อได้ครับ โดยตอนนี้หน้าที่ของ Pipe Server
    • จากเดิมที่ทำงานด้าน Business Logic อย่างเดียว
    • ตอนนี้ทำหน้าที่เป้น Gateway ส่งต่องานให้กับ App Server (WEB API) ตรงนี้เวลาใช้ .NET มาคุยช่วยปิดปัญหา Security ด้วย เพราะ ถ้าเอา VB6 มาขอ Token ตรงๆ น่าจะยากครับ
    • จุดสังเกตุอย่างนึง Core Logic ที่ทำระหว่างที่ใช้ Pipe Server แก้ขัดไปยังเอามา Reuse ได้ครับ
  • อนาคต ถ้าจัดการ Migrate VB6 > .NET หมด งานจะไปอยู่ WEB API ตอนนี้เอาเว็บ Front End มาเชื่อมต่อได้ครับ

Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts to your email.