Tôi là một nhà phát triển web stack đầy đủ và hiện tại tôi chủ yếu xây dựng ứng dụng một trang bằng cách sử dụng khung công tác mặt trước như khung góc cạnh và phụ trợ như khởi động mùa xuân.
Thông thường, thiết kế ứng dụng web của tôi (giả sử đó là CRUD) như sau: Giả sử tôi đang ở trang cập nhật và tôi cập nhật một thực thể. Sau đó, một yêu cầu được đưa ra cho phụ trợ cập nhật thực thể trong cơ sở dữ liệu. Khi phản hồi phụ trợ nói rằng mọi thứ đều ổn, thực thể của bạn đã được cập nhật (mã trạng thái 200) Tôi đi qua trang tiếp theo là trang đọc với một url như entityName/{id}
nơi tôi chuyển id của thực thể sang trang tiếp theo thông qua url. Sau đó, trên trang đọc tôi nhận được id đó, đưa ra yêu cầu đến phần phụ trợ, truy xuất dữ liệu thực thể và hiển thị chúng.
Vấn đề phát sinh khi người dùng mất kết nối với internet, do đó không thể thực hiện yêu cầu đến phụ trợ và do đó dữ liệu không thể được hiển thị cho ui hoặc được cập nhật.
Một thiết kế khác sẽ là cái này: Tôi đang ở trang cập nhật và tôi cập nhật thực thể của mình. Một yêu cầu được đưa ra cho phần phụ trợ nhưng trạng thái đang được giữ ở phía máy khách. Vì vậy, giả sử mất kết nối, tôi vẫn có thể truy cập trang đọc và hiển thị thực thể được cập nhật. Ngoài ra, vì trạng thái / dữ liệu được giữ ở phía máy khách, tôi không phải thực hiện yêu cầu thứ hai đó cho phụ trợ để lấy thực thể từ id vì thực thể sống ở phía máy khách. Trong thời gian người dùng dành cho ứng dụng, kết nối trở lại và yêu cầu cập nhật được gửi đến máy chủ để đồng bộ hóa dữ liệu trong db và ở phía máy khách.
Đối với tôi, dường như cách tiếp cận thứ hai sẽ thuận tiện hơn cho người dùng vì ui không phụ thuộc nhiều vào yêu cầu được đưa ra cho phần phụ trợ để hiển thị thông tin của nó làm cho nó trôi chảy và dễ chịu hơn.
Tôi rất biết rằng cách tiếp cận đầu tiên được sử dụng. Tôi phát triển như thế này và vì vậy câu hỏi của tôi là: Có thể đi từ thiết kế thứ nhất sang thiết kế thứ hai và nếu có với công nghệ gì?
Những gì tôi sẽ làm để thực hiện thiết kế thứ hai sẽ là chia sẻ dữ liệu giữa các thành phần bằng cách sử dụng các dịch vụ (khi thực hiện với góc). Theo cách này, trạng thái của ứng dụng có thể được giữ ở phía máy khách. Nhưng có lẽ có một cách tốt hơn. Tôi đã nghe nói về thư viện NgRx để quản lý trạng thái của một ứng dụng. Đây có phải là cách đúng đắn để quản lý trạng thái của ứng dụng về phía máy khách?
Ngoài ra, có một vấn đề thứ hai là đảm bảo rằng các yêu cầu không thể được thực hiện khi mất kết nối được thực hiện khi kết nối trở lại. Và vì vậy tôi tự hỏi: Có thể sử dụng một công cụ cho phép xếp hàng các yêu cầu và chạy lại chúng khi kết nối trở lại? Tôi có khái niệm về các nhân viên dịch vụ và ứng dụng web tiến bộ nhưng chỉ có khái niệm (như tôi biết rằng một nhân viên dịch vụ có thể được sử dụng để lưu trữ dữ liệu trao đổi với máy chủ) và tôi tự hỏi liệu đó có phải là cách giải quyết vấn đề này không?
Tôi đang chờ ý kiến của bạn về bài viết của tôi. Tôi hy vọng nó không quá dài. Cảm ơn trước.