2011-09-24 21 views
8

Tôi đã thực hiện các bước đầu tiên về MEF vài tháng trước và mọi thứ dường như vẫn ổn cho đến bây giờ. Những gì tôi muốn làm là sử dụng MEF trong các ứng dụng thực sự của tôi và tải hoặc chúng ta có thể nói các thành phần UI hiển thị dựa trên các quyền người dùng đã được xác thực. Tôi đang phát triển hệ thống quản lý bệnh nhân cho phòng khám và tôi muốn triển khai kịch bản mà MEF bao gồm các thành phần giao diện người dùng được hiển thị dựa trên loại người dùng. ví dụ nếu người dùng được xác thực là bác sĩ, tôi muốn hiển thị các thành phần cụ thể và ẩn các thành phần khác.Các quyền của người dùng dựa trên các thành phần MEF

Những gì tôi đang cố gắng để đạt được là một cái gì đó giống như

ISystemComponent trong đó có một số thuộc tính và phương pháp để quản lý có thể kiểm soát mỗi người dùng cấp độ truy cập và dựa trên hồ sơ DB MEF điều khiển bao gồm sẽ được hiển thị cho người dùng cuối. Tôi cũng nghĩ về việc sử dụng giao diện MetaData trong khi xuất khẩu các thành phần để sử dụng điều này làm thế nào tôi có thể có được kết quả mong muốn?

nào đi đúng hướng sẽ được đánh giá

+0

Lớp trình bày mục tiêu? WPF hoặc WinForms? –

+0

không phải là winforms nhưng WPF hoặc nó có thể là silverlight cũng –

+0

Bạn có một số khung công tác thực hiện chính xác những gì bạn muốn, ví dụ: PRISM (có thể sử dụng MEF hoặc thùng chứa IOC khác) –

Trả lời

2

Bài báo here chi tiết sử dụng AOP để tiêm vào vấn đề an ninh MEF. Đây có thể là một cách để làm điều này - tôi không tìm thấy bất cứ thứ gì trong MEF cho phép loại chức năng này ở nơi khác.

0

Tôi nghĩ PRISM có thể thực hiện chính xác những gì bạn đã mô tả. Hãy xem this Code Project article. Bạn có thể tạo nhiều catalog mô-đun (theo điều khoản người dùng) và Danh mục tải tự động từ XML như mô tả Here:

var catalog = ModuleCatalog.CreateFromXaml(new Uri("catalog.xaml", 
               UriKind.Relative)); 
+0

Tôi không sử dụng PRISM và nó không có kế hoạch được sử dụng trong dự án của chúng tôi, chúng tôi bui8ld nhiều thứ ngay từ đầu vì đây thực sự là hệ thống doanh nghiệp –

4

Tôi đã làm điều này bằng cách sử dụng một thuộc tính siêu dữ liệu cho một ID mô-đun và một bảng có các quyền.

Thực hiện ImportMany trên giao diện rồi lọc dựa trên thuộc tính siêu dữ liệu bằng cách sử dụng phản chiếu và so sánh với quyền trong bảng.

Bài đăng trên blog này mô tả tất cả các MEF liên quan.

http://blogs.microsoft.co.il/blogs/bnaya/archive/2010/01/20/mef-for-beginner-metadata-part-8.aspx

Liên kết khác ..

http://blogs.microsoft.co.il/blogs/bnaya/archive/2010/01/09/mef-for-beginner-toc.aspx

http://mef.codeplex.com/wikipage?title=Exports%20and%20Metadata&referringTitle=Guide

MEF Plugins with Security and Profiles Efficency

MEF with ImportMany and ExportMetadata

này sẽ hiển thị như thế nào để nhập khẩu từ XAML

http://blogs.microsoft.co.il/blogs/bnaya/archive/2010/03/20/mef-for-beginner-import-from-xaml-part-11.aspx

+0

cảm ơn những liên kết này thực sự hữu ích cho tôi. của bộ sưu tập bên trong thuộc tính để quản lý chính sách truy cập và kiểm tra thành phần trong khi người dùng hiện được xác thực có cùng quyền và chỉ trong trường hợp này hiển thị plugin cho người dùng –

0

tôi thực hiện điều này trong WPF/MVVM sử dụng Cinch và backend SQL bảng ánh xạ điều khiển để vai trò và tầm nhìn cho phép. Điều này cho phép bạn kiểm soát quyền thông qua chế độ xem và thay đổi mức hiển thị tại bất kỳ điểm nào.

Cinch hỗ trợ một số chế độ phát MVVM trong khi cho phép bạn tận dụng MEF thông qua MeffedMVVM hoặc Prism.