2008-09-18 20 views
7

Tôi đang xem xét sử dụng Bộ đánh chặn của Castle Windsor để lưu dữ liệu để giúp tăng quy mô trang web asp.net.Máy đánh chặn Windsor AOP & Caching

Có ai có bất kỳ suy nghĩ/kinh nghiệm nào về việc này không?

rõ nhỏ: Ý định của tôi là sử dụng Windsor để đánh chặn 'đắt' cuộc gọi và đại biểu đến memcached hay Velocity (hoặc một bộ nhớ cache phân phối) cho bộ nhớ đệm riêng của mình.

Trả lời

2

Tôi đã sử dụng bộ đệm trang trí (không phải bộ chặn) với Windsor và chúng hoạt động rất tốt.

Bộ chặn cũng tốt cho điều này, xem ví dụ this.

+0

Cảm ơn, Mausch. Tôi cũng đã đi xuống con đường trang trí. –

+4

Caching decorators? Làm thế nào mà khác với interceptor? về việc khai báo bằng cách sử dụng đăng ký lưu loát? Ví dụ xin vui lòng. – IanT8

+0

Thật tuyệt vời khi có một ví dụ về những người trang trí này. – Remotec

-2

Windsor rất tuyệt, nhưng tại sao lại sử dụng tính năng này để lưu vào bộ nhớ đệm khi bạn có một số cách tích hợp để lưu trữ dữ liệu. Windsor có nền tảng của nó trong các lĩnh vực khác không nhất thiết phải bộ nhớ đệm. Từ đối tượng bộ nhớ cache đến phiên tới cookie. Có rất nhiều cách để cache. Quan trọng hơn trong các ứng dụng lớn, bạn cần phân phối bộ nhớ đệm. MS đang làm việc trên một sản phẩm cho điều đó và có một vài nhà cung cấp tốt ra khỏi đó có sản phẩm trên thị trường.

+0

Cảm ơn, Thomas. Ý định của tôi là sử dụng Windsor để chặn các cuộc gọi 'tốn kém' và ủy quyền cho MemCacheD hoặc Velocity cho chính bộ nhớ đệm. –

0

Tôi muốn xem số Microsoft Velocity. Nếu bạn có kế hoạch tạo ứng dụng Enterprise, đây có thể là giải pháp tốt

1

Bạn đang triển khai quyền truy cập dữ liệu của mình như thế nào? Nếu bạn sử dụng NHibernate, tôi sẽ đề nghị bộ nhớ đệm ở đây. NHibernate đi kèm với các chiến lược bộ nhớ cache cho bộ nhớ cache tích hợp .NET, memcached (thông qua NMemcachD) và Velocity. Tôi đã sử dụng memcached extensivly cho các ứng dụng cấp doanh nghiệp và không có vấn đề gì với nó.

Cơ chế lưu bộ nhớ đệm dựa trên cơ sở là một ý tưởng thú vị, một ý tưởng mà tôi chưa từng nghĩ đến trước đây. Nó sẽ rất dễ dàng để minh bạch áp dụng. Người ta nghĩ rằng tôi thích sử dụng các tính năng AOP của Castle là bởi vì nó dựa trên proxy, bạn không phải gây ô nhiễm mã của bạn với các thuộc tính.

+0

cảm ơn, chris Thật không may chỉ một phần nhỏ dữ liệu đến từ NHibernate. Phần lớn dữ liệu đến từ Sharepoint và có nhu cầu tổng hợp siêu dữ liệu trên nhiều danh sách (đừng hỏi :-)) –

4

Xin chào, Chúng tôi đã sử dụng công cụ đánh chặn Castle Windsor, dựa trên bài viết này: http://www.davidhayden.com/blog/dave/archive/2007/03/14/CastleWindsorAOPPolicyInjectionApplicationBlock.aspx cũng như bài viết được đề cập ở trên.

Tôi thấy toàn bộ điều khá dễ dàng và đó là một cách rất thanh lịch để làm AOP. Tuy nhiên ....

Cẩn thận với hiệu suất. Sử dụng tính năng chặn tạo ra một proxy động chắc chắn sẽ làm chậm mọi thứ. Dựa trên các tiêu chuẩn của chúng tôi bằng cách sử dụng trang trại điện toán 500 Node, chúng tôi thấy hiệu suất giảm khoảng 30% bằng cách sử dụng chặn ở Windsor, ngoài ra chúng tôi cũng đang thực hiện việc chặn bên trong. . và chỉ đơn giản là loại bỏ sự can thiệp đã đẩy nhanh toàn bộ ứng dụng lên một chút.

Cẩn thận bạn không thực hiện các cuộc gọi đắt tiền của mình thực sự là đắt tiền. :) Nếu tôi là bạn tôi sẽ nhìn vào bộ nhớ cache ở một mức độ khác nhau, có thể bằng cách thực hiện một mẫu kiểu IRepository và sau đó sao lưu với các chiến lược bộ nhớ đệm khác nhau khi thích hợp.

Chúc may mắn,

-
Matt.

+0

Tôi không thể chắc chắn, nhưng việc chặn đứng dường như đã tăng lên rất nhiều trong 3.0 – Malachi

0

Tôi đã tạo trên dự án mã nguồn mở có tên cachew.castlewindsor bằng trình chặn đánh chặn bộ nhớ đệm. Đây là giải pháp đa mục đích cho bộ nhớ đệm.

Đây là một ví dụ đơn giản của việc sử dụng:

var container = new WindsorContainer(); container.Register(Component.For<CacheInterceptor>() .Instance(new CacheInterceptor(new Cache(TimeoutStyle.RenewTimoutOnQuery, TimeSpan.FromSeconds(3))))); container.Register(Component.For<IServer>().ImplementedBy<Server>().Interceptors<CacheInterceptor>());

Hành vi mặc định là bộ nhớ cache tất cả các phương pháp mà bắt đầu với Nhận và trả lại dữ liệu, nhưng bạn cũng có thể thay đổi những gì tiền tố để bộ nhớ cache. dự án

này có sẵn trên NuGet: http://www.nuget.org/packages/Cachew.CastleWindsor/

Và mã nguồn có sẵn ở đây: https://github.com/kobbikobb/Cachew

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