Bây giờ tôi đã có một vài sản phẩm nhiều khách thuê dựa trên web lớn, và tôi sẽ sớm thấy rằng sẽ có rất nhiều tùy chỉnh dành riêng cho người thuê.
Một trường bổ sung ở đây hoặc ở đó, có thể là một trang bổ sung hoặc một số logic bổ sung ở giữa quy trình công việc - đó là một thứ.
Một số tùy chỉnh này có thể được đưa vào sản phẩm cốt lõi, và điều đó thật tuyệt. Một số trong số chúng rất đặc biệt và sẽ cản trở mọi người khác.
Tôi có một vài ý tưởng trong việc quản lý việc này, nhưng không ai trong số họ dường như có quy mô tốt. Giải pháp rõ ràng là giới thiệu một tấn cài đặt cấp độ máy khách, cho phép các 'tính năng' khác nhau được bật trên cơ sở mỗi khách hàng. Nhược điểm với điều đó, tất nhiên, là sự phức tạp và lộn xộn lớn. Bạn có thể giới thiệu một số lượng lớn các cài đặt thực sự và theo thời gian, các loại logic (trình bày, kinh doanh) có thể vượt khỏi tầm kiểm soát. Sau đó, có vấn đề về các trường dành riêng cho khách hàng, yêu cầu một cái gì đó sạch hơn là chỉ thêm một loạt các trường không thể vào các bảng hiện có.
Vậy mọi người đang làm gì để quản lý việc này? Force.com dường như là bậc thầy về khả năng mở rộng; rõ ràng là họ đã tạo ra một nền tảng từ đầu đến mức siêu mở rộng. Bạn có thể thêm vào hầu hết mọi thứ với giao diện người dùng dựa trên web của họ. FogBugz đã làm một cái gì đó tương tự khi họ tạo ra một mô hình plugin mạnh mẽ, khi nghĩ về nó, có thể thực sự được truyền cảm hứng từ Force. Tôi biết họ đã dành rất nhiều thời gian và tiền bạc cho nó và nếu tôi không nhầm thì ý định thực sự là sử dụng nó trong nội bộ để phát triển sản phẩm trong tương lai.
Âm thanh giống như thứ mà tôi có thể bị cám dỗ để xây dựng nhưng có lẽ không nên. :)
Là một sự đầu tư lớn vào kiến trúc cắm được là cách duy nhất để đi? Làm thế nào bạn quản lý những vấn đề này, và bạn đang thấy loại kết quả nào?
EDIT: Có vẻ như FogBugz đã xử lý vấn đề bằng cách xây dựng một nền tảng khá mạnh mẽ và sau đó sử dụng nó để kết hợp màn hình của họ. Để mở rộng nó, bạn tạo một DLL chứa các lớp thực hiện các giao diện như ISearchScreenGridColumn và trở thành một mô-đun. Tôi chắc chắn rằng nó rất tốn kém để xây dựng vì họ có rất nhiều nhà phát triển và họ đã làm việc với nó trong nhiều tháng, cộng với diện tích bề mặt của họ có lẽ là 5% kích thước ứng dụng của tôi.
Ngay bây giờ tôi thực sự tự hỏi liệu Force.com có phải là cách đúng đắn để xử lý việc này không. Và tôi là một anh chàng ASP.Net cốt lõi, vì vậy đây là một vị trí kỳ lạ để thấy mình trong.