Kết hợp Python và C#

c-sharp
python
python3

(Đạt Phạm) #1

Xin chào các lập trình viên pro. Hôm nay mình có một câu hỏi cần các bạn giúp

Đó là mình có ý định tạo một project sử dụng Python để viết lõi sử lý kết hợp với Winform hoặc WPF của C# để thiết kế UI.

Mình đã tham khảo và thấy có bài này: https://www.youtube.com/watch?v=lMQW3CsEkSE

Không biết ý định của mình ở phía trên có khả thi không. Mình thấy trên video thì Python chạy được trên VS và kết hợp với C# nhưng lại không có giao diện.

Cảm ơn các thánh trước!


(Trần Hoàn) #2

Hi, mình chưa phải là lập trình viên pro nên mình không trả lời được câu hỏi “có khả thi hay không”. Mình chỉ góp ý cho về ý định của bạn: Chắc là không ai có ý định vậy đâu, vì vấn đề là
Tại sao bạn lại muốn làm như vậy? Có lợi gì so với việc chỉ dùng Py hoặc .NET?”


(Evil Artist) #4

Tham khảo từ medium có 2 cách.
Cách 1: sử dụng Process để gọi Python bằng interpreter. Cách này mình từng sử dụng với Perl rồi. Form sẽ bị treo trong quá trình process đang chạy. Winform có method Application.DoEvent để tránh TH này. Với wpf xử lý hơi phức tạp một chút.
Cách 2. Như cái video của bạn. Mình cũng chưa tìm hiểu.


(Vuio) #5

Bật watching hoặc tracking để theo dõi topic nhé.


(Songtotnhe) #6

Cám ơn bạn, trước giờ chưa biết tính năng này.


(Tao Không Ngu.) #7

Hi Đạt Phạm.
1 Đây là comment không phải của dân IT pro.
2. Có.
3. Tuy nhiên. Để làm được như vậy bạn cần thành một lập trình viên pro trược. Trong video của bạn người ta dùng ỈonPython một trình thông dịch python viết bằng C# (thường nó được viết băng C++) và để thêm nó vào dự án của bạn là không đơn giản. Giao tiếp giữa 2 ngôn ngữ lập trình khác nhau là không dễ.

P/S Bạn có thể code hoàn toán bằng C# hoặc python đều có thể code giao diện được. Người ta dùng kết hợp python khi cần tạo ra các chức năng mở rộng một cách đơn giản như các add on của trình duyệt.


(Hung) #8

C# là 1 service, Python là 1 service khác. 2 services là 2 project khác nhau.
(Có thể dùng VS tạo 2 project đó cùng 1 solution, mình nghĩ vậy thôi, chưa chắc đúng, mà nên để 2 project tách biệt hay hơn)

Dùng HTTP để kết nối: REST API hoặc GraphQL
Dùng TCP: WebSocket thẳng tiến
Dùng interconnection service: apache thrift, protobuf
Dùng queue: Redis, RabbitMQ, Apache Kafka

Các cách khác, như sử dụng embeded compiler, native call gì đó thì (theo ý mình) không khuyến khích. Vì kết nối phụ thuộc vào 2 ngôn ngữ. Như IronPython mà bạn PhongKyVo có nói, nó chỉ kết nối C# và Python thôi. Lỡ như thay Python bằng ngôn ngữ khác thì IronPython hết tác dụng.


Mình không phải là pro


(Văn Dương) #9

Python build thành *.dll. C# dùng PInvoke để gọi.


Mình chính là bờ dô đây =))


(Đạt Phạm) #10

Vì mình thấy việc dùng Python sẽ có lợi cho project của mình trong việc phát triển AI. Và việc dùng pyhon làm lõi sẽ chạy nhan hơn
Còn .Net sẽ có winform thuận lợi cho việc thiết kế giao diện.


(Đạt Phạm) #11

Ok bạn :grinning::grinning:


(Đạt Phạm) #12

Trước tiên thì cảm ơn bạn. Thánh toàn trả lời mấy câu hỏi ngu của mình. Và đa số đều giải quyết đc ý mình muốn. Và lần này để mình thử :grinning:


(Đạt Phạm) #13

Cho mình xin tài liệu về việc build Python thành .Dll đi


(Trần Hoàn) #14

Chắc là bạn kiếm được mã nguồn AI bằng Py ở đâu rồi về muốn lấy .NET ra đắp giao diện vào chứ gì :))
Chứ ai đời lại đi bảo Py nhanh hơn .NET bào giờ.


(Văn Dương) #15

À ý tưởng là như vậy vì mình hay dùng cách đó để kết hợp C/C++ với C# chứ chưa biết python tròn méo ra sao :smile: .
Thử google với từ khoá “compile python to dll” ra tố lô kết quả kìa.


(Đạt Phạm) #16

Ok :smiley::smiley::smiley:


(Đạt Phạm) #17

Căn bản là ban đầu mình học Python sau đó học qua C#. Việc sử dụng Python thích hợp phát triển AI và có nhiều thư viện hơn mà ! :stuck_out_tongue_winking_eye:


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