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ên | Cách tiếp cận chốt | Trang chi tiết |
|---|---|---|---|
| Selenium → Playwright (.NET) | Cao hơn | Viết bộ engine thứ 2 (Playwright) song song; runtime bật bộ nào thì chạy bộ đó | Chi tiết → |
| MSSQL → PostgreSQL | Sau | Dev review: sửa trực tiếp / lớp cấu hình / source khác | Chi 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.PlaywrightvàNpgsql/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
.Coreriê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.*trongLibs\(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
- 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.
- 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. - 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.