Tôi đã viết ứng dụng web nhiều bên thuê trong MVC2. Thêm/xóa một tài khoản phức tạp như việc thêm/xóa một hàng trong một bảng khi tôi đã chọn cơ sở dữ liệu được chia sẻ, phương pháp lược đồ được chia sẻ.
Đây là một bài viết rất tốt về thiết kế cơ sở dữ liệu đa người thuê nhà từ MSDN: Multi-Tenant Data Architecture
Tất cả tôi phải làm trong MVC là để thiết lập định tuyến đúng cách, vì vậy phần đầu tiên của con đường là tên tài khoản :
- www.yourdomain.com/Account1/...
- www.yourdomain.com/Account2/...
- www.yourdomain.com/Account3/...
và tôi có một MvcHandler tùy chỉnh cho nhìn lên tài khoản cho mỗi yêu cầu:
public class AccountMvcHandler : MvcHandler
{
public AccountModel Account { get; set; }
public AccountMvcHandler(RequestContext requestContext)
: base(requestContext)
{
}
protected override IAsyncResult BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, object state)
{
string accountName = this.RequestContext.RouteData.GetRequiredString("account");
Account = ServiceFactory.GetService<IAccountService>().GetAccount(accountName);
// URL doesn't contain valid account name - redirect to login page with Account Name textbox
if (Account == null)
httpContext.Response.Redirect(FormsAuthentication.LoginUrl);
return base.BeginProcessRequest(httpContext, callback, state);
}
}
Như người ta nói bởi Andreas Paulsson cụm từ quan trọng là "hội tùy chỉnh". Tại sao bạn cần 'hội đồng tùy chỉnh' để cấu hình?Bạn đang sử dụng CodeEmit? Người dùng có tải chúng lên không? Tôi thà suy nghĩ về việc sử dụng Windows Workflow Foundation cho bất kỳ tùy chỉnh logic nghiệp vụ cụ thể nào của khách hàng.
Nguồn
2010-10-20 05:35:27
Tôi thứ hai, cụm từ khóa là "hội đồng tùy chỉnh". –
Ok, tôi chắc chắn sẵn sàng xem xét điều đó, nhưng tôi có một vài lo ngại. Một - tất cả các ứng dụng nên có cùng một URL gốc ... điều này thậm chí có thể? Hai - việc tạo và xóa cần tự động ... tôi có nên sử dụng WMI cho điều đó không? Tôi không biết làm thế nào tôi cảm thấy về điều đó ... Và bao nhiêu webapps IIs hỗ trợ nào? Điều đó có quy mô trong một đám mây phần cứng, vì giới hạn sẽ là os? Ba - chúng tôi muốn giải pháp này được Azure tương thích (nhưng không Azure cụ thể), vì vậy làm thế nào tôi sẽ đi về việc quản lý nó cho Azure? – Jeff
Ngoài ra, bạn sẽ đề xuất xử lý tài nguyên được chia sẻ (trang) như thế nào? Một VirtualPathProvider trích xuất trang từ các dll được chia sẻ? – Jeff