แอปพลิเคชั่นไฮบริด VB6 / .Net ทำงานอย่างไรในโลกแห่งความจริง


11

ฉันกำลังบำรุงรักษาแอปพลิเคชัน VB6 และเรากำลังศึกษาวิธีการโยกย้ายไปยัง. Net เรากำลังพิจารณาที่จะทำสิ่งนี้อย่างค่อยเป็นค่อยไปโดยการใช้คุณสมบัติใหม่ในคลาส COM ที่มองเห็น. NET และการย้ายฟังก์ชันการทำงานที่มีอยู่อย่างช้าๆ ฉันพบตัวอย่าง 'Hello World' ที่ให้คำแนะนำเกี่ยวกับวิธีการทำสิ่งนี้และทำงานได้ดีกับแอพของเรา แต่พฤติกรรมโลกแห่งความเป็นจริงของแอพพลิเคชั่นไฮบริดเหล่านี้เป็นอย่างไร? มีความเสถียรบำรุงรักษาหรือไม่ โดยเฉพาะอย่างยิ่งโปรแกรมของเราคือผู้ใช้ในคอมพิวเตอร์เครื่องเดียวกันจะใช้งานได้มากขึ้นโดยการสลับบัญชีผู้ใช้

แก้ไข: แอป VB6 อ่านข้อมูลจากการเชื่อมต่อ USB และเก็บไว้ในฐานข้อมูล Access ผู้ใช้สามารถเรียกมุมมองต่าง ๆ ในข้อมูล ข้อมูลถูกแคชในอุปกรณ์ฮาร์ดแวร์ดังนั้นการแทรกสอดในการอ่านข้อมูลจึงไม่เป็นอันตรายถึงชีวิต

แก้ไข 4 ต.ค. 2558: เวลาในการติดตาม: เรายังอยู่ในขั้นตอนการเปลี่ยนรหัส VB6 ที่มีอยู่เป็นขั้นตอนเป็น. Net ครั้งแรกที่เราทำขั้นตอนการเข้าถึงข้อมูลจากนั้นตรรกะธุรกิจและปัจจุบันรูปแบบหนึ่งหลังจากนั้นอีกแปลงเป็น WPF เราสิ้นสุดการเขียนโค้ดใหม่ทุกชิ้นที่เราแปลง (ใน VB.Net) แต่เราสามารถทำได้ช้าและในขณะเดียวกันก็ปรับปรุงการทำงาน แอปพลิเคชั่นไฮบริดรอดชีวิตจากการเปลี่ยนมาใช้ Windows 8, 8.1 และ 10

แก้ไข 9 มีนาคม 2561: เราจะปล่อยรหัสที่แปลงแล้วในเดือนหน้า แอปพลิเคชั่นไฮบริดจะได้รับการสนับสนุนอย่างน้อยหนึ่งปี มันแสดงปัญหาส่วนใหญ่บนหน้าจอความละเอียดสูง แต่ทำงานได้ดี ความจริงแล้วเรามีอาการปวดหัวสนับสนุนเพิ่มเติมเนื่องจากการติดตั้ง. NET Framework ที่เสียหายและการติดตั้งการพึ่งพาที่เสียหาย (SQL Server LocalDb ในหมู่พวกเขา) มากกว่าที่เรามีปัญหาความเข้ากันได้กับฐานรหัส VB6 ...


1
แอปพลิเคชัน 'ดั้งเดิม' ทำอะไร รายละเอียดเพิ่มเติมบางอย่างจะช่วยในการตอบคำถามของคุณ
Darknight

ไม่มี "การเชื่อมต่อ USB" มากกว่าที่คุณมี "การเชื่อมต่อ PCI" มีโอกาสมากขึ้นที่คุณมีอุปกรณ์บางอย่างเชื่อมต่อกับบัส USB และประเภทอุปกรณ์เป็นจุดสำคัญ
Bob77

คำตอบ:


5

ฉันประสบความสำเร็จอย่างน่าอัศจรรย์ในการเปิดเผย. NET ถึง VB6 ผ่านทางอินเตอร์เฟส COM โดยการทำเช่นนี้เราสามารถ refactor เริ่มต้นเป็นจำนวนมากของรหัส VB6 และตั้งค่าเส้นทางการอัพเกรดเป็น. NET เพียงจำไว้ว่าสำนวน VB6 นั้นแปลได้ไม่ดีนักสำหรับ C # หรือแม้แต่ VB.NET ดังนั้นคุณจะต้องเหยียบอย่างระมัดระวัง

ปัญหาหนึ่งที่เรามีซึ่งน่ารำคาญมากคือการสร้างจำนวนมากเกินไปที่เราต้องทำเนื่องจากการเปลี่ยนแปลงอินเทอร์เฟซ COM สาธารณะ นี้ได้รับการบรรเทาโดยภาพยี่ห้อ


ขอบคุณ. คุณช่วยอธิบายเพิ่มเติมเกี่ยวกับปัญหาที่ Visual Make แก้ได้ไหม ฉันไม่แน่ใจว่าฉันเข้าใจ
Dabblernl

@Dabblernl - Visual Make ช่วยให้คุณสร้างโครงการซึ่งเป็นชุดของโครงการ VB6 และมันจะสร้างตามลำดับที่เหมาะสม
ChaosPandion

6

FWIW ในประสบการณ์ของฉันจำเป็นต้องอัพเกรดแอป VB6 เป็น. Net เป็นข้อแก้ตัวที่เหมาะสำหรับการเขียนใหม่ เทคนิคที่แพร่หลายใน VB6 นั้นแทบจะไม่มีพอร์ตเลยทีเดียวที่จะ. Net

ความสนุกที่คุณจะได้รับ:

  1. คุณจะจบลงด้วยการอ้างอิงถึง Microsoft.VisualBasic ที่คุณไม่ต้องการจริงๆ
  2. พวกมันจะหาบั๊กยาก ๆ ตัวอย่างเช่นเมื่อสตริงย่อย VB6 (a, b, c) แสดงผลอย่างเงียบ ๆ เป็น a.SubString (b, c) และระเบิดใบหน้าของคุณเพราะมันเป็น 1 ใน VB6 และ 0-based ใน. Net
  3. การแปลงโดยนัยที่เป็นโค้ดง่าย ๆ เหล่านั้นจะมาจากงานไม้โดยปกติจะอยู่ในพีซีเครื่องแรกที่ไม่มี "," เป็นตัวคั่นรายการและ / หรือ " เป็นตัวแยกทศนิยม
  4. คลาสที่แปลงแล้วของคุณจะไม่มีการซ่อนข้อมูลที่ต้องการซึ่งการออกแบบใหม่ควรนำมาใช้

HTH


1
คุณได้คะแนนที่ดีมาก เหล่านี้คือสาเหตุบางประการที่ต้องมีการส่งผ่านรหัสเริ่มต้นเพื่อกำหนดแนวทางการปฏิบัติที่ไม่ถูกต้องอีกครั้ง เป็นการดีที่คุณจะตรวจสอบให้แน่ใจว่าOption Explicitเปิดใช้งานอยู่และการแปลงการแปลงทางอ้อมทั้งหมดจะถูกลบออก
ChaosPandion

ขอบคุณที่เชียร์ฉันขึ้นมา ;-) แต่ตอนนี้ยังไม่ทันที่ฉันอยากรู้ ฝันร้ายของการกลับใจที่แท้จริงยังคงเกิดขึ้น
Dabblernl

1
@chaos ถูกต้อง ในความเป็นจริงผมเริ่มต้นด้วยการที่ชัดเจนและเมื่อมีข้อผิดพลาดที่ไม่เหลือผมแจ็คมันขึ้นอยู่กับที่เข้มงวดซึ่งไฮไลท์มากมายหลายประเด็นที่เป็นประโยชน์
smirkingman

1
ฉันเคยได้ยินทีมที่ใช้รหัส VB6 กับเครื่องพ่นไฟ ฉันเชื่อว่าเหตุผลนี้เกิดขึ้นมากสำหรับรหัส VB6 คือ VB "นักพัฒนา" จำนวนมากไม่มีประสบการณ์การเขียนโปรแกรมเมื่อเริ่มต้น สิ่งนี้ได้สร้างแอพพลิเคชั่นที่ออกแบบมาไม่ดีและมีรหัสในจำนวนมากสำหรับมืออาชีพรุ่นนี้เพื่อจัดการกับ
มัน Grunt

1

มันควรจะทำงานได้ดีสำหรับคุณไม่มีอะไรพิเศษเกี่ยวกับการสลับผู้ใช้อย่างรวดเร็ว / หลายเซสชันที่จะทำให้คุณมีปัญหาใด ๆ

ในแง่ของการบำรุงรักษาโปรดจำไว้ว่าไฮบริด VB6 / VB.NET ควรเป็นทางออกชั่วคราว: แผนของคุณควรจะโยกย้ายอย่างเต็มที่ไปยัง VB.NET เมื่อเวลาผ่านไป

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.