Comprehensive Analysis and Modernization Strategy
Đánh giá hiện tại
(Current Assessment)
HRM, Accounting, Purchasing & Warehouse, Manufacturing (GDIS/MES), Sales, Guidance Workflow, Legal Docs
Vấn đề lớn nhất: Trình duyệt web (Chrome, Edge, Firefox) bị sandbox - không cho phép truy cập trực tiếp:
Blazor là lựa chọn tốt để tận dụng C# codebase cũ, nhưng phải phân tích từng use case để chọn Hybrid/Server/WebAssembly hay/hoặc kết hợp với Next.js cho website external.
| Nhóm chức năng | Mô tả | Công nghệ đề xuất | Giải thích |
|---|---|---|---|
| Màn hình có thiết bị ngoại vi | COM/RS232/TCP, đọc file local, in ấn | Blazor Hybrid (MAUI) | Hỗ trợ native access (SerialPort, TCP/IP, FileSystem), vẫn dùng Razor component, hỗ trợ auto-update bằng MSIX |
| Màn hình hành chính, quản lý, dashboard nội bộ | Không dùng thiết bị, cần realtime hoặc quản trị | Blazor Server | Web realtime (SignalR), dễ triển khai, bảo mật theo phiên server, code reuse cao |
| Trang public / portal / customer-facing website | Web hiện đại, chỉ xem dữ liệu / biểu đồ | Next.js / React 19 / Tailwind / Azure Static Web Apps | SEO tốt, dễ mở rộng, dễ thuê dev web, thích hợp cho future-proof modernization |
| Trường hợp đặc biệt muốn web thuần vẫn truy cập thiết bị | Giữ giao diện web, thiết bị đọc qua agent nội bộ | Blazor Server + Local Agent (SignalR/REST) | Agent đọc dữ liệu từ COM/file và push lên web, không cần native app, nhưng phải cài agent |
Hoya.Contracts.QC.v1/v2)_v2, tránh breaking changes
Staging → Standardize (đơn vị/precision) → Persist (Oracle/SQL Server) → Publish (Service Bus → Fabric)
Mục tiêu: Hiểu rõ hệ thống hiện tại, xác định chiến lược modernization hiệu quả
Trả lời Q&A
(Questions EN, Answers VI)
Trả lời: Hoàn toàn hợp lý. Nên nhóm theo business capability (PD, QC/QCRTS, DFA, Shipping, Auth), triển khai dần theo Strangler Fig. Bắt đầu từ 2–3 service chính để dễ maintain.
Trả lời: Có thể dùng shared NuGet packages trong giai đoạn chuyển đổi (Azure Artifacts). Về lâu dài, chỉ giữ common utilities / contracts, tránh chia sẻ logic domain.
Trả lời: Dùng Semantic Versioning (SemVer), tách package theo domain, có consumer-driven contract tests (Pact), thay đổi chỉ mang tính additive, không breaking.
MAUI là framework của Microsoft để xây dựng native cross-platform apps (Windows, macOS, iOS, Android) bằng C# và .NET. Blazor Hybrid chạy trên MAUI, cho phép dùng Razor components trong native app container với full native API access.
Reference: Microsoft .NET MAUI Documentation
Trả lời: Có thể. Dùng Repository pattern để encapsulate SP/View, đảm bảo UI không truy cập DB trực tiếp.
Trả lời: Dùng Repository + Stored-proc Facade cho mỗi service. Service giao tiếp với nhau qua API / event bus, không share DB connection.
Trả lời: Có. EF Core hỗ trợ SP (FromSqlRaw), Dapper cho hiệu suất cao. Thực tế thường kết hợp cả hai.
Trả lời: Dùng namespace versioning (Hoya.Contracts.QC.v1/v2) + hậu tố _v2 cho SP. Thay đổi theo hướng additive, quản lý migration script qua CI.
Trả lời: Phù hợp và nên triển khai; giúp version control tập trung, rollback dễ.
Trả lời: Không đáng kể. Artifacts hoạt động tốt với .NET 8, cả Blazor Server lẫn Hybrid.
Trả lời: Dùng SemVer, pin major version ở consumer, feed views (@local/@prerelease/@release) + retention policy.
Trả lời: Có, khi cần publish non-.NET artifacts (tool, native libs, model data). Code .NET nên dùng NuGet.
Trả lời: Có. Cài Self-hosted Agent trong mạng nội bộ; quản lý môi trường qua Environments.
Trả lời: Dùng MSIX + App Installer (Blazor Hybrid) hoặc Squirrel/ClickOnce. Nếu dùng Agent → Agent tự kiểm tra version và auto-update.
Trả lời: Dùng Self-hosted Agents + Environments/VM Resources (thay cho Deployment Groups).
Trả lời: Dùng artifact versioning, blue-green / slot swap, hoặc rollback MSIX qua feed version.
Dùng .NET Upgrade Assistant + AI tools (GitHub Copilot / Azure AI) để convert VB.NET → C#, refactor dần theo Strangler. Có thể sinh unit test tự động để kiểm thử song song.
Sử dụng hệ sinh thái sản phẩm như NxTransform và NxKMS của NTQ có thể giúp việc convert được hiệu quả, chính xác hơn rất nhiều so với các công cụ thông thường (có thể demo và chia sẻ riêng):
Trả lời: Dùng DeviceIngest.Agent với adapter cấu hình được (SerialAdapter, TcpAdapter, FileAdapter).
Trả lời: Dùng FileWatcherAdapter đọc TXT/CSV/Excel; mapping qua config JSON.
Trả lời: Mapping Engine (JSON DSL) định nghĩa Checksheet + rule; versioning mapping theo thời gian hiệu lực; pipeline:
Staging → Standardize → Persist
Trả lời: Xây Agent Abstraction Layer (IAgentProvider) + Agent Service độc lập; quản lý API key qua APIM; lưu log & metrics để audit.
Trả lời: Duy trì API-first, event-driven, có feature flag, configuration-as-code, observability built-in, dễ cắm thêm module (AI agent, analytics, IoT).
Mong các anh/chị dành thời gian review và phản hồi bất cứ thông tin nào mà HOYA cần NTQ làm rõ hơn.
NTQ rất sẵn lòng được giải đáp và hỗ trợ HOYA trong suốt quá trình đánh giá, lập kế hoạch và triển khai hệ thống.
Questions & Discussion
HOYA Corporation | NTQ Solution
System Modernization Assessment 2025