Đồ án Nghiên cứu Silversight và xây dựng ứng dụng web hỗ trợ phát triển bài giảng dạng Multimedia

TỔNG QUAN VỂ SILVERLIGHT Chương 1: GIỚI THIỆU VỀ SILVERLIGHT I. KHÁI QUÁT SILVERLIGHT Microsoft Silverlight là một công nghệ đa nền, đa trình duyệt dựa trên nền .NET dùng để xây dựng và phát triển một thế hệ ứng dụng Web và thiết bị mới, đầy tính tương tác và hỗ trợ tối đa về media (phương tiện truyền thông). Hiện nay Silverlight đang có hai phiên bản là Silverlight 1.0 dùng phát triển ứng dụng bằng ngôn ngữ Javascript và một phiên bản Silverlight 2.0 bằng các ngôn ngữ .NET framework (khung) như C# hay VB.NET. Bên cạnh đó công nghệ Silverlight còn được hỗ trợ bởi ngôn ngữ đánh dấu XAML (extensible application markup language – Ngôn ngữ đánh dấu mở rộng) đầy sức mạnh trong việc thể hiện giao diện người dùng. Có thể nói công nghệ Silverlight đã thống nhất được tất cả các khả năng của server, Web và ứng dụng desktop, của code .NET, của ngôn ngữ hình thể và ngôn ngữ truyền thống và sức mạnh của Windows Presentation Foundation (WPF). Để cuối cùng tạo ra một ứng dụng mà người dùng phải thấy thích. Một số người cho rằng công nghệ Silverlight của Microsoft sẽ là “sát thủ” của Adobe Flash. Nhưng hiện tại thì chưa thể biết được điều gì, vì cả hai công nghệ này đều được sử dụng bằng plug in của trình duyệt, cả hai đều hỗ trợ đồ họa vector, âm thanh, phim ảnh, animation và ngôn ngữ script. Về mặt căn bản thì công nghệ này có sự khác biệt. Trong khi Flash sử dụng định dạng nhị phân semi-open, thì Silverlight dựa trên nền WPF. Thực tế trước khi công nghệ mới này của Microsoft được đặt tên là Silverlight thì nó đã có tên mã là WPF/e (Windows Presentation Foundation Everywhere). Điểm quan trọng nhất trong công nghệ Silverlight là hệ thống đồ họa con được hỗ trợ bởi một nhánh trong WPF, bao gồm các đoạn mã thể hiện âm thanh, phim ảnh. Được công bố tại Mix’07 vào tháng 5 năm 2007, SilverLight mang đến cho thế giới một cơn bão với một cái nhìn về Adobe Flash giống như ứng dụng Internet (RIAs) được xây dựng trên một nền cơ bản, mở ra cách tiếp cận với HTML và XAML sử dụng các công cụ như VisualStudio .NET và Microsoft Blend.Ý tưởng cho SilverLight thì không có gì mới, Microsoft đang nói về công nghệ gọi là WPF/e trước đây hơn 1 năm.Quan tâm đầy đủ thì đây là sự lẫn lộn xung quanh WPF/e có nghĩa là gì, tên cần thay đổi với cái gì đó hoàn toàn khác, một tên mà không liên quan tới WPF/e với khách hàng thông minh, thế hệ kế tiếp của nền Giao diện người dùng (UI) Nền tảng biểu diễn Windows( WPF). Ý tưởng của chữ e ở cuối WPF là chuyển WPF đi khắp mọi nơi. Nhưng đây đơn giản không phải là một trường hợp. WPF này là một phần nhân của .NET 3.0 và yêu cầu 30MB khi chạy. WPF/e có 2MB khi download, chạy trong bộ trình duyệt, và chạy trên nhiều nền tảng khác nhau.Và nhiều nền ở đây không có nghĩa là WindowsXP và WindowsVista; Nó có nghĩa là Windows và Apple Macintosh.Nó hoạt động trên bộ trình duyệt web safari trong Apple Macintosh được phục vụ từ một Máy chủ web Apache chạy trên Linux. Tên WPF/e không phải là đại diện đầy đủ cho việc đáng kinh ngạc của công nghệ mới này, vì vậy mà SilverLight đựơc công bố như tên mới tại Mix’07. Kiến trúc của Silverlight cũng khá phức tạp. Hệ thống đồ họa đảm bảo mọi thứ cho giao diện người dùng, như animation, text, âm thanh, hình ảnh. Plug-in được tích hợp vào trình duyệt để thể hiện ứng dụng Silverlight, để giao tiếp bằng JavaScript DOM và ứng dụng Silverlight có thể gọi các hàm trên server như một dạng web service. Dù người phát triển ứng dụng là người phát triển web hay người thiết kế đồ họa thì Silverlight đều tạo điều kiện tốt nhất để người đó có thể phát huy tối đa khả năng của mình.

pdf140 trang | Chia sẻ: lvcdongnoi | Lượt xem: 3154 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Đồ án Nghiên cứu Silversight và xây dựng ứng dụng web hỗ trợ phát triển bài giảng dạng Multimedia, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Hoàng Lộc Trang 83 Nguyễn Anh Việt Lưu Xuân Việt Để gọi lại hành động khi thuộc tính đã thay đổi. Ví dụ, vẽ lại TextBox khi thuộc tính Text thay đổi và thông báo TextChanged event tới ứng dụng. Nếu bạn không sử dụng chức năng gọi lại sự thay đổi thì sự thay đổi sẽ không xảy ra. Bạn có thể thêm chi tiết vào chỗ trống trong ví dụ và đăng ký một thuộc tính phụ thuộc mới để sẵn dùng khi bạn cần sử dụng. Chú ý: Trong Silverlight có 3 sự đơn giản hóa hơn so với sự phong phú của WPF: - Không sử dụng đối tượng Metadata để đòi hỏi thông tin thêm vào. - Không hỗ trợ việc phân biệt có hiệu lực hay không (Không tự động loại bỏ những giá trị sai). - Không hỗ trợ việc ép kiểu (Tự động thừa nhận và thay đổi giá trị sai vào). b. Trình bao bọc những thuộc tính Bước cuối cùng là gói những thuộc tính Silverlight của bạn vảo trong những thuộc tính truyền thống của .NET. Ngoài ra, xem xét những thủ tục truy xuất những đặc trưng của thuộc tính hoặc set giá trị riêng cho những field, thuộc tính thủ tục cho thuộc tính Silverlight sử dụng là phương thức GetValue() và SetValue() được định nghĩa trong lớp cơ bản DependencyObject. Ví dụ: public Thickness Margin { get { return (Thickness)GetValue(MarginProperty); } set { SetValue(MarginProperty, value); } } Khi bạn tạo một gói bao những thuộc tính, bạn nên tính đến những cái không thể hơn là gọi SetValue() và gọi GetValue() như trong ví dụ trên. Bạn không nên thêm bất kỳ đoạn code nào để xác nhận giá trị, xây dựng event…v..v…Bởi vì đây là nét đặc trưng Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 84 Nguyễn Anh Việt Lưu Xuân Việt trên Silverlight để có thể bỏ qua việc gói thuộc tính lại và gọi trực tiếp SetValue() và GetValue() Cú pháp tổng quát: myElement.Margin = new Thickness(5); c. Mức độ giá trị chức năng (Dynamic Value Resolution ) Chúng ta đã biết, thuộc tính phụ thuộc phụ thuộc vào nhiều dịch vụ khác nhau, để xác định rõ giá trị của thuộc tính hiện hành, Silverlight quyết định đưa ra quyền ưu tiên. Xử lý này được gọi là mức độ giá trị chức năng (Dynamic Value Resolution ) Khi đánh giá một thuộc tính, Silverlight đánh giá theo những cấp bậc ưu tiên sau: 1. Amination: Nếu một amination hiện hành đang chạy, và amination đó thay đổi giá trị thuộc tính, Silverlight sẽ sử dụng amination đó. 2. Giá trị cục bộ (Local value): Nếu bạn set một giá trị rõ ràng trong XAML hoặc trong code, Silverlight sẽ sử dụng giá trị cục bộ đó. Nên nhớ, bạn có thể dùng phương thức Setvalue() để set lại giá trị hoặc gói những thuộc tính đó lại. Nếu bạn set một thuộc tính sử dụng liên kết dữ liệu hoặc tài nguyên, nó có thể sẽ làm thay đổi những giá trị cục bộ và bạn cần phải set lại. 3. Gốc những thành phần mẫu (the template parent): nếu một phần tử là mọt phần của data template hoặc một control template. Nó d9uo75ng5 nhiên được thừa hưởng chi tiết từ những phần tử cha. Nếu thục sự như vậy, chúng sẽ có hiệu lực ngay tức thì. 4. Kiểu (Styles): Những kiểu (Styles) của Silverlight cho phép bạn cấu hình nhiều control trong một quy tắc nhất định. Nếu bạn set một kiểu áp dụng cho những control này. Nó sẽ được vận hành ngay. d. Thuộc tính kèm theo (Attached Properties) Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 85 Nguyễn Anh Việt Lưu Xuân Việt Một thuộc tính kèm theo là thuộc tính phụ thuộc đầy đủ trọn vẹn và cũng như tất cả các thuộc tính phụ thuộc khác nó chịu sự quản lý của hệ thống thuộc tính Silverlight. Sự khác biệt là nó kèm theo sự thay thuộc tính tới một lớp khác mà nó định nghĩa ở trong. Những ví dụ phổ biến của thuộc tính kèm theo tìm thấy ở những bao chứa thể hiện (layout container). Ví dụ lớp Grid khai báo một thuộc tính kèm theo: Row và Column, nơi mà bạn có thể set vị trí của phần tử đã chứa bên trong. Tương tự, Canvas khai báo một thuộc tính phụ thuộc Left và Top để bạn xác định vị trí cần đặt sử dụng hệ trục tọa độ. Khi tạo một thuộc tính phụ thuộc kèm theo, bạn không nên khai báo bao chứa thuộc tính .NET. Bởi vì thuộc tính phụ thuộc kèm theo có thể set trên bất kỳ đối tượng độc lập nào. Ví dụ thuộc tính phụ thuộc Grid.Row có thể set trên một đối tượng Grid (Nếu bạn có một Grid lồng bên trong một Grid khác) hoặc trên một vài phần tử khác. Thực ra, thuộc tính Grid.Row có thể set trên những thuộc tính ngang hàng nếu thuộc tính đó không nằm trong cùng 1 Grid và không phải là một đối tượng Grid đơn trong cây phần tử. Để thay thế một bao chứa thuộc tính .NET, thuộc tính kèm theo yêu cầu môt cặp phương thức tĩnh mà có thể được gọi là: set và get giá trị thuộc tính. Những phương thức này sử dụng giống như phương thức SetValue() và GetValue() (Thừa kế từ lớp DependencyObject). Nên đặt tên cho phương thức tĩnh này là SetPropertyName() và GetPropertyName(). Đây là phương thức tĩnh mà thực thi thuộc tính kèm theo Grid.Row: public static int GetRow(UIElement element) { return (int)element.GetValue(Grid.RowProperty); } public static void SetRow(UIElement element, int value) { element.SetValue(Grid.RowProperty, value); } Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 86 Nguyễn Anh Việt Lưu Xuân Việt Và thêm một ví dụ đặt vị trí của một phần từ vào hàng đầu tiên của Grid sử dụng code: Grid.SetRow(txtElement, 0); Đặt thuộc tính Grid.Row này có giá trị là 0 trên đối tượng txtElement cho mỗi một TextBox. Bởi vì Grid.Row này một thuộc tính phụ thuộc, Silverlight cho phép bạn áp dụng chúng cho bất kỳ phần tử nào. 2. Luồng sự kiện (Routed Events) Tất cả những người phát triển .NET hiểu rõ ý nghĩa của event (Sự kiện) – Thông điệp mà được gởi bởi một đối tượng (Như là một phần tử Silverlight) tới code (đoạn mã) của bạn khi mà xuất hiện một điều gì đó quan trọng. WPF đề cao kiểu event .NET với môt khái niệm mới là luồng sự kiện (Events Routed), cái mà cho phép một event khởi tạo trên một đối tượng nhưng được dựng ở một nơi khác. Ví dụ như luồng sự kiện cho phép một click bắt đầu trên một Button và Button nổi lên trên bao chứa nó và lúc đó là trang chứa nó trước khi xảy ra những xử lý trong code. Silverlight mượn một vài kiểu luồng sự kiện của WPF nhưng chỉ trong những kịch bản đơn giản. Trong khi WPF hỗ trợ vài kiểu luồng sự kiện thì Silverlight chỉ hỗ trợ có một luồng sự kiện: bubbled events mà sự chứa đựng được bắt nguồn từ sự thừa kế từ những phần tử trong lớp sâu của bao chứa này. Hơn nữa, bubbled events của Silverlight là sự liên kết của một vài sự kiện nhập vào của bàn phím (Keyboard) và chuột (mouse) (như MouseMove và KeyDown). Cũng như bạn thấy, Silverlight không sử dụng luồng sự kiện cho những sự kiện điều khiển (events control) cấp cao (như click) và bạn không thể sử dụng luồng sự kiện trong những event control được tùy biến riêng. a. Bên trong những phần tử sự kiện (The Core Element Events) Những phần tử này thừa hưởng những cái cơ bản của sự kiện bên trong 2 lớp UIElement và FrameworkElement. Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 87 Nguyễn Anh Việt Lưu Xuân Việt Lớp UIElement khai báo một sự kiện quan trọng cho xử lý nhập vào của user và chỉ event này có luồng sự kiện. Danh sách event của UIElement bao gồm: Tên sự kiện Mô tả GotFocus Xảy ra khi UIElement nhận một điểm KeyDown Xảy ra khi một phím trên bàn phím nhấn xuống trong khi UIElement đã chọn một điểm KeyUp Xảy ra khi một phím trên bàn phím được nhả ra trong khiUIElement đã chọn một điểm MouseLeave Xảy ra khi chuột ( bút vẽ) rời khỏi viền một UIElement MouseLeftButtonDown Xảy ra khi nhấn trái chuột (Hoặc khi đầu một bút vẽ tác động vào thẻ PC) trong khi con trỏ chuột nằm trên một UIElement. MouseLeftButtonUp Xảy ra khi nhấn trái chuột (Hoặc khi đầu một bút vẽ tác động vào thẻ PC) trong khi con trỏ chuột nằm trên một UIElement. MouseEnter Xảy ra khi chuột ( bút vẽ) nhấp vào viền một UIElement MouseLeave Xảy ra khi chuột ( bút vẽ) rời khỏi viền một UIElement Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 88 Nguyễn Anh Việt Lưu Xuân Việt MouseMove Xảy ra khi di chuyển chuột ngang qua phần tử Trong một vài trường hợp, những event cao cấp hơn có hiệu lực thay thế một vài event UIElement. Ví dụ như, lớp Button cung cấp một sự kiện click mà bắt đầu một hành động khi user nhấn và thả button chuột. Bạn nên luôn có đáp ứng tới event click chứ không hẳn là MouseLeftButtonDown hay MouseLeftButtonUp. Tương tự, TextBox cung cấp một event TextChanged xảy ra khi có sự thay đổi text bởi bất kỳ cơ cấu thêm vào cơ bản event KeyDown và KeyUp. Lớp FrameworkElement chỉ thêm vào một vài kiểu event. Những event này không sử dụng sự kiện nổi bọt (event bubbling). Chi tiết mô tả trong bảng sau: Tên sự kiện Mô tả Loaded Xảy ra khi một FrameworkElement hoàn tất việc thể hiện trên giao diện, đã biên dịch và sẵn sàng tương tác SizeChanged Xảy ra khi một trong hai thuộc tính ActualHeight hoặc ActualWidth thay đổi giá trị FrameworkElement LayoutUpdated Xảy ra khi sự kết hợp những đối tượng con trong trường hợp đồng thời gắn kết Silverlight vào làm thay đổi giao diện thể hiện Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 89 Nguyễn Anh Việt Lưu Xuân Việt III. CÁC PHẦN TỬ (Elements) Một số phần tử cơ bản trong Silverlight được mô tả trong bảng sau: Lớp Mô tả Border Một đường viền hoặc một hình chữ nhật mà bạn vẽ thêm xung quanh một phần tử. Button Là một nút bấm với màu nền tối, nơi mà người dùng có thể nhấp vào với một yêu cầu. Lịch (Calendar) Lịch nhìn một tháng hay một thời điểm mà người dùng có thể chọn một ngày. Canvas Một bao chứa thể hiện (layout container) cho phép bạn bố trí những phần tử nằm trong nó theo một vị trí trong hệ tọa độ CheckBox Một hộp thoại với tùy chọn có thể kiểm tra hoặc không kiểm tra nội dung trong lần mở tiếp theo. ContentControl Nội dung cơ bản của tất cả các điều khiển-control (Control mà có thể chứa Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 90 Nguyễn Anh Việt Lưu Xuân Việt những phần tử khác làm nội dung) DataGrid Một danh sách gồm nhiều hàng và nhiều cột với một tập hợp của các đối tượng dữ liệu. DatePicker Một hộp thoại văn bản cho mục (index) ngày tháng với một tờ lịch kéo-thả để dễ dàng chọn lựa. Ellipse Một hình dạng được vẽ miêu tả như một hình Elip. Grid Một bao chứa thể hiện chứa các phần từ con bên trong mà không thấy được lưới của từng ô. GridSplitter Trả lại kích thước ban đầu của thanh (bar) cho phép User thay đổi chiều cao, thuộc tính cột, độ rộng, thuộc tính hàng trong một Grid HyperlinkButton Một đường dẫn trực tiếp để người dùng có thể liên kết với một trang web khác. Image Một phần tử trình bày hỗ trợ file ảnh. Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 91 Nguyễn Anh Việt Lưu Xuân Việt Line Một phần tử hình vẽ được miêu tả như một đường thẳng. ListBox Một danh sách những biểu tượng (item) bên ngoài là một trình đơn có thể lựa chọn MediaElement Một tập tin (file) truyền thông ví dụ như là một cửa sổ video. MultiScaleImage Một hình ảnh mà Silverlight hỗ trợ xem theo chiều sâu và cho phép user thu nhỏ lại. RadioButton Một đường tròn nhỏ mà miêu tả một sự chọn lựa bên ngoài của một nhóm những tùy chọn, với sự tùy chọn sẽ trình ra ở những lần tiếp theo Rectangle Một phần tử vẽ được miêu tả như là một hình chữ nhật. RepeatButton Một Button mà liên tục xảy ra sự kiện click khi nhấp vào.(Như là Button trên một thanh cuộn) ScrollBar Một cái rãnh với một Button mũi tên trên cạnh của nó cho phép user di Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 92 Nguyễn Anh Việt Lưu Xuân Việt chuyển trong suốt chiều rộng của phần nội dung mà có thể đưa ra một lần duy nhất. Sử dụng trong ScrollViewer ScrollViewer Một bao chứa mà giữ bề rộng của một nội dung bất kỳ và tạo chúng thành một sự cuộn tròn. Slider Một điều khiển nhập vào mà cho phép user đặt nhiều giá trị bởi vận dụng kéo dọc theo cái rãnh. StackPanel Một bao chứa thể hiện mà sắp xếp các biểu tượng từ trên xuống dưới hoặc từ trái qua phải. TextBlock Control hiển thị văn bản chứa đựng một hoặc tất cả các mục đích có khả năng sinh ra những định dạng khác nhau tới nhiều phần của dòng văn bản. TextBox Hiển thị nội dung văn bản. ToggleButton Một Button mà có hai trạng thái, mở hoặc tắt và có thể có khóa chuyển đổi từ một click khác (Như checkbox) ToolTip Một đóng mở hộp thoại như là việc Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 93 Nguyễn Anh Việt Lưu Xuân Việt trình diễn nội dung khi user di chuyển chuột qua một phần tử. WatermarkedTextBox Một hộp thoại văn bản mà thêm một khả năng hiện ra từ một lời nhắc khi có một khoảng trống hoặc không có điểm. IV. ANIMATION (hoạt ảnh) Animation cho phép bạn tạo một chức năng thật của giao diện người dùng. Nó thường sử dụng sự thay đổi những hiệu ứng. Ví dụ như một biểu tượng tự động tăng kích thước lên khi bạn di chuyển ngang qua nó, xoay tròn những logo, nhìn đoạn văn bản cuộn lại và…Thỉnh thoảng, những hiệu ứng này xem như là một sự dư thừa. Nhưng sử dung đúng cách, animation có thể là một điểm mạnh để nổi bật một ứng dụng. Chúng có thể tạo một ứng dụng có vẻ như nhiều đáp ứng, tự nhiên, và mang tính trực giác.(Ví dụ Khi bạn click một button nó chuyển động như là thực, rất tự nhiên-Không chỉ là một hình chữ nhật màu xám xịt nữa). Animation cung có thể vẽ nghiêm túc những phần tử quan trọng và hướng dẫn người dùng trong suốt quá trình chuyển trạng thái qua nội dung mới (Ví dụ, một ứng dụng có thể thông báo một nội dung mới với sự lấp lánh, nhấp nháy hoặc rung động những icon-biểu tượng). Animation là một tập nội dung của kiểu Silverlight. Nghĩa là bạn không cần phải sử dụng ngay bây giờ hoặc đặt những hành động của chúng vào trong code event handing. Thay vào đó, bạn tạo chúng như là một sự khai báo. Định cấu hình cho chúng sử dụng một hoặc một nhóm lớp và đặt chúng vào bên trong những hành động mà không thể viết chỉ bằng một dòng code C#. Một animation cũng có thể hòa vào một animation thành một khối trong một trang Silverlight thông thường. Ví dụ bạn muốn một Button trở nên sinh Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 94 Nguyễn Anh Việt Lưu Xuân Việt động hơn và trôi xung quanh trang mà Button đó vẫn được xem như là một Button. Nó có thể có một kiểu dáng, một điểm trọng tâm và nó có thể click vào và thi hành một sự kiện nào đó. Đây là những gì mà file media truyền thống chia lại cho animation. Như video, khi bạn đặt một trang video vào trong một ứng dụng, nó hoàn toàn chia ra những vùng khác nhau của ứng dụng. Nó cũng có thể chơi nội dung một đoạn video, nhưng không cho người dùng tương tác. Chú ý: Silverlight animation là một phiên bản thu nhỏ của hệ thống WPF animation. Nó giữ sự tương tự những gì dựa trên Framework, những kiểu tương tự cho những khai báo animation với lớp animation và tương tự như hệ thống storyboard (bảng lưu trữ). Bên cạnh đó, việc phát triển WPF sẽ tìm thấy một vài khóa khác nhau, một cách đặc biệt bên trong những cách mà animation tạo ra và bắt đầu bên trong code.(Ví dụ phần tử Silverlight không dựng phương thức BeginAnimation() nhưng trong WPF thì lại có.) 1. Quan niệm Silverlight animation (hoạt ảnh). Thông thường, một animation thường nghĩ là một chuỗi trạng thái. Để thi hành animation, những trạng thái này diễn ra tiếp theo những trạng thái kia, như là một sự dừng lại của video. - Silverlight animation sử dụng một kiểu đột ngột khác nhau. Về cơ bản, một Silverlight animation chỉ là một phương pháp thay đổi một giá trị thuộc tính phụ thuộc trên một khoản thời gian rỗi (thời gian trễ của 2 tiến trình giao nhau) cho phép. Ví dụ như tạo một Button từ từ lớn ra và co lại. Bạn có thể thay đổi thuộc tính bề rộng trong một animation. Để tạo nên ánh sáng mờ, bạn có thể thay đổi thuộc tính LinearGradientBrush mà nó sử dụng bên trong Background (nền). Bí quyết để tạo nên một animation tốt là phải xác định rõ những thuộc tính gì mà bạn cần chỉnh đổi. Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 95 Nguyễn Anh Việt Lưu Xuân Việt Nếu bạn muốn tạo một sự thay đổi khác mà không cần phải thay đổi thuộc tính…Ví dụ, bạn không cần phải thêm hay gỡ bỏ (remove) những phần tử như là một phần của animation. Tương tự, bạn không thể yêu cầu Silverlight thi hành một sự chuyển trạng thái giữa trang thái bắt đầu và trạng thái kết thúc ( mặc dù một vài mánh khóe xung quanh việc này có hiệu lực có thể giở ra). Và cuối cùng, bạn chỉ có thể sử dụng animation với những thuộc tính phụ thuộc, bởi vì chỉ những thuộc tính phụ thuộc mới sử dụng hệ thống giải quyết những thuộc tính chứa năng mà đưa những animation vào bên trong bản miêu tả. Trong lần nhìn thoáng qua đầu tiên, thuộc tính hội tụ tự nhiên của những animation Silverlight dường như là những giới hạn rất tệ. Mặc dù khi bạn làm việt với Silverlight, bạn sẽ phát hiện ra rằng nó có những khả năng thật sửng sốt. Trong thực tế, bạn có thể tạo những biên độ của hiệu ứng animation sử dụng những thuộc tính phổ biến mà mọi phàn tử hỗ trợ. Phạm vi bên ngoài Silverlight animation Có một vài trường hợp hệ thống thuộc tính animation nền không thể làm. Như là một chuẩn trong sự vận dụng, thuộc tính animation nền là một phương pháp lớn để thêm vào những hiệu ứng cho những ứng dung thông thường trong những lĩnh vực khác (Như button sáng lên, hình ảnh phóng to lên khi bạn di chuyển ngang qua…). Tuy nhiên, nếu bạn cần sử dụng animation như là một mục đích chính trong nội dung ứng dụng của bạn, bạn có thể cần một điều gì đó như là nhiều giá trị mạnh mẽ và nhiều sự uyển chuyển. Ví dụ như, nếu bạn tạo ra một trò chơi hình cuộn phức tạp hoặc sử dụng những tính toán vật lý tới nhiều kiểu xung đột bạn sẽ cần những control lớn bên ngoài animation. Điều đáng tiếc là Silverlight không có tùy chọn cho những cấu trúc animation cơ bản. vì vậy, bạn sẽ cần phải tạo từng phân đoạn của ứng dụng theo từng kiểu lặp lại không Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 96 Nguyễn Anh Việt Lưu Xuân Việt ngừng.Cẩn thận trong sự thay đổi những góc nhìn và kiểm tra phía người dùng sau mỗi lần nhập liệu. Ví dụ tham khảo kỹ thuật giả lập sự va chạm của trái banh tại: 2. Những quy tắc của animation Những quy tắc của animation bao gồm: - Silverlight animations là thời gian căn bản (Silverlight animations are time-based): do đó, bạn cần phải set trạng thái ban đầu và trạng thái kết thúc và trong suốt animation của bạn. Silverlight sẽ tính toán tốc độ của những trạng thái đó. - Hành vi của những animation trên thuộc tính (Animations act on properties): Nghĩa là một Silverlight animation chỉ thực hiện một thứ: Chỉnh sửa giá trị của thuộc tính trong khoảng thời gian rỗi (thời gian trễ của 2 tiến trình giao nhau). Điều này như là một giới hạn quan trọng (và có nhiều con đường dẫn tới) nhưng đây là một sự ngạc nhiên lớn của những hiệu ứng mà bạn có thể tạo bởi sự dễ dàng chỉnh sửa những thuộc tính. - Những kiểu dữ liệu phụ thuộc vào những lớp animation khác nhau (Every data type requires a different animation class): ví dụ như: thuộc tính Button.Width sử dụng kiểu dữ liệu double. Hoạt ảnh chúng bạn sử dung lớp DoubleAnimation. Nếu muốn chỉnh sửa màu sắc mà sử dụng màu nền của Canvas bạn cần phải sử dụng lớp ColorAnimation. Silverlight có tương đối một vài lớp animation. Vì vậy bạn bị hạn chế trong kiểu dữ liệu có thể sử dụng. Tại thời điểm hiện tại, bạn có thể sử dụng animation để chỉnh sửa thuộc tính với những kiều dữ liệu như: double, object, Color, và Point. Bên cạnh đó, bạn cũng có những mánh khóe riêng cho từng lớp animation để làm việc với những kiểu dữ liệu khác nhau. Tất cả bạn cần làm được nhận từ System.Windows.Media.Animation và cho biết những giá trị thay đổi như thế nào theo thời gian. Nhiều kiểu dữ liệu không tương ứng với lớp animation bởi vì nó không thực tế. Một ví dụ hoàn hảo là bảng liệt kê. Cho ví dụ, bạn có thể điều khiển như thế nào một phần tử là Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 97 Nguyễn Anh Việt Lưu Xuân Việt vị trí trên bao chứa thể hiện (layout container) sử dụng thuộc tính HorizontalAlignment để giữ một giá trị từ bảng liệt kê HorizontalAlignment. Bên cạnh đó, bảng liệt kê HorizontalAlignment cũng cho phép bạn chỉ chọn được giữa bốn giá trị (Left, Right, Center, và Stretch) đây là cái thể hiện rõ nhất giới hạn sử dụng animation. Mặc dù bạn có thể trao đổi giữa một định hướng này và định hướng khác, bạn không thể chuyển đổi trôi chảy một phần tử từ chuẩn này sang chuẩn khác. Đó là lý do không có lớp animation cho kiểu dữ liệu HorizontalAlignment. Bạn có thể xây dựng chính nó, nhưng vẫn là sự miễn cưỡng bởi bốn giá trị của bảng liệt kê. Kiểu tham chiếu không thường sử dụng trong hoạt ảnh. Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 98 Nguyễn Anh Việt Lưu Xuân Việt TÓM LƯỢC Tóm lại, tất cả những phần trình bày trên chỉ là mức khái quát sơ lược về Microsoft Silverlight. Do trình độ của chúng em còn hạn chế, cũng như thời gian nghiên cứu ngắn nên chúng em vẫn chưa nghiên cứu sâu những ứng dụng hữu ích của Microsoft Silverlight. Tuy nhiên, trong bước đầu làm quen với công nghệ mới này và thêm phần hỗ trợ của ngôn ngữ đánh dấu mở rộng (XAML) chúng em cũng mạnh dạn trình bày những gì mình hiểu và nắm bắt được khi bắt tay vào nghiên cứu và viết ứng dụng bằng công nghệ mới này. Điểm mạnh của Microsoft Silverlight trong ứng dụng của chúng em là ở phần giao diện (UI) Sự thể hiện giao diện trong Silverlight được hỗ trợ bằng công cụ thiết kế rất trực quan (Microsoft Blend) cho phép chúng em tùy biến những thành phần giao diện theo ý tưởng và sự thể hiện mình mong muốn một cách dễ dàng, nhanh chóng hoàn toàn bằng ngôn ngữ tạo dựng UI không cần qua xử lý (Compile). Sau đây là phần xây dựng ứng dụng web sử dụng công nghệ Microsoft Silverlight của chúng em. Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 99 Nguyễn Anh Việt Lưu Xuân Việt Phần 2: XÂY DỰNG ỨNG DỤNG WEB HỖ TRỢ BÀI GIẢN ĐIỆN TỬ DẠNG MULTIMEDIA Chương 1: MÔ TẢ ỨNG DỤNG I. ĐẶT VẤN ĐỀ Mô tả Mô hình: Đề tài yêu cầu xây dựng một website bài giảng điện tử online hổ trợ dạng multimedia nên đây là một website bài giảng điện tử cung cấp nội dung bài giảng trước tiên dự kiến giới hạn nội dung ở cấp Phổ Thông Trung Học Cơ Sở. Do đó, phần danh mục sẽ gồm: lớp 10, lớp 11, lớp 12, Luyện thi Đại Học. Cấu trúc một website điện tử bao gồm một nội dung trình bày là tổ hợp của hình ảnh video và phần văn bản nội bài giảng giúp người tiếp thu dễ dàng theo dõi nội dung đầy đủ và hấp dẫn hơn. Nói cách khác, bài giảng điện tử giống như một ebook online có khả năng truyền tải thông tin đa dạng hơn vì có sự hổ trợ thêm của phương tiện truyền thông (multimedia). Website phục vu 2 đối tượng chính nhìn chung có thể gọi là học viên và giảng viên. Với, học viên là học sinh hay các đối tượng tham khảo, có thể phản hồi ý kiến cá nhân về bài giảng đang xem. Giảng viên là người cung cấp bài giảng cho phép upload các bài giảng, xử lý được vấn đề mong muốn bài giảng nào được xem, cập nhật các bài giảng đã sửa chữa, hủy bài giảng cũ. Giảng viên theo dõi được thông tin phản hồi của học viên theo từng bài giảng. Các đối tượng tương tác với website cần có tài khoản đăng ký trước và có các thông tin cá nhân cơ bản để thuận tiện cho việc theo dõi và liên lạc. Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 100 Nguyễn Anh Việt Lưu Xuân Việt Một bài giảng được soạn thảo sẵn bằng công cụ riêng winform application trên nền silverlight. Nội dung bài giảng là một tổ họp cây dữ liệu mô tả bằng một file xml.Công cụ cho phép thêm video, văn bản (cần bàn thêm), xử lý cử động, định thời điểm xuất hiện của văn bản. II. DANH MỤC CHỨC NĂNG 1. Danh mục các chức năng: a. Website: ¾ Đăng ký, đăng nhập để tham gia theo dõi bài giảng điện tử. ¾ Xem một bài giảng ¾ Ghi nhận phản hồi thông tin trong một bài giảng. ¾ Xử lý thêm bài giảng mới. ¾ Cập nhật bài giảng. ¾ Hủy các bài giảng cũ. b. Công cụ soạn thảo một bài giảng: ¾ Tạo mới, mở lại, lưu trữ một bài giảng. ¾ Soạn thảo văn bản, thêm media, script cử động. ¾ Công cụ xử lý xem trình bày trước, hổ trợ máy printer. 2. Phát họa website và công cụ soạn thảo: ¾ Đối tượng tương tác: - Học viên: đăng ký tài khoản, đăng nhập, chọn bài giảng, xem theo trình bày, phản hồi ý kiến. - Giảng viên: + Giống học viên, thêm bài giảng mới, cập nhật, hủy bài giảng. + Soạn thảo bài giảng: thêm, sửa, lưu, xem, soạn dữ liệu… Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH Chương 2: MÔ HÌNH PHÂN TÍCH CHỨC NĂNG VÀ CÁC ĐẶC TẢ USERCASE I. ĐẶC TẢ USERCARE 1. Mô hình Usercase cho website SVTH: Thân Hoàng Lộc Trang 101 Nguyễn Anh Việt Lưu Xuân Việt Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 102 Nguyễn Anh Việt Lưu Xuân Việt USERCASE ĐĂNG KÝ TÀI KHOẢN A. Đặc tả 1. Tóm tắt Usercase này mô tả cách thức học viên và giảng viên yêu cầu hệ thống thực hiện tạo mới một tài khoản. 2. Dòng sự kiện a. Dòng sự kiện chính - Hệ thống yêu cầu học viên hoặc giảng viên nhập các thông tin cần thiết cho việc đăng ký như Tên tài khoản, mật khẩu, tên, Email, country… - Hệ thống yêu cầu nhấn Submit để đang ký. b. Dòng sự kiện khác Nếu các thông tin cần thiết không hợp lệ hoặc trùng tên hệ thống yêu cầu nhập lại. c. Yêu cầu đặc biệt. Không có. d. Điều kiện tiên quyết. Không có. e. Post – Conditions. Nếu Usercase thực hiện thành công, hệ thống cập nhật vào cơ sở dữ liệu thông tin về tài khoản mới. f. Điểm mở rộng. Không có. Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH B. Sequence Diagram SVTH: Thân Hoàng Lộc Trang 103 Nguyễn Anh Việt Lưu Xuân Việt Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 104 Nguyễn Anh Việt Lưu Xuân Việt USERCASE TRÌNH CHIẾU MỘT BÀI GIẢNG A. Đặc tả. 1. Tóm tắt Usercase này mô tả cách thức học viên và giảng viên yêu cầu hệ thống thực hiện việc trình chiếu nội dung một bài giảng (một Thumbnail). 2. Dòng sự kiện a. Dòng sự kiện chính - Hệ thống yêu cầu học viên hoặc giảng viên (đã đăng nhập). - Hệ thống yêu cầu nhấn chọn thumbnail vào viewplayer. - Học viên hoặc giảng viên scroll theo tex hoặc viết comment. b. Dòng sự kiện khác Nếu bài giảng không có Video, màn hình sẽ chỉ hiển thị text và comment. c. Yêu cầu đặc biệt. Không có. d. Điều kiện tiên quyết. Không có. e. Post – Conditions. Nếu Usercase thực hiện thành công, hệ thống truy xuất vào cơ sở dữ liệu và tải thông tin của thumbnail lên. f. Điểm mở rộng. Không có. Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH B. Sequence Diagram SVTH: Thân Hoàng Lộc Trang 105 Nguyễn Anh Việt Lưu Xuân Việt Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH 2. Mô hình Usecase cho công cụ soạn thảo bài giảng SVTH: Thân Hoàng Lộc Trang 106 Nguyễn Anh Việt Lưu Xuân Việt Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH 3. Mô hình COM (Component) SVTH: Thân Hoàng Lộc Trang 107 Nguyễn Anh Việt Lưu Xuân Việt Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 108 4. Sơ đồ lớp tổng quát (Class Diagram) gồm 2 phần lớn a. Giao diện GIAODIEN_HOCVIEN: Tổng hợp Giao Diện của HOCVIEN gồm: - Panel LOGIN_USERS: dùng cho cả Học viên và Giảng viên - - - Panel BANNER: xử lý banner top va bottom Nguyễn Anh Việt Lưu Xuân Việt Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 109 Nguyễn Anh Việt Lưu Xuân Việt - Panel TREE_DANHMUC: danh mục các môn lựa chọn xem - Panel MAIN_HOCVIEN gồm: + Tiltle, + ShowMedia + Detail + Comment b. Giao diện GIAODIEN_GIANGVIEN: gồm các panel: - Panel LOGIN_USERS: dùng chung cho cả Học viên và Giảng viên - Panel BANER: xử lý banner top va bottom - Panel LISTCOMMENT: chọn 1 phản hồi trong list rồi hiện form giống bên hocvien - Panel MAIN_GIANGVIEN gồm: + Menu web + ShowMedia + ListTopic - Panel Upload File. - Giao diện TREE_DANHMUC: - CÂY Danh mục 2 cấp: Ví dụ: Lớp 10: Môn Anh văn Môn Toán Môn Hóa Môn Lịch Sử .... Lớp 11: … Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 110 Nguyễn Anh Việt Lưu Xuân Việt o Lớp 12: … o Luyện thi đại học: … - Giao diện MAIN_HOCVIEN gồm: + Tiltle : ... + ShowMedia: ... + Detail: ... + Comment : ... - Giao diện BANNER: dùng chung cho cả HOCVIEN và GIANGVIEN gồm 2 hàm: + ShowTop() : muốn hiện Banner Top. + ShowBottom(): muốn hiện BannerBottom. - Giao diện LISTCOMMENT: Danh sách các comment có phản hồi. - Giao diện MAIN_GIANGVIEN: gồm + Menu web + ShowMedia + ListTopic Giao diện Học Viên và Giao diện Giảng Viên có các phần nhỏ dùng chung cả 2 đối tượng như: - Banner - LoginUsers Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH II. MÔ TẢ CƠ SỞ DỮ LIỆU 1. Mô hình ClassDataBase: Sơ đồ kết hợp giữa các bảng dữ liệu: SVTH: Thân Hoàng Lộc Trang 111 Nguyễn Anh Việt Lưu Xuân Việt Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH 2. Phân tích các bảng dữ liệu a. Bảng 1: USERS Bảng này lưu trữ các thông tin người dùng với những giá trị thuộc tính sau: Trong đó, giá trị IdUsers là một thuộc tính trừu tượng và là khóa chính trong bảng dữ liệu này. Trường pass chứa đựng giá trị password do người dùng khởi tạo và trường này không được để trống ( not Null). Các trường Name, Mail và Country lưu trữ các giá trị tên, địa chỉ mail và quốc gia có thể có hoặc có thể không. Tất cả có kiểu dữ liệu nvarchar, độ rộng của các chuỗi là 50. Giá trị IdUsersType cũng là một thuộc tính trừu tượng, kiểu dữ liệu: nchar, độ rộng của chuỗi là 10 và là khóa ngoại được tham chiếu trong bảng này. SVTH: Thân Hoàng Lộc Trang 112 Nguyễn Anh Việt Lưu Xuân Việt Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH b. Bảng 2: USERSTYPE Lưu giữ thông tin người dùng và phân loại người dùng mục đích để phân quyền tương tác trong hệ thống. Giá trị RoleType có thể có hoặc có thể không. Nếu là giá trị Null thì mặc định hệ thống chỉ cấp quyền tối thiểu khi tương tác trong hệ thống. Giá trị IdUsersType là một thuộc tính trừu tượng và là khóa chính trong bảng dữ liệu này. Các thuộc tính của bảng: IdUserType: Kiểu dữ liệu: nchar, độ rộng 10. RoleType: Kiểu dữ liệu: nvarchar, độ rộng 50. SVTH: Thân Hoàng Lộc Trang 113 Nguyễn Anh Việt Lưu Xuân Việt Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH c. Bảng 3: SUBJECT (Môn học) Lưu trữ thông tin môn học với các trường: IdSubject (Mã môn học): Kiểu dữ liệu: nvarchar, độ rộng 50. Name (Tên môn học): Kiểu dữ liệu: nvarchar, độ rộng 50. Có thể có hoặc không. IdClass ( Mã lớp): Kiểu dữ liệu: nvarchar, độ rộng 50. SVTH: Thân Hoàng Lộc Trang 114 Nguyễn Anh Việt Lưu Xuân Việt Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH Bảng thuộc tính: d. Bảng 4: ARTICLE (Bài giảng) Lưu trữ các thông tin của bài giảng gồm có: IdArticle (Mã bài giảng), PathToFile (Đường dẫn file), DateUp (Ngày đưa lên), IdSubject (Mã môn học). IdUsers (mã người upload bài giảng). Trong đó, IdArticle là khóa chính và IdSubject là khóa ngoại. Giá trị của trường DateUp có thể có hoặc có thể không. Bảng mô tả thuộc tính: e. Bảng 5: COMMENT (Bình luận) SVTH: Thân Hoàng Lộc Trang 115 Nguyễn Anh Việt Lưu Xuân Việt Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH Lưu trữ thông tin của các bài bình luận với các giá trị thuộc tính: Trong đó, trường Date và TextComment có thể có hoặc không. IdComment xác định mã của bài bình và là khóa chính. IdArticle là khóa ngoại tham chiếu đến để ghi nhận lời bình đối với bài giảng nào. Tất cả có kiểu dữ liệu nvarchar và độ rộng 50. f. Bảng 6: CLASS Bảng này xác định những học viên đang học bài học này thuộc lớp nào. SVTH: Thân Hoàng Lộc Trang 116 Nguyễn Anh Việt Lưu Xuân Việt Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH IdClass: mã lớp. Kiểu nchar, độ rộng 10. ClassName: Tên lớp. Kiểu nvarchar, độ rộng 50. g. Bảng 7: SEARCHTAG Tìm kiếm theo chức năng. Cung cấp thêm tính năng tìm kiếm một bài giảng đã có trong Website. Bàng một từ mô tả bài giảng do người dùng nhập vào. IdTag: Mã search, Kiểu nchar, độ rộng 10 Keyword: Từ mô tả nhập vào, Kiểu nvarchar, độ rộng 50. WeightKey: Trọng lượng đối số, kiểu int, 2 byte. IdArticle: Kiểu nvarchar, độ rộng 50. SVTH: Thân Hoàng Lộc Trang 117 Nguyễn Anh Việt Lưu Xuân Việt Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH III. CÔNG CỤ THIẾT KẾ BÀI GIẢNG 1. Mô hình Usercase cho công cụ soạn thảo bài giảng SVTH: Thân Hoàng Lộc Trang 118 Nguyễn Anh Việt Lưu Xuân Việt Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 119 Nguyễn Anh Việt Lưu Xuân Việt 2. Giới thiệu chung WPFSOANBAIGIANG là một công cụ soạn thảo bài giảng điện tử hỗ trợ cho web BAIGIANGDIENTUONLINE. Với những tương tác trực quan cũng như cách diễn giải dễ hiểu sẽ giúp bạn thao tác tốt hơn. WPFSOANBAIGIANG gồm có 3 chức năng chính : - Tạo một bài giảng mới. - Đọc một bài giảng. - Chỉnh sửa các mục, phần trong bài giảng. Bạn có thể xem, chỉnh sửa nội dụng của bài giảng và lưu những thay đổi. Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH IV. MỘT SỐ MÀN HÌNH CHÍNH 1. Các màn hình chính của Website a. Màn hình chính của Website: Khi mở Website, màn hình này sẽ hiển thị và trên màn hình sẽ bao gồm những bài giảng mới nhất (Những bài giảng up lên Website gần nhất). Các tab trên trang chủ này gồm: - Home: Quay trở lại trang chính của website. SVTH: Thân Hoàng Lộc Trang 120 Nguyễn Anh Việt Lưu Xuân Việt Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH - Thư viện: Đưa tới trang chứa nội dung các bài giảng có trên site. - Xem: Mở ra một màn hình Viewplayer. Màn hình này trình bày nội dung một bài giảng, có thể là text, text + Video…và một comment dành riêng cho bài giảng này. - Thành viên: Mở đến trang chứa các control chỉ dành riêng cho thành viên (upload, modify…) - Đăng ký: Mở form đăng ký thành viên. - Đăng nhập: Mở form đăng nhập. b. Màn hình thư viện (Màn hình chính sau khi đăng nhập): SVTH: Thân Hoàng Lộc Trang 121 Nguyễn Anh Việt Lưu Xuân Việt Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH Ở màn hình này hiển thị thêm một Panelleft chứa đựng một Treeview các lớp và các môn học. Khi click vào từng môn học, chúng sẽ trình bài các bài giảng liên quan tới môn học đó bên các Thumbnail bên phải. Quan hệ giữa Treeview bên trái và Thumbnail bên phải là quan hệ Master - Detail c. Màn hình đăng ký SVTH: Thân Hoàng Lộc Trang 122 Nguyễn Anh Việt Lưu Xuân Việt Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH Hiển thị Form đăng ký các thông tin cần thiết để trở thành thành viên của website. Các thông tin được đánh dấu là thông tin bắt buộc user phải nhập vào và có sự kiềm tra đối với thông tin tài khoản. d. Màn hình đăng nhập SVTH: Thân Hoàng Lộc Trang 123 Nguyễn Anh Việt Lưu Xuân Việt Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH Hiển thị Form đăng nhập cho user. Chỉ những user đã đăng ký thì mới có thể đăng nhập được. Thông tin cần để đăng nhập là thông tin mà user đã đăng ký và được lưu giữ trong cơ sở dữ liệu. Ngoài ra, những user chưa đăng ký có thể nhấp vào nút “tham gia” để đang ký thông tin. Khi nhấp vào nút “tham gia” sẽ đưa user quay trở lại Form đăng ký. e. Màn hình Upload SVTH: Thân Hoàng Lộc Trang 124 Nguyễn Anh Việt Lưu Xuân Việt Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 125 Nguyễn Anh Việt Lưu Xuân Việt Thành viên – Giảng viên có thể đưa (Upload) bài giảng lên Website sau khi đã dùng phần công cụ soạn thảo soạn trước các bài giảng (Xem phần soạn thảo bài giảng). Khi đưa một bài giảng lên web, Giảng viên cần chọn Lớp, môn học (Chọn đường dẫn) chứa bài giảng và cuối cùng là chọn gói bài giảng đang chuẩn bị tải lên. Quy trình tải một bài giảng lên trang web gồm: - Sau khi giảng viên chọn file (bài giảng đã đóng gói file .zip). Click vào button “Tải lên” thì quá trình Upload file bắt đầu thông qua các hàm sau: private void ButtonSubmitLoad_Click(object sender, RoutedEventArgs e) { try { if (uploadfile == null || hasfile == false) { Log(msg2); return; } // lay' selectionboxitem cbLop cbMon string idclass = cbLop.SelectionBoxItem as string; string idsubj = cbMon.SelectionBoxItem as string; if (idclass == null) { cbLop.Focus(); return; } if (idsubj == null) { cbMon.Focus(); return; } string iduser = ((PageMain)App.Current.RootVisual).Cookie.Getkey("CurUserid"); Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 126 Nguyễn Anh Việt Lưu Xuân Việt // up filename,class,mon UploadFile(File1.Text, uploadfile, hashID(idclass), hashID(idsubj), iduser); File1.Text = msg1; Log(msg3); hasfile = false; } catch { } } private void UploadFile(string fileName, Stream data, int valclass, int valsubject, string users) { UriBuilder ub = new UriBuilder(linksite); ub.Query = string.Format("filename={0}&class={1}&subject={2}&user={3}", fileName, valclass, valsubject, users); WebClient c = new WebClient(); c.OpenWriteCompleted += (sender, e) => { PushData(data, e.Result); e.Result.Close(); data.Close(); }; c.OpenWriteAsync(ub.Uri); } private void PushData(Stream input, Stream output) { byte[] buffer = new byte[4096]; int bytesRead; Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 127 Nguyễn Anh Việt Lưu Xuân Việt while ((bytesRead = input.Read(buffer, 0, buffer.Length)) != 0) { output.Write(buffer, 0, bytesRead); } } Dữ liệu được đẩy lên Website thông qua HTTP OutputStream và Query của HTTP Request. Phía máy chủ (Server) xử lý nhận dữ liêu thông qua UploadHandler.ash: public class uploadhandler : IHttpHandler { static int nfileloaded = 2; //bien quanly tong so file da up //for debug string msgdebug; public void ProcessRequest (HttpContext context) { byte[] buffer = new byte[4096]; int bytesRead; string filename = context.Request.QueryString["filename"].ToString(); string idclass = context.Request.QueryString["class"].ToString(); string idsubj = context.Request.QueryString["subject"].ToString(); string iduser = context.Request.QueryString["user"].ToString(); string realclasspath = hashID(int.Parse(idclass)); string realsubjectpath = hashID(int.Parse(idsubj)); string webpath = context.Server.MapPath("~/ClientBin/Data") + "/" + realclasspath +"/"+ realsubjectpath; //gia su da co cay cau truc luu tru string filepath = webpath + "/" + filename.Remove(filename.LastIndexOf(".")); Stream inputStream = context.Request.InputStream; Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 128 Nguyễn Anh Việt Lưu Xuân Việt if (filename.Length == 0 || inputStream == null || idclass == null || idsubj == null || iduser == null) return; // bug kho' luong` // luu package trong thu muc mang ten "package" try { // luu file vau up de danh cho download neu can string fullpath = filepath + "/" + filename; if (!Directory.Exists(filepath)) Directory.CreateDirectory(filepath); if (!File.Exists(fullpath)) { FileStream fzs = File.Create(fullpath); while ((bytesRead = inputStream.Read(buffer, 0, buffer.Length)) != 0) { fzs.Write(buffer, 0, bytesRead); } fzs.Close(); } // luu cau truc file trong package inputStream.Position = 0; ZipInputStream zipStream = new ZipInputStream(inputStream); ZipEntry zippedFile = zipStream.GetNextEntry(); MemoryStream outputStream; while (zippedFile != null) { byte[] zbuffer = new byte[4094]; int zbytesRead; if (zippedFile.IsDirectory) // neu entry la directory { string subdir = filepath + "/" + zippedFile.Name; Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 129 Nguyễn Anh Việt Lưu Xuân Việt if (!Directory.Exists(subdir)) Directory.CreateDirectory(subdir); } if (zippedFile.IsFile) // la file { using (outputStream = new MemoryStream()) { // doc zipstream ra memory while ((zbytesRead = zipStream.Read(zbuffer, 0, zbuffer.Length)) != 0) { outputStream.Write(zbuffer, 0, zbytesRead); } outputStream.Position = 0; string fullfilepath = filepath + "/" + zippedFile.Name; if (!File.Exists(fullfilepath)) { // tao file tren web tu zipFile Entry FileStream fs = File.Create(fullfilepath); // ghi tu memmory ra file tren web while ((bytesRead = outputStream.Read(buffer, 0, buffer.Length)) != 0) { fs.Write(buffer, 0, bytesRead); } fs.Close(); } } } // next entry zippedFile = zipStream.GetNextEntry(); } }catch(Exception e){ msgdebug = e.ToString(); Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH } nfileloaded++; } 2. Các màn hình chính của công cụ soạn thảo a. Màn hình chính của công cụ soạn thảo SVTH: Thân Hoàng Lộc Trang 130 Nguyễn Anh Việt Lưu Xuân Việt Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH b. Màn hình tạo mới một bài giảng SVTH: Thân Hoàng Lộc Trang 131 Nguyễn Anh Việt Lưu Xuân Việt Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH c. Màn hình mở một bài giảng đã có để xem lại, chỉnh sửa… SVTH: Thân Hoàng Lộc Trang 132 Nguyễn Anh Việt Lưu Xuân Việt Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH d. Màn hình xem lại một bài giảng SVTH: Thân Hoàng Lộc Trang 133 Nguyễn Anh Việt Lưu Xuân Việt Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH e. Màn hình xem cấu trúc kịch bản của một bài giảng SVTH: Thân Hoàng Lộc Trang 134 Nguyễn Anh Việt Lưu Xuân Việt Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 135 Nguyễn Anh Việt Lưu Xuân Việt f. Quy trình lưu dữ liệu, đóng gói dữ liệu. Sau đây là phần trình bày quy trình đóng gói các dữ liệu để hổ trợ upload bài học lên website. Đoạn code sau mô tả việc sử dụng thư viện SharpZipLib để nén các file media và file cấu trúc thành một gói dữ liệu thuận tiện cho việc upload. private void BtnSave_Click(object sender, RoutedEventArgs e) { if (!HadOpen) return; if (CreatingLession) return; try { Stream mstr; string filename = ""; SaveFileDialog dlg = new SaveFileDialog(); dlg.Filter = "Xml File (*.xml)|*.xml|Package File (*.zip)|*.zip|All Files (*.*)|*.*"; dlg.FilterIndex = 1; dlg.Title = "Save EMedia Files"; dlg.InitialDirectory = wizard.getApplicationDirectory() + "Data"; //luu scriptlist if (dlg.ShowDialog() == true) { if ((mstr = dlg.OpenFile()) != null) { filename = dlg.SafeFileName; filename = filename.Remove(filename.IndexOf(".")) + ".xml"; StatusText1.Text = filename; using (StreamWriter wr = new StreamWriter(mstr)) { wr.Write(this._curless); } mstr.Close(); } } // yields, ngung` 1 lat SetTabPage(0); PropertiesText1.Text = thongbao3; for (int id = 0; id < 10; id++) Thread.Sleep(10); //luu package //get list if (filename.Length > 0) { Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 136 Nguyễn Anh Việt Lưu Xuân Việt List tmp = new List(); tmp.Add(filename); foreach (Section item in _newLession.secArray) { if (item.MediaType.Equals("video")) for (int id = 0; id < item.NumMedia; id++) tmp.Add(item.VideoSection[id]); else for (int id = 0; id < item.NumMedia; id++) tmp.Add(item.ImageSection[id]); } //zip , muc do: default string packagefilename = filename.Remove(filename.IndexOf(".")) + ".zip"; using (ZipOutputStream s = new ZipOutputStream(File.Create(packagefilename))) { byte[] buffer = new byte[4096]; foreach (string file in tmp) { ZipEntry entry = new ZipEntry(System.IO.Path.GetFileName(file)); entry.DateTime = DateTime.Now; s.PutNextEntry(entry); using (FileStream fs = File.OpenRead(file)) { int sourceBytes; do { sourceBytes = fs.Read(buffer, 0, buffer.Length); s.Write(buffer, 0, sourceBytes); } while (sourceBytes > 0); } } s.Finish(); s.Close(); } RunShell("Data"); } } catch { } } Sau khi thực hiện, chúng ta sẽ thu được kết quả là hai tập tin (file). Một file .zip để sử dụng upload nội dung đã soạn thảo (Nội dung bài giảng) lên website. File .xml là một file lưu lại cấu trúc soạn thảo mục đích cho giảng viên xem lại (Preview) nội dung bằng công cụ soạn thảo. Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 137 Nguyễn Anh Việt Lưu Xuân Việt 3. Vấn đề hạn chế và định hướng phát triển mở rông. a. Vấn đề còn hạn chế. Nhìn qua toàn bộ website chủ yếu tập trung phần thiết kế giao diện trên môi trường ngôn ngữ silverlight nên một số chức năng nâng cao cho ứng dụng của đề tài còn thiếu như: tìm kiếm dữ liệu theo khóa định sẵn (search tag), forum hổ trợ trao đổi thông tin giữa các đối tượng, một panel portal mở rộng… Về công cụ hổ trợ soạn thảo: chưa hoàn thiện các chức năng xem và trình bày, chức năng đọc gói dữ liệu, hỗ trợ thanh công cụ thay đổi nội dung. b. Hướng phát triển cho Ứng dụng. Định hướng cho phần mềm - Xây dựng và hoàn thiện thêm môt số chứa năng: Search, quản lý thông tin bài giảng, … - Mở rộng chức năng của Website, thêm diễn đàn trao đổi (Forum)…để cho Website đa dạng và phong phú hơn. Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 138 Nguyễn Anh Việt Lưu Xuân Việt Phụ lục A Các công cụ hỗ trợ Silverlight (Silverlight Tool) Nếu bạn chỉ muốn dùng Silverlight để xem những ứng dụng do người khác làm bạn có thể tải các phiên bản plug-in tại: Trong đó có phiên bản 1.0 và 2.0. Ngoài ra, nếu muốn tạo ra các ứng dụng Silverlight, bạn cần có thêm: Để cài đặt bộ công cụ chúng ta cần tiến hành các bước sau: Bước 1: Cài đặt Visual Studio 2008, sau đó update lên Microsoft Visual Studio 2008 Service Pack 1 (Installer) Bước 2: Cài đặt Microsoft Expression Blend, sau đó update lên Microsoft Expression Blend™ 2 Service Pack 1 Bước 3: Cài đặt Silverlight Tools for Visual Studio 2008 SP1 Tài liệu tham khảo - Ebook Apress.Silverlight Visual Essentials cuon 2.0 - Ebook OReilly.Essential.Silverlight.Sep.2007.pdf cuon 1.0 - MSDN Một số link URL: Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 139 Nguyễn Anh Việt Lưu Xuân Việt Phụ lục B Hướng dẫn sử dụng Công cụ soạn thảo bài giảng. • Công cụ soạn thảo bài giảng là một công cụ soạn thảo bài giảng điện tử hỗ trợ cho web BAIGIANGDIENTUONLINE. Với những tương tác trực quan cũng như cách diễn giải dễ hiểu sẽ giúp bạn thao tác tốt hơn. Công cụ soạn thảo bài giảng gồm có 3 chức năng chính : - Tạo một bài giảng mới. - Đọc một bài giảng và chỉnh sửa các mục, phần trong bài giảng. - Lưu và đóng gói bài giảng. • Hướng dẫn chi tiết sử dụng các chức năng : 1. Tạo một bài giảng mới : - Chọn mục “Tạo mới” trong menu “Chương trình” hoặc icon “Tạo mới” trên toolbar để tạo một bài giảng mới. - Chương trình hỗ trợ các bước soạn thảo bài giảng theo dạng wizard rất tiện để bạn thao tác. Wizard bao gồm 3 bước chính : Bước 1: Nhập tựa đề của bài giảng, mô tả bài giảng (sơ lược), số phần (section) trong bài giảng. Bước 2: Nhập chi tiết các phần trong bài giảng bao gồm : tựa đề, mô tả chi tiết, video hoặc hình ảnh đi kèm (nếu có). Bước 3: Hiện kết quả cây bài giảng, nếu bạn thấy chưa đúng có thể nhấn “Lùi” để quay trở về các bước trước để chỉnh sửa lại. Nhấn “Xong” để hoàn tất việc tạo bài giảng mới. - Lưu ý : Ở mỗi bước bạn nhấn “Hủy” để dừng việc soạn thảo lại. Khi soạn thảo xong một bài giảng mới phải lưu lại (chọn menu “Chương trình” → “Lưu” hoặc chọn icon “Lưu”). 2. Đọc một bài giảng và chỉnh sửa các mục, phần trong bài giảng. Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH SVTH: Thân Hoàng Lộc Trang 140 Nguyễn Anh Việt Lưu Xuân Việt Chọn mục “Mở” trong menu “Chương trình” hoặc icon “Mở” trên toolbar để mở một bài giảng của bạn. Đuôi file là .xml Bạn có thể xem, chỉnh sửa nội dụng của bài giảng và lưu những thay đổi. 3. Sau khi hoàn tất việc soạn bài giảng, chương trình sẽ hiển thị kết quả cây bài giảng ở bên phần trái của chương trình. Khi lưu chương trình sẽ tạo 2 file .xml và .zip. Khi upload lên website, ta sử dụng file đóng gói .zip để tải lên. Website sẽ tự bung nén và lấy nội dung bên trong thể hiện lên website. Chương trình còn một vài chức năng khác đang hoàn thiện như chức năng soạn text, chức năng, các phím tắt trên Menu... Để xem phần hướng dẫn này trên công cụ soạn thảo. Bạn chọn Menu “hướng dẫn” trên thanh Menu.

Các file đính kèm theo tài liệu này:

  • pdfNghiên cứu Silversight và xây dựng ứng dụng web hỗ trợ phát triển bài giảng dạng Multimedia.pdf