Tôi không phải là một fan hâm mộ của các thủ tục lưu trữ
Các thủ tục được lưu trữ có thể duy trì THÊM vì: * Bạn không phải biên dịch lại ứng dụng C # của mình bất cứ khi nào bạn muốn thay đổi một số SQL
Cuối cùng, bạn sẽ biên dịch lại nó khi kiểu dữ liệu thay đổi hoặc bạn muốn trả về một cột bổ sung hoặc bất cứ điều gì. Số lần bạn có thể 'minh bạch' thay đổi SQL từ bên dưới ứng dụng của bạn khá ít
- Bạn cuối cùng sử dụng lại mã SQL.
Ngôn ngữ lập trình, bao gồm C #, có điều tuyệt vời này, được gọi là hàm. Nó có nghĩa là bạn có thể gọi cùng một khối mã từ nhiều nơi! Kinh ngạc! Sau đó, bạn có thể đặt mã SQL có thể sử dụng lại vào một trong những mã này hoặc nếu bạn muốn có được công nghệ thực sự cao, bạn có thể sử dụng một thư viện dành cho bạn. Tôi tin rằng chúng được gọi là Mappers đối tượng quan hệ, và khá phổ biến ngày nay.
Lặp lại mã là điều tồi tệ nhất bạn có thể làm khi bạn đang cố gắng xây dựng một ứng dụng có thể bảo trì!
Đồng ý, đó là lý do tại sao Storageprocs là một điều xấu. Việc tái cấu trúc và phân tách (chia thành các phần nhỏ hơn) thành các hàm dễ dàng hơn nhiều so với SQL thành ... các khối SQL?
Bạn có 4 máy chủ web và một loạt các ứng dụng Windows sử dụng cùng một mã SQL Bây giờ bạn đã nhận ra rằng có một vấn đề nhỏ với mã SQl, vì vậy, thay vào đó, hãy thay đổi Proc ở 1 vị trí hoặc đẩy mã lên tất cả máy chủ web, cài đặt lại tất cả các ứng dụng máy tính để bàn (clickonce có thể giúp) trên tất cả các hộp cửa sổ
Tại sao các ứng dụng windows của bạn kết nối trực tiếp với cơ sở dữ liệu trung tâm? Điều đó có vẻ như là một lỗ hổng bảo mật HUGE ngay tại đó, và tắc nghẽn khi nó loại trừ bộ nhớ đệm phía máy chủ. Họ không nên kết nối thông qua một dịch vụ web hoặc tương tự như các máy chủ web của bạn?
Vì vậy, đẩy 1 sproc mới, hoặc 4 weberervers mới?
Trong trường hợp này, việc đẩy một sproc mới sẽ dễ dàng hơn, nhưng theo kinh nghiệm của tôi, 95% 'thay đổi được đẩy' ảnh hưởng đến mã chứ không phải cơ sở dữ liệu. Nếu bạn đang đẩy 20 thứ vào máy chủ web trong tháng đó và 1 vào cơ sở dữ liệu, bạn khó có thể mất nhiều thứ nếu thay vào đó bạn đẩy 21 thứ vào máy chủ web và 0 cho cơ sở dữ liệu.
Mã dễ dàng hơn được xem xét.
Bạn có thể giải thích như thế nào? Tôi không hiểu điều này. Đặc biệt là các sprocs có thể không kiểm soát nguồn và do đó không thể được truy cập thông qua các trình duyệt SCM dựa trên web, v.v.
Thêm khuyết điểm:
Storedprocs sống trong cơ sở dữ liệu, xuất hiện với thế giới bên ngoài dưới dạng hộp đen. Những điều đơn giản như muốn đưa chúng vào kiểm soát nguồn trở thành một cơn ác mộng.
Cũng có vấn đề về nỗ lực tuyệt đối. Có thể có ý nghĩa khi chia mọi thứ thành một triệu bậc nếu bạn cố gắng biện minh cho Giám đốc điều hành của mình tại sao chỉ tốn 7 triệu đô la để xây dựng một số diễn đàn, nhưng nếu không, việc tạo ra một chương trình lưu trữ cho mọi việc nhỏ chỉ là lừa đảo thêm lợi ích.