15

Mỗi tên miền nào trong số những kiến ​​trúc phần mềm này tỏa sáng hoặc thất bại?Trình tạo mã so với ORM so với Quy trình được Lưu trữ

Yêu cầu quan trọng nào sẽ nhắc bạn chọn cái này so với yêu cầu khác?

Hãy giả sử rằng bạn có nhà phát triển sẵn sàng có thể làm mã định hướng đối tượng tốt cũng như phát triển cơ sở dữ liệu tốt.

Ngoài ra, vui lòng tránh các cuộc chiến tranh thánh :) tất cả ba công nghệ đều có ưu và khuyết điểm, tôi quan tâm đến nơi thích hợp nhất để sử dụng.

Trả lời

13

Mỗi một trong các công cụ này cung cấp các lớp trừu tượng khác nhau, cùng với các điểm khác nhau để ghi đè hành vi. Đây là những lựa chọn kiến ​​trúc, và tất cả các lựa chọn kiến ​​trúc phụ thuộc vào sự cân bằng giữa công nghệ, kiểm soát và tổ chức, cả bản thân ứng dụng và môi trường nơi nó sẽ được triển khai.

  • Nếu bạn đang làm việc với một nền văn hóa nơi DBA 'cai trị', thì kiến ​​trúc dựa trên quy trình lưu trữ sẽ dễ triển khai hơn. Mặt khác, nó có thể rất khó khăn để quản lý và phiên bản thủ tục lưu trữ.

  • Trình tạo mã tỏa sáng khi bạn sử dụng ngôn ngữ được nhập tĩnh, vì bạn có thể gặp lỗi tại thời gian biên dịch thay vì tại thời gian chạy.

  • ORM lý tưởng cho các công cụ tích hợp, nơi bạn có thể cần phải xử lý các RDBMS và lược đồ khác nhau trên cơ sở cài đặt để cài đặt. Thay đổi một bản đồ và ứng dụng của bạn đi từ làm việc với PeopleSoft trên Oracle để làm việc với Microsoft Dynamics trên SQL Server.

Tôi đã nhìn thấy các ứng dụng mà Mã được tạo được sử dụng để giao tiếp với Thủ tục được lưu trữ, vì các thủ tục được lưu trữ có thể được điều chỉnh để tránh các giới hạn trong trình tạo mã.

Cuối cùng, câu trả lời đúng duy nhất sẽ phụ thuộc vào vấn đề bạn đang cố giải quyết và môi trường nơi giải pháp cần thực thi. Bất cứ điều gì khác là tranh cãi cách phát âm chính xác của 'khoai tây'.

+0

Cảm ơn bạn đã trả lời! – Sklivvz

+0

Tôi biết rằng đây là một bài viết cũ, nhưng một điểm tích cực cho ORM là họ thường quản lý bộ nhớ đệm ra khỏi hộp, đó là một PITA nếu bạn muốn làm với các thủ tục được lưu trữ vì nó đã được thực hiện bằng tay. – Augusto

5

Tôi đồng ý rằng có những ưu và khuyết điểm đối với mọi thứ và rất nhiều phụ thuộc vào kiến ​​trúc của bạn. Điều đó đang được nói, tôi cố gắng sử dụng ORM nơi nó có ý nghĩa. Rất nhiều chức năng đã có sẵn và thường chúng giúp ngăn chặn SQL Injection (cộng với nó giúp tránh tái phát minh ra bánh xe).

Xin xem hai bài viết khác về chủ đề này (SQL động vs thủ tục lưu trữ vs ORM) để biết thêm thông tin

động SQL vs thủ tục lưu trữ
Which is better: Ad hoc queries, or stored procedures?

ORMs vs lưu trữ thủ tục
Why is parameterized SQL generated by NHibernate just as fast as a stored procedure?

+0

Bạn không trả lời cho câu hỏi của mình ... – Sklivvz

3

ORMs and c máy phát điện ode là loại ở một bên của sân, và các thủ tục lưu trữ là trên một mặt khác. Thông thường, việc sử dụng ORM và trình tạo mã trong các dự án greenfield dễ dàng hơn, bởi vì bạn có thể điều chỉnh giản đồ cơ sở dữ liệu của mình để phù hợp với mô hình miền bạn tạo. Sẽ khó sử dụng chúng hơn với các dự án kế thừa, bởi vì một khi phần mềm được viết với tư duy "dữ liệu đầu tiên", rất khó để kết hợp nó với một mô hình miền.

Điều đó đang được nói, cả ba phương pháp tiếp cận đều có giá trị. Các thủ tục được lưu trữ có thể dễ dàng hơn để tối ưu hóa, nhưng nó có thể hấp dẫn để đặt logic nghiệp vụ trong chúng có thể được lặp đi lặp lại trong chính ứng dụng đó. ORM hoạt động tốt nếu lược đồ của bạn khớp với khái niệm ORM, nhưng có thể khó tùy chỉnh nếu không. Các trình tạo mã có thể là nền tảng trung bình tốt, vì chúng cung cấp một số lợi ích của ORM nhưng cho phép tùy chỉnh mã được tạo ra - tuy nhiên, nếu bạn có thói quen thay đổi mã đã tạo, thì bạn có hai vấn đề, bởi vì bạn sẽ phải thay đổi nó mỗi khi bạn tạo lại nó.

Không có câu trả lời đúng, nhưng tôi có khuynh hướng hướng tới phía ORM hơn vì tôi tin rằng có ý nghĩa hơn khi suy nghĩ với tư duy đối tượng đầu tiên.

2

Stored Procedure

  • Ưu điểm: Đóng gói mã truy cập dữ liệu và là ứng dụng độc lập
  • Nhược điểm: Có thể RDBMS cụ thể và tăng thời gian phát triển

ORM

Ít nhất một số ORMs cho phép ánh xạ tới các thủ tục lưu trữ

  • Ưu điểm: Abstracts mã truy cập dữ liệu và cho phép tổ chức các đối tượng phải được viết bằng
  • Nhược điểm miền cụ thể cách: có thể thực hiện overhead và khả năng lập bản đồ có giới hạn

Tạo mã

  • Ưu điểm: có thể được sử dụng để tạo ra lưu trữ-proc dựa mã hoặc một ORM hoặc kết hợp cả hai
  • Nhược điểm: lớp phát Mã có thể phải được duy trì, thêm vào sự hiểu biết tạo ra mã
10

Tôi sẽ thêm hai của tôi cent:

Stored procedures

  • Có thể dễ dàng tối ưu hóa
  • Tóm tắt quy tắc kinh doanh cơ bản, nâng cao tính toàn vẹn dữ liệu
  • Cung cấp một mô hình bảo mật tốt (không cần phải cấp quyền đọc hoặc ghi đối với người dùng db phía trước)
  • Tỏa sáng khi bạn có nhiều đơn đăng ký ns truy cập vào cùng một dữ liệu

ORMs

  • Cho phép bạn chỉ tập trung vào các tên miền và có một cách tiếp cận nhiều hơn "tinh khiết" đối tượng định hướng cho sự phát triển
  • Bóng khi ứng dụng của bạn phải chéo db tương thích
  • Tỏa sáng khi ứng dụng của bạn chủ yếu là do hành vi thay vì dữ liệu

Mã phát

  • Cung cấp bạn những lợi ích tương tự như ORMs, với chi phí bảo dưỡng cao hơn, nhưng với khả năng tùy chỉnh tốt hơn.
  • Are thường vượt trội so với ORMs trong ORMs có xu hướng giao dịch lỗi thời gian biên dịch cho các lỗi thời gian chạy, mà nói chung là để tránh
2

Bạn quên một lựa chọn đáng kể mà xứng đáng là một chủng loại riêng của mình: một dữ liệu hybrid khung bản đồ như iBatis.

Tôi đã hài lòng với iBatis vì nó cho phép mã OO của bạn vẫn là OO trong tự nhiên, và cơ sở dữ liệu của bạn vẫn còn quan hệ trong tự nhiên và giải quyết sự không phù hợp trở kháng bằng cách thêm trừu tượng thứ ba (lớp bản đồ giữa các đối tượng và quan hệ) đó là trách nhiệm lập bản đồ hai, thay vì cố gắng để phù hợp với một mô hình vào khác.

+2

Công cụ tuyệt vời, nhưng tôi sẽ phân loại nó về cơ bản là một ORM ... – Sklivvz