Kết nối C# với Python Flask để triển khai hệ thống AI Client-Server – Chương 1

Chào mừng anh em quay trở lại với Blog MÌ AI, hôm nay chúng ta sẽ đi tìm hiểu cách triển khai kết nối client C# với server Python bằng Flask để triển khai hệ thống AI có kiến trúc client-server.

Chắc hẳn trong quá trình từ trước đến nay anh em đọc các bài trên blog của mình thấy hầu hết các chương trình đều thực thi trực tiếp trên server đúng ko? Quả là trong quá trình viết blog, nhiều anh em có hỏi về việc nếu muốn triển khai một hệ thống mà Python làm server, ứng dụng C# hoặc Mobile sẽ gọi lên server đó thì như nào? Làm ra sao?

Do vậy, hôm nay mình sẽ guide các bạn từng bước cách triển khai nhé. Bài toán chúng ta sẽ làm ở đây là như sau:

  • Ứng dụng C# (các bạn có thể chế cháo thành ứng dụng Android, iOS tùy ý nhé) sẽ gửi 1 ảnh collect từ webcam lên server.
  • Server Python Flask sẽ dùng YOLO để detect xem vật thể đó là vật thể gì và trả về cho client.
flask server python
Nguồn: https://github.com/ahmedfgad

Tuy nhiên, trong Chương 1 này, mình sẽ chỉ hướng dẫn các bạn dựng một server Flask và client c# gọi được lên server thôi nhé, trong Phần 2 tiếp theo mình sẽ triển khai chi tiết hơn.

Phần 1. Chuẩn bị nguyên vật liệu

Bài này có kiến trúc client/server nên các bạn phải chuẩn bị cho mình 2 phần là client và server. Tất nhiên rồi! 😀

Đầu tiên các bạn tạo thư mục MiAI_Flask để lưu các thứ của bài này. Tiếp theo các bạn gõ lệnh:

git clone https://github.com/thangnch/MiAI_Flask .

Đợi một chút để source bay về, các bạn sẽ thấy có 2 folder là client và server. Trong đó server là python và client mình viết bằng C# nhé.

Tiếp theo để làm bài này, các bạn chạy lệnh cài đặt các thư viện như sau:

pip install -r setup.txt

Đợit một chút là done nhé! Sau đó các bạn chuyển sang bước 2.

Phần 2. Viết code chương trình client c# và flask server python

Như đã nói ở trên, trong chương 1 này, chúng ta thiên về dựng server Flask để các bạn nắm được cấu trúc nên mã nguồn python Flask khá đơn giản chỉ là hiển thị câu Hello world và Hiển thị lời chào với tên người dùng do Client gửi lên thôi nhé (chúng ta sẽ bổ sung code vào sau trong các Chương sau).

Mã nguồn server các bạn xem file httpsvr.py trong thư mục server nhé. Mình đã comment đầy đủ từng dòng lệnh rồi.

flask server python
Mã nguồn server httpsvr.py

Còn ứng dụng client cũng sẽ ở dạng đơn giản, có một textbox, sau đó người dùng nhập tên vào và nhấn Submit thì gửi tên lên server và server trả về kết quả là một câu chào Hello. Mã nguồn trong thư mục client, các bạn mở file solution .sln để xem nhé.

Client c#
Mã nguồn c#

Okie đó là toàn bộ mã nguồn, bây giờ chúng ta sang phần tiếp để ghép nối và thử chạy chương trình nhé.

Phần 3. Tiến hành bật Flask server Python

Bây giờ chúng ta sẽ tiến hành bật server trước nhé. Các bạn chuyển vào thư mục server và chạy lệnh:

python httpsvr.py

Đợi một chút cho chương trình load, khi nào màn hình hiện ra chữ dạng như sau là thành công:

Running on http://0.0.0.0:8000/ (Press CTRL+C to quit)
Restarting with stat
Debugger is active!
Debugger PIN: 116-214-938
flask server python

Để ý kỹ các bạn sẽ thấy cổng của server đã mở ở 8000 như chúng ta cấu hình, các bạn thích cổng khác có thể đổi thoải mái nhé.

Các bạn hãy mở trình duyệt trên máy server và gõ thử địa chỉ http://localhost/ xem có gì hiện ra không nhé, nếu có dòng chữ như bên dưới là server đã start và trả về thành công.

flask server python

Phần 4. Tiến hành chạy Client bằng c#

Rồi, bây giờ đến phần client. Phần này mình lập trình WinForm bằng Visual Studio 2017 nhé. Bạn nào chưa cài Visual Studio thì cài để code client (đoạn này với các bạn chưa code C# bao giờ chú ý nhé và không nhầm với Visual Studio Code để code python từ trước đến giờ.).

Các bạn đã mở file solution, tìm đến Form1.cs và tìm tiếp hàm button1_Click. Các bạn sửa biến server_ip thành IP chính xác của server là okie. Nếu các bạn chạy trên cùng 1 máy thì cứ sửa thành 0.0.0.0 là xong nhé.

Rồi thì giờ tiến hành run Solution, một màn hình như sau sẽ hiện ra khi các bạn chạy thành công.

client c#

Các bạn hãy nhập tên và nhấn button Send thử xem, nếu có messagebox hiển thị là bingo! Xong rồi ah!

client c#

Như vậy , trong Chương 1 này, chúng ta đã biết cách dựng một server python bằng Flask và gọi từ c# lên thành công. Trong các Chương tiếp, chúng ta sẽ đắp thêm code để làm 1 hệ thống nhận diện vật thể theo hướng client/server nhé.

Mình xin nhắc lại, đây là bài ví dụ để các bạn biết cách triển khai theo mô hình client/server thôi. Sau khi thành thạo, các bạn có thể làm các hệ thống khác ví dụ như hệ thống trông xe tại tầng hầm, máy của bảo vệ sẽ chụp ảnh biển số gửi về server để xem xét và cho phép ra vào chứ không ai cài model lên máy bảo vệ cả.

Hẹn gặp lại các bạn. Nếu có gì vướng mắc trong quá trình triển khai các bạn cứ post lên group trao đổi, chia sẻ: https://www.facebook.com/groups/miaigroup để cùng trao đổi, thảo luận nhé.

Hãy gia nhập cộng đồng Mì AI nhé!

Fanpage: http://facebook.com/miaiblog
Group trao đổi, chia sẻ: https://www.facebook.com/groups/miaigroup
Website: http://ainoodle.tech
Youtube: http://bit.ly/miaiyoutube

mm
Nguyễn Chiến Thắng

Một người đam mê những điều mới mẻ và công nghệ hiện đại. Uớc mơ cháy bỏng dùng AI, ML để làm cho cuộc sống tốt đẹp hơn! Liên hệ: thangnch@gmail.com hoặc facebook.com/thangnch

Related Post

One Reply to “Kết nối C# với Python Flask để triển khai hệ thống AI Client-Server – Chương 1”

Leave a Reply

Your email address will not be published. Required fields are marked *