2010-08-14 18 views
5

Tôi là một nhà phát triển PHP, tôi đã đọc về các công nghệ Java EE và tôi muốn thực hiện các công nghệ đó (n-tier, EJB, JPA ...) với PHP và tất cả những gì sắp tới với (MySQL, Apache ...).Nhà phát triển PHP đang tìm kiếm các giải pháp tương đương với kiến ​​trúc Java EE

+0

Chúng tôi đã chuyển Java Message Services sang PHP https://github.com/php-enqueue/enqueue-dev/blob/master/docs/quick_tour.md#transport. Hy vọng nó có ích. –

Trả lời

9

Không.

PHP không phải là Java. Viết mã PHP như bạn muốn viết mã Java là ngớ ngẩn và phản tác dụng. Nó rất có khả năng để làm cho các nhà bảo trì trong tương lai của mã muốn làm tổn thương bạn.

Cần duy trì một đối tượng? Use an ORM.

Cần kiến ​​trúc nhiều tầng? Nếu bạn thiết kế mã của mình với sự phân tách thích hợp các mối quan tâm, bạn đã nhận được 9/10 đường đi ở đó.

EJB? Mỗi lần tôi đọc bài viết trên Wikipedia, chúng được mô tả khác nhau. Các thành phần có thể tái sử dụng? Với giao diện chuẩn hóa cho cái gì, ứng dụng phân tán và sự bền vững của dữ liệu? Hữu ích, vâng, nhưng đó không phải là PHP. ORM và a good message/work queue sẽ hoàn thành công việc.

Dòng dưới cùng: Đối với phần lớn các tập lệnh PHP, bạn sẽ không cần bất kỳ "công nghệ doanh nghiệp" nào. Nếu bạn làm như vậy, bạn đang làm sai điều gì đó: bạn đã có quá nhiều ứng dụng hoặc bạn đã chọn nền tảng sai.

Bắt đầu bằng cách chọn a modern PHP framework và xây dựng ứng dụng của bạn từ đó. Nếu bạn đến từ Java, thì Zend Framework sẽ có vẻ ít nhất là người nước ngoài. Kohana, Symfony và CodeIgniter đều đáng giá. Tránh ăn bánh ngay bây giờ.

Giữ đơn giản và bạn không thể làm sai.

+0

EJB có liên quan đến ORM, có thuật ngữ Java JPA (Java Persistence Architecture). – Powerlord

0

Câu hỏi của bạn là một câu hỏi sâu sắc. Đó là bởi vì khi doanh nghiệp của bạn trở nên thành công hơn, doanh nghiệp sẽ phải tăng số lượng lên để hỗ trợ tải lưu lượng truy cập nhiều hơn. Vì vậy, bạn sẽ phải tách mã PHP của bạn vào lớp chạy trên riêng tầng (hoặc máy chủ riêng biệt hoặc máy ảo riêng biệt như với Xen.)

Ví dụ, tôi đã thiết kế một hệ thống năm ngoái thực hiện trong PHP trên 10 máy chủ Linux OpenSUSE chạy khoảng 25 máy ảo (VM). Một số máy ảo là cân bằng tải, một số là tầng trước, một số là tầng giữa và một số là tầng sau, một số có cơ sở dữ liệu MySQL và chúng tôi có một vài của các máy chủ chuyên dụng là mảng RAID để lưu trữ tệp của người dùng. Chúng tôi tạo NFS gắn kết khi cần thiết để lưu/đọc các tập tin đến/từ mảng RAID.

Chúng tôi nhóm các cấp thành ba nhóm liên quan, vì vậy chúng tôi có thể có các trang web thử nghiệm độc lập cho QA, Dàn xếp (Chấp nhận người dùng) và Sản xuất.

Vì vậy, phần mềm PHP của chúng tôi đã được tách ra thành các lớp lỏng lẻo-coupled như sau:

front-end TIER (VM)

  • Application Layer (cổng 80) - bao gồm phản ứng AJAX, xác nhận mã, điều hướng, v.v.
  • lớp Quản trị (cổng 443) - bao gồm Bảng điều khiển quản trị với quyền truy cập vào các số liệu hệ thống và Unit Test khai thác
  • cung cấp dịch vụ (port 443) - Secure RESTful Web Services API (với token) để cung cấp dịch vụ đối tác và những người khác sử dụng hệ thống làm nền tảng "."

MIDDLE TIER (VM)

  • Business Logic Layer - tính toán cụ thể cho các hệ thống hoặc kinh doanh, hoặc vai trò và quyền cho trường hợp sử dụng khác nhau
  • Khả năng cộng tác Layer - ủy quyền và bài đăng lên mạng xã hội hoặc ứng dụng Đối tác, v.v.

back-end TIER (VM)

  • Data Access Layer - xử lý SQL truy vấn, chèn, cập nhật, xóa để cơ sở dữ liệu (thực hiện như chuẩn bị cáo) trong một cách mà có thể thích nghi khi cơ sở dữ liệu thay đổi thành một loại khác ... ví dụ: từ PostgreSQL thành MySQL hoặc ngược lại. Bao gồm mã PHP để sao lưu và khôi phục cơ sở dữ liệu.

Ý tưởng người trả lời khác được đưa ra bằng cách sử dụng Framework cho phần mềm doanh nghiệp có vẻ khá ngớ ngẩn với tôi. Nếu bạn đang phát triển một dự án sinh viên hoặc một "bằng chứng khái niệm" trên một máy chủ duy nhất, và nếu bạn đã quen thuộc với một khuôn khổ, nó có thể có cách sử dụng để tạo mẫu nhanh.

Nhưng như bạn thấy từ trên, khi bạn đang viết mã chất lượng sản xuất, được phân phối trên nhiều tầng, bạn không cần dùng nạng sử dụng khung.

Bạn sẽ đặt khuôn khổ để liên kết vào tất cả các địa điểm trong mã của mình ở đâu? Trên mỗi tầng? Ý tưởng tồi. Khung bao gồm nhiều trang mà bạn có thể cần và bạn có thể không cần. Vì vậy, họ làm chậm hiệu suất, đặc biệt là khi nhân với mỗi tầng mà bạn phải cài đặt chúng.

Không kém hiệu quả sẽ tạo ra một “lớp” chỉ để chứa một khung mà mọi lớp khác sẽ phải gọi. Lợi ích của các lớp phần mềm được kết nối lỏng lẻo và độc lập với các lớp khác, để khi thay đổi xảy ra trong một lớp, chúng không yêu cầu thay đổi trong lớp khác.

Bên cạnh đó, các nhà phát triển viết mã chất lượng sản xuất không cần phải dựa vào "con dao quân đội swiss" mà Khung đại diện. Các nhà phát triển như vậy có khả năng viết mã hiệu quả được nhắm mục tiêu và, nếu cần thiết, tái sử dụng các lớp trong thư viện mà họ có thể đã phát triển cho các dự án trước đó.

+1

Cảm ơn bạn đã chia sẻ trải nghiệm của mình –

Các vấn đề liên quan