การย้าย

อัปเกรดเป็น Doconut บน .NET 8

มีการย้ายสองแบบบนหน้านี้: การอัปเกรดเวอร์ชันแพ็กเกจ ภายใน .NET 8, และ การย้ายการผสานรวมจากเฟรมเวิร์ก Doconut รุ่นเก่า (.NET 6, .NET Standard 2.0, .NET Framework 4.7) ไปยัง API ของ .NET 8.

การอัปเกรดเวอร์ชันแพ็กเกจ

  1. อัปเดตแพ็กเกจ (และแพ็กเกจปลั๊กอินใด ๆ — รักษาเวอร์ชันให้สอดคล้อง):
bash
dotnet add package Doconut.NET8
dotnet add package Doconut.NET8.Dicom
  1. ตรวจสอบหน้าต่างใบอนุญาต. ใบอนุญาตครอบคลุมช่วงเวอร์ชัน หากเวอร์ชันใหม่อยู่นอกช่วงนั้น การเปิดจะ ถูกบล็อกOpenDocumentAsync จะโยน LicenseException (หยุดทำงานเร็ว); มันจะไม่ย้อนกลับไปใช้ลายน้ำ, และ IsVersionValid จะเป็น false. ต่ออายุ, แทนที่ไฟล์ .lic, และรีสตาร์ทแอปพลิเคชันเพื่อให้ AddDoconut() โหลดใบอนุญาตใหม่.
  2. ทำการคอมไพล์ใหม่และให้ NuGet คืนค่าเวอร์ชันของ dependencies ที่ระบุ — อย่าตั้งค่า System.Text.Json หรือ System.Drawing.Common ใหม่ (ดู Troubleshooting เพื่อดูข้อผิดพลาดที่เกิดจากการดาวน์เกรด).
  3. ทำการทดสอบเบื้องต้น (smoke-test) เอกสารหนึ่งไฟล์ต่อแต่ละกลุ่มรูปแบบที่คุณใช้.

การย้ายจาก .NET 6 / .NET Standard 2.0

API ของ .NET 8 ถูกออกแบบใหม่โดยอิง DI และ async. การแมปคือ:

ประเด็น.NET 6 / Standard 2.0.NET 8
การตั้งค่าสร้าง Viewer(cache, httpContextAccessor, licensePath)builder.Services.AddDoconut(options => …) + ฉีด Viewer
ใบอนุญาตแบบคงที่ Viewer.DoconutLicense(path) + SetLicensePlugin(...) ต่อปลั๊กอินoptions.LicensePath / LicenseContent / LicenseStream — ใบอนุญาตเดียว, ค้นหาอัตโนมัติสำหรับไฟล์ปลั๊กอิน
การเปิดviewer.OpenDocument(...) (แบบซิงโครนัส)await viewer.OpenDocumentAsync(...)
การปิดviewer.CloseDocument() หรือ viewer.Dispose()viewer.CloseDocument(token)Viewer ไม่ใช่ IDisposable
อายุการใช้งานViewer implements IDisposable, เก็บเอกสารที่เปิดอยู่Viewer เป็นแบบไม่มีสถานะ; เซสชันอยู่ในแคชภายใต้โทเคน
ตัวแปลงคุณสมบัติ viewer.Converterปลั๊กอิน Converter (AddPlugin<ConverterPlugin>()) + บริการ DocumentConverter
คลาสกำหนดค่าเนมสเปซ Doconut.Configs.View.*ทั้งหมดในเนมสเปซ Doconut
มิดเดิลแวร์การเชื่อมต่อ handler ด้วยตนเองapp.UseDoconutResources() + app.UseDoconut()

ตัวอย่างก่อน/หลัง:

text
// .NET 6 (old API, shown for contrast — not valid on .NET 8)
using var viewer = new Viewer(cache, httpContextAccessor, "wwwroot/Doconut.Viewer.lic");
var token = viewer.OpenDocument(path, new PdfConfig { AllowSearch = true }, new DocOptions());
csharp
// .NET 8 — Viewer injected, license configured once in AddDoconut()
var token = await viewer.OpenDocumentAsync(path, new PdfConfig { AllowSearch = true });

การย้ายจาก .NET Framework 4.7 (Web Forms)

Viewer เวอร์ชัน 4.7 เป็น WebControl; .NET 8 แทนที่โมเดลคอนโทรลด้วยมิดเดิลแวร์ + บริการ DI:

  • คอนโทรล <doconut:DocViewer runat=server> หายไป — หน้าเว็บจะโฮสต์ส่วนของวิดเจ็ต div คู่และ endpoint ของคุณจะคืนค่าโทเคน (Quick Start แสดงรูปแบบ).
  • เมธอดใบอนุญาตแบบคงที่ → แหล่งใบอนุญาตของ DoconutOptions.
  • OpenDocument แบบซิงโครนัส → await OpenDocumentAsync.
  • Viewer.ReferenceScripts() / ReferenceCss() มีอยู่ในทั้งสองเวอร์ชัน — เวอร์ชัน .NET 8 รับอ็อบเจ็กต์ ScriptConfig/CssConfig และถูกจำกัดโดยใบอนุญาต.
  • คุณสมบัติคอนโทรล (ShowThumbs, PageZoom, FixedZoom, …) → ใช้ชื่อเดียวกันบน ViewerConfig / ตัวเลือก JS ของ docViewer.
  • เมธอดส่งออกที่คืนค่า byte[] → API การส่งออกแบบ async บน Viewer.

วางแผนส่วนนี้เป็นการเขียนใหม่ของเลเยอร์โฮสติ้งโดยคงแนวคิดเดิม: เปิด → โทเคน → วิดเจ็ต.

หมายเหตุการตั้งชื่อ

ในทุกเฟรมเวิร์กคลาสคือ Viewer — หากคุณพบ DocumentViewer ในโค้ดตัวอย่างเก่าหรือบทความของบุคคลที่สาม, ชนิดนั้นไม่เคยมีอยู่ใน SDK.

รายการตรวจสอบการย้าย

  1. สลับแพ็กเกจ; ทำให้เวอร์ชันแพ็กเกจปลั๊กอินสอดคล้องกัน.
  2. ย้ายการตั้งค่าใบอนุญาตเข้าไปใน AddDoconut(); ลบการเรียกเมธอดใบอนุญาตแบบคงที่.
  3. ทำการเรียกเปิดแบบ async; แทนที่ Dispose/CloseDocument ที่ไม่มีพารามิเตอร์ด้วย CloseDocument(token).
  4. แทนที่การใช้ viewer.Converter ด้วยการลงทะเบียนปลั๊กอิน Converter + DocumentConverter.
  5. ทดสอบเส้นทางความปลอดภัยอีกครั้ง: AddSession()/UseSession() ตอนนี้จำเป็นต้องใช้กับความปลอดภัยเริ่มต้น.

หน้านี้เป็นประโยชน์หรือไม่?