Tôi đang có những nghi ngờ nghiêm trọng về thiết kế cho ứng dụng Web của mình.
Tôi muốn tách logic nghiệp vụ khỏi giao diện vì vậy tôi đã tạo một API Web xử lý tất cả các yêu cầu tới cơ sở dữ liệu.
Đó là API Web ASP.NET với khung Entity và một đơn vị công việc và mẫu kho lưu trữ chung. Cho đến nay, mọi thứ đều tốt.
VẤN ĐỀ
Nơi tôi cần trợ giúp là tôi không thể tìm ra cách chia sẻ đối tượng hiệu quả giữa API và ứng dụng.
Tôi không muốn tuần tự hóa trực tiếp đối tượng thực thể, tôi nghĩ rằng đó sẽ là một thực tiễn tồi bởi vì nếu mô hình thực thể thay đổi, tôi có thể kết thúc việc tuần tự hóa các đối tượng lớn mà không có lý do.
Làm thế nào nó được thực hiện bây giờ
Vì giao diện của tôi là ứng dụng ASP.NET Web trong C # và API của tôi ở C #, tôi đã tạo một thư viện chung với định nghĩa về tất cả các lớp mà tôi muốn chia sẻ giữa chúng.
Tôi biết rằng giải pháp đó sẽ không hoạt động khi tôi sẽ phát triển một ứng dụng Android, tôi sẽ phải tạo lại các lớp của mình trong Java nhưng đó không phải là vấn đề lớn nhất của tôi.
Vấn đề là tôi cảm thấy như tôi luôn chuyển đổi các đối tượng của mình.
THÍ DỤ
Đây là một ví dụ về quy trình làm việc của tôi:
Tôi bắt đầu với một mô hình với tất cả các đối tượng và chú thích dữ liệu cho biểu mẫu của mình sau đó người dùng sẽ POST mô hình đó cho bộ điều khiển.
Trong bộ điều khiển tôi phải chuyển đổi mô hình này thành một lớp trong thư viện chung sau đó gửi đối tượng đó đến API của tôi.
Sau đó, một bộ điều khiển trong API của tôi bắt cuộc gọi và chuyển đổi đối tượng đó thành đối tượng thực thể để cập nhật cơ sở dữ liệu.
Vậy là tôi có 3 lớp.
- Mô hình cho chế độ xem với tất cả chú thích dữ liệu để xác thực (Máy khách)
- Các lớp thư viện chung để chia sẻ các đối tượng (DLL)
- Các lớp thực thể (API)
Tôi có cảm giác rằng tôi làm điều gì đó thực sự sai. Có điều gì thanh lịch hơn? Tôi muốn đảm bảo rằng tôi có một giải pháp tốt cho vấn đề này trước khi dự án trở nên quá lớn.