Chuyển tới nội dung chính

Kế hoạch Migration

Trang này tổng hợp 2 cuộc migration lớn đang được lên kế hoạch cho DESearch, kèm phạm vi đo được từ source thật (không phải ước lượng cảm tính).

MigrationĐộ ưu tiênCách tiếp cận chốtTrang chi tiết
Selenium → Playwright (.NET)Cao hơnViết bộ engine thứ 2 (Playwright) song song; runtime bật bộ nào thì chạy bộ đóChi tiết →
MSSQL → PostgreSQLSauDev review: sửa trực tiếp / lớp cấu hình / source khácChi tiết →

Bối cảnh chung — ràng buộc gating cho CẢ HAI

Cả hai cuộc migration đều đụng cùng một bức tường: target framework.

DE_Searches (workers) → .NET Framework 4.5.2 (100% các project)
DE_Searches_API_NetCore (API) → .NET 5.0
  • 14 project worker + AutoLoad đều net4.5.2. Microsoft.PlaywrightNpgsql/EF Core đều yêu cầu .NET hiện đại (tối thiểu ~4.6.1/4.7.2, thực tế nên là .NET 8).
  • Vì vậy retarget framework là điều kiện tiên quyết, không phải tùy chọn — không reference được Playwright hay Npgsql trên net4.5.2.
  • Hai project .Core riêng biệt (worker EF6 EDMX vs API EF Core/XPO) cùng trỏ về một DB vật lý SOEZY_DESEARCHDB_DEV. Chúng KHÔNG dùng chung assembly.
  • Coupling thật giữa 2 solution là các DLL closed-source Ezy.* trong Libs\ (Ezy.Module.BaseMSSQLData, Ezy.Module.MSSQLRepository, EzyEFStoreRepository…) — không có source.

:::danger Khối chặn lớn nhất: các DLL framework Ezy.*.MSSQL không có source Việc kết nối DB, bulk-ops, và thực thi stored-proc (JSON-in/JSON-out) đều nằm trong binary Ezy.* mà ta không recompile được. Điều này ảnh hưởng trực tiếp tới migration Postgres (provider MSSQL bị nhúng cứng trong DLL) và gián tiếp tới Playwright (vì cùng phụ thuộc net4.5.2). Bất kỳ kế hoạch nào cũng phải có đường xử lý các DLL này (xin bản Postgres từ vendor, hoặc viết lớp thay thế). :::

Thứ tự đề xuất

  1. Spike retarget một worker đơn giản (vd AccessCanberra_Act) lên .NET 8 + SDK-style csproj → đo độ vỡ thật của EO/EF6/DevExpress.
  2. Playwright trước (ưu tiên cao hơn, ít phụ thuộc DLL Ezy.* hơn): dựng engine thứ 2 chạy song song.
  3. Postgres sau, khi đã có nền .NET hiện đại từ bước retarget.

Số liệu chi tiết và phân rã đầu việc nằm trong 2 trang con. Mỗi đầu việc đều có bước verify riêng.