9 khung Python tốt nhất để xây dựng các ứng dụng từ nhỏ đến doanh nghiệp

Python vừa là một món đồ chơi thú vị vừa là một khẩu súng phun lửa đáng sợ. Tương tự với những gì bạn có thể làm với Python.


Python được yêu thích bởi những người có sở thích, các nhà khoa học và kiến ​​trúc sư.

Nó rất dễ dàng để bắt đầu, có khả năng trừu tượng hóa cao hơn và khả năng lập trình siêu dữ liệu để xây dựng các hệ thống lớn và phức tạp, và có rất nhiều thư viện để tải bất cứ thứ gì. Chắc chắn, có những hạn chế khi nói đến đồng thời và gõ mạnh, nhưng bạn có thể làm việc xung quanh chúng.

Trong bài viết này, chúng tôi sẽ đưa ra một số khung công tác Python tốt nhất khi xây dựng các ứng dụng web lớn và nhỏ.

Django

Các Django khung công tác đã vượt qua thử thách về thời gian khung web đi tới cộng đồng Python. Nếu bạn tấn công một nhà phát triển Python trong giấc ngủ của họ và buộc họ xây dựng một ứng dụng web tại gunpoint, họ sẽ tự động tiếp cận Django theo cách mà một Rubyist sẽ tiếp cận với Rails.

Và có một lý do tốt cho điều đó. Django, như khẩu hiệu nói, là một khung web cho những người cầu toàn với thời hạn. Nó có một thứ được gọi là khung pin dùng trong các bộ khung (bao gồm cả Python là ngôn ngữ bao gồm pin), cung cấp tất cả các chức năng phổ biến ngoài hộp.

Với các tính năng này, Django đồng loạt cắt giảm thời gian phát triển:

  • Một ORM tiện dụng và dễ chịu, với các chuyển đổi được tạo và áp dụng tự động bởi khung.
  • Giàn giáo để tạo bảng quản trị tự động dựa trên mô hình của bạn.
  • Hỗ trợ cookie, phiên, phần mềm trung gian, mẫu, v.v..
  • Các tính năng bảo mật như phòng chống XSS, phòng chống CRSF, v.v., được áp dụng tự động.
  • Thực tế hoạt động với tất cả các cơ sở dữ liệu ngoài đó (nó dễ dàng tìm thấy các bộ điều hợp trong đó có hỗ trợ chính thức không tồn tại)
  • Hỗ trợ hạng nhất cho dữ liệu địa lý và truy vấn không gian mặc dù GeoDjango

Và nhiều, nhiều hơn nữa. Đủ để nói Django là một khung web thân thiện, toàn diện.

Là Django cho bạn?

Hoàn toàn đồng ý.

Django có ý nghĩa tuyệt vời cho tất cả các trường hợp sử dụng, cho dù tạo mẫu nhanh hoặc lập kế hoạch cho một ứng dụng doanh nghiệp. Điểm mấu chốt duy nhất mà bạn sẽ gặp phải là cấu trúc khung sườn. Vì Django uốn cong về phía sau để giúp bạn phát triển nhanh chóng và dễ dàng, nên nó áp đặt cấu trúc của nó (một khái niệm gọi là quy ước trên cấu hình,) cho nhà phát triển, điều mà bạn có thể không đồng ý. Chẳng hạn, nếu bạn muốn thay thế Django ORM bằng một thứ khác (giả sử SQL Alchemy), hãy chuẩn bị cho những điều bất ngờ.

Quan tâm đến việc trở thành nhà phát triển stack đầy đủ với Django và Python? – Kiểm tra cái này khóa học trực tuyến tuyệt vời.

Bình giữ nhiệt

Trong khi Django chiếm gần như toàn bộ tư duy trong phát triển web Python, Bình giữ nhiệt là một ứng cử viên mạnh mẽ.

Trái ngược với Django, Flask là một khung siêu nhỏ, có nghĩa là nó tập trung vào việc lấy một vài thứ, những thứ tối thiểu đúng, và để phần còn lại cho bạn. Đây là phần còn lại tùy thuộc vào bạn, có thể là một nguồn của sự thất vọng hoặc vui thích, tùy thuộc vào mục tiêu của bạn là gì. Đối với những người biết họ làm gì và muốn tạo ra các ứng dụng web của họ một cách đáng yêu bằng cách chọn các thành phần theo lựa chọn của họ, Flask là một ơn trời.

Flask cung cấp các tính năng sau:

  • Định tuyến, tạo khuôn mẫu, quản lý phiên và các tính năng hữu ích khác.
  • Hỗ trợ đầy đủ cho thử nghiệm đơn vị
  • Một kiến ​​trúc tối thiểu, có thể cắm
  • Hỗ trợ REST hạng nhất
  • Hỗ trợ Blueprints, Flaskiên độc đáo về kiến ​​trúc cho các ứng dụng web nhỏ
  • Chọn gói của bạn cho ORM, di chuyển, vv.
  • Cấu trúc ứng dụng linh hoạt – đặt các tệp của bạn ở nơi chúng có ý nghĩa nhất đối với bạn
  • Phục vụ tập tin tĩnh
  • Tuân thủ WGSI

Là bình cho bạn?

Như đã nói, Flask là một khung web tối thiểu, với mọi thứ được chia thành các thành phần riêng lẻ mà bạn có thể trao đổi. Nếu bạn vội vàng xây dựng một nguyên mẫu, bạn sẽ dành nhiều thời gian để đưa ra các quyết định tầm thường trên cơ sở dữ liệu, cấu trúc thư mục, định tuyến, v.v., có thể chứng minh phản tác dụng. Flask hoạt động tốt nhất khi bạn tham gia vào một dự án ổn định, nghiêm túc từ quy mô trung bình đến lớn, đặc biệt là các API REST.

Chai

Nếu bạn nghĩ cách tiếp cận của Flask đã không đủ tối thiểu và bạn vẫn muốn kiểm soát nhiều hơn, hãy nói xin chào Chai.

Chai thoát ra nhiều hơn, đến mức phụ thuộc duy nhất là thư viện tiêu chuẩn Python. Điều này có nghĩa là không có cài đặt pip nào hoặc cài đặt pip này, mặc dù bạn rất có thể cần phải lâu. Ở đây, tại sao Chai lại nổi bật với một số người:

  • Triển khai một tập tin. Có, toàn bộ ứng dụng của bạn nằm trong một tệp .py ‘duy nhất.
  • Không phụ thuộc bên ngoài. Nếu bạn đã cài đặt phiên bản Python phù hợp, bạn sẽ rất tốt.
  • Cung cấp công cụ tạo khuôn mẫu của nó, có thể hoán đổi với Jinja2, Mako hoặc Cheetah.
  • Hỗ trợ cho các biểu mẫu, tiêu đề, cookie và tải lên tệp.
  • Máy chủ web tích hợp, có thể dễ dàng thay thế.

Là chai cho bạn?

Nếu bạn làm một ứng dụng thực sự nhỏ (giả sử, dưới 500 dòng mã) không có yêu cầu đặc biệt, Chai có thể có ý nghĩa rất lớn đối với bạn. Đó là một cách tiếp cận hoàn toàn vô nghĩa để tạo các ứng dụng web, nhưng trong thực tế, bạn sẽ thấy bạn bị cản trở nhiều hơn là được hỗ trợ bởi Chai. Lý do là thế giới thực luôn thay đổi và trước khi bạn biết điều đó. Yêu cầu mới sẽ được bỏ trên đầu của bạn. Tại thời điểm đó, đặt mọi thứ vào một tệp sẽ trở thành một việc vặt.

Ngoài ra, nếu bạn nghĩ Chai và Bình gần giống nhau, bạn có thể đúng. Đề xuất của sáp nhập hai ngày trở lại năm 2012, và thậm chí Armin, người tạo ra Flask, đồng ý với điều đó. Tuy nhiên, Marcel, người tạo ra Chai, duy trì sự phân biệt ý thức hệ nghiêm ngặt vì cách tiếp cận tập tin duy nhất và khẳng định rằng hai người vẫn tách biệt.

Zope

Zope là phức tạp để giải thích, nhưng tôi cố gắng. Đúng vậy, nó có một khung web có thể được sử dụng để xây dựng các ứng dụng lớn hay nhỏ, nhưng đó không phải là tất cả. Zope là một nền tảng bao gồm các công cụ (bao gồm các khung web) được tạo ra theo triết lý của Zope và được duy trì bởi Zope Corporation.

Zope có một số thành phần và tính năng thú vị phù hợp để phát triển ứng dụng doanh nghiệp:

  • Một thành phần đăng ký và khám phá kiến ​​trúc để cấu hình một ứng dụng lớn.
  • ZODB – (duy nhất) cơ sở dữ liệu đối tượng cho Python để lưu trữ các đối tượng nguyên bản.
  • Khung và tiêu chuẩn chính thức cho Hệ thống quản lý nội dung
  • Một tập hợp các khung ứng dụng web – một khung chính tắc vẫn được gọi là Zope, mặc dù một số khung mới (như Grok) đã được xây dựng trên đầu trang của nó.
  • Các tiêu chuẩn mạnh mẽ để phát triển, phát hành và bảo trì phần mềm.

Là Zope cho bạn?

Nếu bạn làm việc sau một môi trường có cấu trúc cao để xây dựng các ứng dụng thực sự lớn, thì Zope là tốt. Điều đó nói rằng, bạn cũng sẽ gặp phải vấn đề chia sẻ công bằng. Trong khi Zope tiếp tục phát triển, cộng đồng thực sự rất nhỏ, đến mức mà nhiều nhà phát triển Python chưa từng nghe về nó. Tìm hướng dẫn và tài liệu mở rộng là khó, vì vậy hãy chuẩn bị để thực hiện nhiều công việc đào bới (mặc dù cộng đồng thực sự hữu ích!). Ngoài ra, các nhà phát triển Python mà bạn gặp có thể không muốn tìm hiểu Zope và về pha loãng bộ kỹ năng của họ.

TurboGears

TurboGears là một khung rất linh hoạt có kiến ​​trúc tổng hợp thực sự. Nó sắp xếp một khung theo tỷ lệ theo nhu cầu của bạn và bạn có thể sử dụng nó để xây dựng một ứng dụng một tập tin hoặc một ứng dụng nhiều người thuê.

TurboGears có một số tính năng thanh lịch, một số tính năng không có trong các khung phổ biến (như Django) hoặc khó xây dựng:

  • Hỗ trợ hạng nhất cho nhiều cơ sở dữ liệu
  • Giao dịch đa cơ sở dữ liệu
  • Có tính mô-đun cao – bắt đầu với một tệp duy nhất và mở rộng ra bao nhiêu tùy ý
  • Một ORM mạnh mẽ (SQLAlchemy, trưởng thành và có khả năng hơn Django Lừa đảo ORM)
  • Kiến trúc có thể cắm được dựa trên đặc tả WSGI
  • Hỗ trợ tích hợp để bảo vệ cơ sở dữ liệu
  • Giao diện điều khiển chức năng trái ngược với hệ thống phân cấp hướng đối tượng sâu, cứng nhắc.

Là TurboGears cho bạn?

Nếu bạn muốn phát triển một cách hạnh phúc và muốn một khuôn khổ được thử nghiệm, trưởng thành và mạnh mẽ tránh xa tiếng ồn truyền thông của thành công tuyệt vời, thì thế hệ tiếp theo và tất cả những thứ đó, TurboGears là một sự phù hợp tuyệt vời. Nó rất được kính trọng trong cộng đồng và có tài liệu đầy đủ, rộng rãi. Chắc chắn, TurboGears không phải là ý kiến, có nghĩa là thời gian thiết lập và cấu hình ban đầu có thể nhiều hơn, nhưng nó là khung lý tưởng để phát triển ứng dụng doanh nghiệp.

Web2py

Web2py bắt đầu như một dự án sở thích và được phát hành vào năm 2007. Mục tiêu của nó là làm cho việc phát triển web trở nên dễ dàng và dễ tiếp cận với mọi người.

Do đó, Web2py áp dụng cách tiếp cận phụ thuộc bằng không đến mức cực đoan – nó không có yêu cầu, không có gì để cài đặt và bao gồm trình chỉnh sửa dựa trên Web đầy đủ tính năng để phát triển, quản lý cơ sở dữ liệu, cũng như triển khai.

Bạn gần như có thể nghĩ về nó như Android Studio, đây là một môi trường hoàn chỉnh hơn là một khung công tác. Một số tính năng hay mà Web2py có, là:

  • Hầu như không có đường cong học tập.
  • Lõi tối thiểu (chỉ có 12 đối tượng), thậm chí có thể ghi nhớ!
  • Tạo khuôn tinh khiết-Python
  • Bảo vệ chống lại XSS, CSRF và các cuộc tấn công khác
  • API dễ chịu và nhất quán

Là Web2py cho bạn?

Web2py là một khung công tác ổn định và thú vị, nhưng khó có thể đề xuất nó với các tùy chọn khác như Django, Flask, v.v. Hầu như không có công việc nào, và câu chuyện thử nghiệm đơn vị không hay. Điều đó nói rằng, bạn có thể thích API mã và trải nghiệm tổng thể mà khung cung cấp, đặc biệt là nếu bạn xây dựng API REST.

CherryPy

CherryPy là một microframework khác nhằm cung cấp chức năng khung cơ bản và nhanh chóng thoát khỏi lối mòn.

Trong khi nó có thể so sánh với các chương trình vi mô khác như Flask, CherryPy tự hào về một số điểm khác biệt:

  • Nó chứa một máy chủ đa luồng tích hợp (một cái gì đó vẫn còn trong danh sách mong muốn của Flask)
  • Máy chủ web (đơn) có thể lưu trữ nhiều ứng dụng!
  • Phục vụ ứng dụng của bạn dưới dạng ứng dụng WSGI (để giao tiếp với các ứng dụng WSGI khác) hoặc máy chủ HTTP đơn giản (hoạt động tốt hơn)
  • Hỗ trợ hạng nhất cho hồ sơ và kiểm tra đơn vị
  • Chạy trên PyPy (dành cho những người nghiện hiệu suất thực sự), Jython và thậm chí cả Android

CherryPy thực hiện tất cả điều này, và sau đó bạn thường mong đợi từ một khung web.

CherryPy dành cho bạn?

Nếu bạn chủ yếu xây dựng các dịch vụ RESTful, CherryPy là một ứng cử viên nghiêm trọng hơn nhiều so với Flask. Nó có một khuôn khổ hàng thập kỷ đã trưởng thành độc đáo và phù hợp cho các ứng dụng lớn và nhỏ.

Sanic

Sự nổi lên của Node và mô hình lập trình không đồng bộ của nó khiến nhiều cộng đồng cảm thấy lạc hậu, bao gồm cả Python Python. Đáp lại, một loạt các khung web không đồng bộ đã xuất hiện trên radar, Sanic là một trong số họ.

Sanic được truyền cảm hứng rất nhiều từ Flask, đến mức nó đã mượn các nhà trang trí tuyến đường, Bản thiết kế, và các dòng móc và tàu chìm cơ bản khác. Và họ không xấu hổ khi thừa nhận điều đó. Những gì Sanic mang đến cho bàn, nếu bạn là một người hâm mộ Flask, là I / O không chặn thực sự để đáp ứng các mức hiệu suất của ứng dụng Node. Nói cách khác, Sanic là Flask với async / đang chờ hỗ trợ!

Khi so sánh với CherryPy, Sanic có lợi thế về hiệu suất đáng kinh ngạc (chỉ cần nghĩ về cách nó sẽ giành chiến thắng trước Flask!). Kiểm tra các kết quả sau đây được kiểm tra bởi Dữ liệu:

Như bạn có thể thấy, một khi số lượng đồng thời bắt đầu vượt quá 50 mỗi giây, CherryPy thực tế bóp cổ và đưa ra tỷ lệ thất bại cao.

Là Sanic cho bạn?

Trong khi các đặc tính hiệu suất của Sanic thổi bay mọi thứ khác ra khỏi nước, nó có thể không phải là lựa chọn tốt nhất cho dự án tiếp theo của bạn. Lý do chính là thiếu các thư viện không đồng bộ. Phần lớn các công cụ và thư viện Python hiện tại đã được viết cho phiên bản CPython đơn luồng, không có dự đoán cho các hoạt động đồng thời hoặc không đồng bộ cao. Ví dụ: nếu ORM yêu thích của bạn không hỗ trợ các hoạt động không đồng bộ, toàn bộ điểm sử dụng Sanic sẽ bị đánh bại.

Vì những lý do trưởng thành và khả dụng này, chúng tôi đã giành chiến thắng trong việc kiểm tra bất kỳ khuôn khổ không đồng bộ nào nữa trong Python.

Masonit

Tôi đã bắt gặp khuôn khổ này một thời gian trước đây và nghĩ rằng đó là một bước đi đúng hướng. Kể từ đó, phiên bản 2.0 đã được phát hành và tôi cảm thấy như đã đến lúc phải đưa ra Masonit một số tình yêu.

Nói một cách đơn giản, Masonite là phiên bản Python của Laravel (một khung công tác PHP nổi tiếng, trong trường hợp bạn không biết). Tại sao lại là vấn đề đó? Điều này quan trọng bởi vì Laravel được xây dựng dựa trên các nguyên tắc của Ruby on Rails, và hai khung này cho phép các nhà phát triển không phải là Ruby trải nghiệm cách thức Rails của Rails..

Các nhà phát triển của Laravel (và ở một mức độ nào đó, Rails) sẽ cảm thấy như ở nhà và sẽ hoạt động ngay lập tức. Khi tôi thử Masonite (và tôi đã gửi một hoặc hai vấn đề, bao gồm cả lỗi!), Tôi đã có thể xây dựng API REST với suy nghĩ chính xác bằng không vì bộ nhớ cơ bắp của tôi đang làm mọi thứ.

Là một khung đầy đủ, bao gồm pin, Masonite mang đến một số điều thú vị cho bảng:

  • Kiểu ghi hoạt động ORM
  • Di chuyển cơ sở dữ liệu (không giống như Django, cần được tạo bởi nhà phát triển)
  • Một IoC Container mạnh mẽ để tiêm phụ thuộc
  • Sở hữu CLI (được gọi là thủ công trực tuyến) cho các nhiệm vụ giàn giáo và chạy
  • Hỗ trợ hạng nhất để thử nghiệm đơn vị

Đối thủ lớn nhất của nhóm đối với những người khác của Mason đối với Masonite là Django, vì cộng đồng đang nỗ lực hết sức để tiếp thị khuôn khổ một cách dễ dàng, thú vị và là điều lớn tiếp theo. Liệu nó có vượt qua Django hay không là điều mà thời gian sẽ trả lời (nếu bạn hỏi tôi, nó có bắn hay không), nhưng để thảo luận so sánh hai thứ này, hãy xem đâyđây.

Là Masonite cho bạn?

Masonite vẫn còn là một đứa bé khi so sánh với Django, vì vậy, không có cách nào có thể khuyến nghị đối với Django. Điều đó nói rằng, nếu bạn làm theo cách của Rails (hay cách của Laravel), bạn sẽ đánh giá cao những gì Masonite cung cấp. Nó rất lý tưởng để xây dựng nhanh các nguyên mẫu cần mọi thứ được cấu hình sẵn và dễ dàng chuyển đổi.

Phần kết luận

Không có thiếu các khung web Python ngoài kia, lớn và nhỏ. Mặc dù bạn có thể nhận được khá nhiều thứ cho một dự án nhỏ, một ứng dụng doanh nghiệp có những yêu cầu mà không nhiều khung trong số này có thể đáp ứng. Nếu bạn hỏi tôi, để phát triển doanh nghiệp, Django (ở một mức độ nào đó), Zope và TurboGears là những gì bạn nghĩ đến. Và ngay cả trong số đó, tôi đã nghiêng về TurboGears.

Điều đó nói rằng, bất kỳ kiến ​​trúc sư nào xứng đáng với muối của anh ta đều có thể lấy một microframework và tung ra kiến ​​trúc của họ. Và đây là khá nhiều những gì xảy ra trong thực tế, điều này giải thích cho sự thành công của Flask và những ý tưởng tương tự.

Nếu bạn là người mới, thì khóa học trực tuyến này sẽ rất hữu ích khi học Python.

THẺ

  • Con trăn

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map