[C#] Named Pipe เชื่อม VB6 กับ .NET
จาก Blog ตอนที่แล้วที่ผมได้อธิบาย Named Pipe ไปว่า ได้ลองนำเทคนิคนี้มาใช้เพื่อแก้ปัญหาของ Legacy System ใน Blog นี้เป็นการขยายความเพิ่มเติม ทำไมใช้ Named Pipe เป็นเทคโนโลยีที่รองรับทั้ง VB6 และ .NET ไม่อยากไปพัฒนาโมดูลใหม่ๆบน VB6 แล้ว เพราะติดปัญหา Maintain ยาก ทำ Unit Test ไม่ได้ด้วย ไปกับเทคโนโลยีใหม่ๆยาก ไม่รองรับมาตรฐานความปลอดภัยใหม่ๆ VB6 ส่งไป .NET ติดปัญหาอะไรไหม ? ปัญหาภาษาไทย ตัว VB6 มันไม่รู้จัก UTF-8 แบบสมบูรณ์ ต้องส่งแบบ ASCII VB6 Request ส่งแบบ ASCII ไม่งั้นจะติดปัญหาภาษาไทย .NET Receive ส่วนฝั่ง .NET ต้นทางส่งเป็น ASCII ปลายทางต้องอ่านแบบเดียวกันครับ .NET Request กับไปหา VB6 แปลงเป็น ASCII VB6 Receive อ่านในรูปแบบ ASCII VB6 Client สำหรับตัว VB6 ใข้ WIN32_API : CallNamedPipeA function (winbase.h) – Win32 apps โดยการใช้งานต้องมีการประกาศใช้ CallNamedPipeA โดย API นี้ Return ค่าออการ ถ้าเท่ากับ 0 แสดงว่า Request มีปัญหาครับ นอกจากนั้นส่งได้สำเร็จครับ ประกาศชื่อ Pipe ชื่อนี้ต้องตรงทั้ง Client และ Server ครับ โดยกำหนดเป็นชื่อเป็น invest-pipe…