จาก 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 sent to your email.