Cấu trúc của một app mobile

Xin Chào ! Em có một số thắc mắc cơ bản về lập trình mobile không biết hỏi ai nên nhờ anh chị tư vấn giúp (do chương trình đào tạo trường em không có môn lập trình app di động nên em muốn tự học mà không biết bắt đầu từ đâu)

1/ Phần xử lý “phía sau” giao diện bên web gọi là backend, còn bên lập trình app gọi là gì ?
2/ webapp dùng database (SQL server, MySQL, …) để lưu trữ dữ liệu, còn 1 app di động (APP OFFLINE) lưu trữ dữ liệu ở đâu ?
3/ Phần xử lý phía sau giao diện một APP OFFLINE viết bằng ngôn ngữ gì ? VD : app quản lý thời gian biểu, game, app máy tính bỏ túi, … Dùng ngôn ngữ khác để xử lý hay dùng chính ngôn ngữ viết giao diện để xử lý ( Kotlin, React Native, Flutter, …) ?
4/ Đối với một app online thì việc tương tác và xử lý dữ liệu phải dùng API, code 1 server bằng ngôn ngữ server-side thuê hosing cho riêng 1 nơi, app mobile chỉ code phần giao diện và cho tương tác với server này qua API đúng không ? hay còn cách nào khác ?
6/ Em mới học lập trình mobile thì em nên chọn ngôn ngữ/công nghệ/ framework nào ? Em có nền tảng về java webjavascript thì nên chọn kotlin hay react native ?

Mong mọi người tư vấn giúp ! Em cảm ơn !

  1. frontend. mà gọi là gì thì có gì quan trọng, gọi là app mobile có gì không đúng
  2. sqlite hoặc tự define (cũng là lưu dạng file)
  3. app offline với app online khác nhau như thế nào mà lại có câu hỏi này?
  4. vẫn là câu hỏi về định nghĩa app offline và app online?
  5. nếu chỉ là học thì tại sao không bỏ ra vài buổi để thử, mỗi người có một sở thích khác nhau, bạn chấp nhận chọn theo ý người khác?
4 Likes

Cảm ơn anh @kisuluoibieng ã phản hồi.
1/ Em thắc mắc về “phần back-end” của app.
2/ App offline là app chạy không cần kết nối mạng VD app game offline, máy tính bỏ túi, app chụp ảnh,… App online là app có kết nối internet lấy dữ dữ liệu ở server để hoạt động, VD : mạng xã hội, EmobileBanking,…. hihihi Em không biết thuật ngữ chính xác gọi là gì.

2 Likes

câu trả lời của mình không phải là câu trả lời dễ nghe (lý do là vì nhiều bạn khác cũng hỏi những câu kiểu này nhưng hầu như chỉ là hỏi vu vơ chứ không thật sự có động cơ)
nhưng bạn vẫn reply, nên mình cũng trả lời thế này

  1. đã là app mobile thì đều như nhau cả, cách code không có gì khác nhau cả, cũng đều là UI/UX cho người dùng thao tác với data mà thôi
  2. “app offline” và “app online” cũng chỉ ở chỗ thao tác/giao tiếp với data mà thôi
  • data ở trên chính thiết bị của người dùng, thao tác data trực tiếp (chỉnh sửa file hoặc qua công cụ tổ chức và thao tác data dạng file hoặc in-memory như sqlite…)
  • data ở server nào đó, cần thông qua network để thao tác. thông thường là sẽ viết api ở server cho app gọi để thực hiện các thao tác CRUD. thông thường là dùng giao thức http(s), format data gửi/nhận ở dạng json
  • một giao thức phổ biến khác là (tcp) socket/web socket, dùng cho các app gửi nhận data dạng realtime, data có thể chủ động gửi ở cả 2 chiều là app và server (còn api thì app request, server response). ví dụ như là chức năng chat, game online
  • ngoài ra bạn có thể cố tình public database để app kết nối trực tiếp, khỏi cần code server. nhưng mà … ở đây chúng ta không làm như vậy.
5 Likes

1/ Cái mà bạn gọi là app offline từ đầu đến cuối nó đều viết bằng một ngôn ngữ lập trình mobile, đóng gói thành 1 file hoàn chỉnh VD app.apk . App online theo nghĩa của bạn thì app đó vẫn chạy trên mobile, file apk đó vẫn cài trên điện thoại end user kết nối với 1 server, server này như một web service.
2/ ứng dụng k0 kết nối mạng lưu data ở sqlite hoặc kiếm chỗ nào đó trên điện thoại user để lưu. App như fb, youtube, google, … lưu data ở server (server web bạn config sao thì server cho app cũng gần giống như vậy)
3/ server tương tác với app qua API nên server viết bằng ngôn ngữ gì cũng được vì API toàn “text”.
4/ Dùng cách nào mà app truyền/nhận dữ liệu với server là được.
5/ Học hết xong thích cái nào thì theo cái đó ! Q: Mì Hảo Hảo với mì Omachi tôi nên mua mì nào để ăn hết tháng này ? A: Ăn thử hết, cái nào ngon thì mua !

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?