- Silverlight là một nền chéo, nền trình duyệt chéo của RIAs - Silverlight hỗ trợ phát lại Windows Media và các file âm thanh trên PC và MAC mà không phụ thuộc vào Windows Media Player -
Trang 1SVTH: Thân Hoàng Lộc Trang 1
Nguyễn Anh Việt
Lưu Xuân Việt
Phần I:
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)
Trang 2SVTH: Thân Hoàng Lộc Trang 2
Nguyễn Anh Việt
Lưu Xuân Việt
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
Trang 3SVTH: Thân Hoàng Lộc Trang 3
Nguyễn Anh Việt
Lưu Xuân Việt
1 Silverlight (Ánh sáng bạc) là gì?
SilverLight đơn giản là một nền Web được xây dựng để chạy RIAs Một phần của nền web đó thực chất là một Plug-in mà chạy bên trong bộ trình duyệt
- Silverlight là một nền chéo, nền trình duyệt chéo của RIAs
- Silverlight hỗ trợ phát lại Windows Media và các file âm thanh trên PC và MAC
mà không phụ thuộc vào Windows Media Player
- Sử dụng XAML, HTML, và JavaScript, nó hỗ trợ đồ họa, hoạt ảnh, đa phương tiện và mở rộng ra hơn những gì mà AJAX có thể hỗ trợ
về chi phí trên tất cả các trình duyệt chính như FireFox, Safari, và Internet Explorer chạy trên nền Mac hoặc Windows Với Expression Studio và Visual Studio, nhà phát triển và nhà thiết kế có thể hợp tác một cách hiệu quả, dùng các kỹ năng hiện có để phát triển các sản phẩm Web tương lai
2 Silverlight – Ứng dụng cơ bản với sự phong phú trong đồ họa và tương tác với người dùng (User)
Người lập trình Web và thiết kế đồ họa có thể tạo ra nhiều ứng dụng Silverlight cơ bản với sự đa dạng trong cách thể hiện Ta cũng có thể sử dụng Silverlight Markup để tạo
ra Media và Graphics và vận dụng chúng với sự đa dạng của ngôn ngữ và quản lý Code
Trang 4SVTH: Thân Hoàng Lộc Trang 4
Nguyễn Anh Việt
Lưu Xuân Việt
Silverlight cũng cho phép bạn sử dụng những công cụ chất lượng chuyên nghiệp như Visual Studio cho coding và Microsoft Expression Blend cho thiết kế hình ảnh và giao diện
3 Nét đặc trưng của Silverlight.
Silverlight kết hợp nhiều kỹ thuật trong việc phát triển một nền tảng đơn mà cho phép ta chọn lựa những công cụ và ngôn ngữ lập trình thích hợp mà ta cần tới Các tính năng của Silverlight:
- WPF và XAML: Silverlight gồm có một tập kỹ thuật con WPF (Windows Presentation Foundation) gồm nhiều thành phần mở rộng trong trình duyệt dành cho UI WPF cho phép ta tạo ra những hình ảnh, hoạt cảnh (amination), media và nhiều nét đặc trưng phong phú trên máy trạm (Client), phần mở rộng của trình
duyệt cơ bản UI ngoại trừ những gì chỉ có hiệu lực với HTML XAML (Extensible Application Markup Language) cung cấp một cú pháp khai báo “Markup” tạo ra
các phần tử để xây dựng những ứng dụng Silverlight cơ bản như: text, controls, graphics, và animation
- Mở rộng với JavaScipt Silverlight không những cung cấp những phần mở rộng của các ngôn ngữ kịch bản trong nhiều trình duyệt phổ biến mà còn cung cấp các
“Control” bên trong trình duyệt UI, bao gồm cả khả năng làm việc với các phần tử
WPF
- Hỗ trợ những nền tảng (platform), trình duyệt đa nhiệm Silverlight chạy trên hầu hết các trình duyệt đa nhiệm (Bất kỳ nền tảng nào) Chúng ta có thể thiết kế và trình bày mà không phải lo lắng về vấn đề trình duyệt nào hoặc nền tảng nào
(platform) và người sử dụng có hay không
- Tương thích với mọi ứng dụng hiện tại Silverlight tương thích hoàn toàn với với
mã JavaScript, ASP.NET AJAX hiện nay kể cả những hàm mở rộng ta đã khởi tạo
Ta có thể khởi tạo một tài nguyên cơ bàn trên máy chủ (Server) trong ASP.NET và
Trang 5SVTH: Thân Hoàng Lộc Trang 5
Nguyễn Anh Việt
Lưu Xuân Việt
- Mạng hỗ trợ Silverlight được hỗ trợ HTTP qua giao thức TCP Ta có thể kết nối những dịch vụ: WCF, SOAP, hoặc ASP.NET AJAX và thu nhận dữ liệu XML, JSON, hoặc RSS
4 Chạy Silverlight cơ bản
- Ứng dụng Silverlight cơ bản chạy trên các trình duyệt Những ứng dụng được tạo
ra trong Silverlight chắc chắn sẽ chạy được trên các trình duyệt mà không cần phải thêm một đoạn mã (Code) mới nào Để chạy được những ứng dụng Silverlight cơ bản này, người dùng (User) cần đến 1 trình nhúng (Plug-in) nhỏ vào trong trình duyệt Plug-in này hoàn toàn miễn phí Nếu người dùng chưa cài đặt Plug-in, chúng sẽ tự động nhắc người dùng cài đặt vào Việc tải về và cài đặt chỉ trong vòng vài giây và phụ thuộc vào việc mong muốn hay loại bỏ việc cài đặt phía người dùng
5 Tạo một ứng dụng Silverlight cơ bản
Chúng ta có thể tạo một ứng dụng Silverlight cơ bản sử dụng bất kỳ NET Framework nào với sự hỗ trợ của ngôn ngữ (bao gồm Visual Basic, C#, và JavaScript) Visual Studio 2008 và Expression Blend cung cấp và hỗ trợ cho sự phát triển ứng dụng Silverlight Chúng ta cũng có thể tạo một trang Web mà sử dụng cả hai phần tử WPF và HTML với Silverlight Cũng giống như HTML, XAML cũng cho phép ta tạo ra những UI cho những nền ứng dụng Web với những cú pháp đã khai báo Nhưng có sự khác biệt là XAML cung cấp nhiều phần tử mạnh mẽ hơn
Trang 6SVTH: Thân Hoàng Lộc Trang 6
Nguyễn Anh Việt
Lưu Xuân Việt
II BẢN ĐỒ SILVERLIGHT
Chủ đề này cung cấp một cái nhìn tổng thể về những nét đặc trưng chính trong việc phát triển ứng dụng cơ bản Silverlight Nó bao gồm những bước phổ biến để tạo một ứng dụng cơ bản Silverlight với những đoạn code ví dụ giúp bạn trong những bước đầu viết code
Chủ đề này bao gồm những phần sau:
1 Yêu cầu cơ bản ( Prerequisites )
Bạn có thể chạy tất cả các ví dụ có trong chủ đề này mà không cần cài đặt thêm bất
cứ cái gì ngoại trừ trình thực thi Silverlight 2 Bên cạnh đó, nếu bạn muốn thêm vào hay sửa đổi ví dụ, bạn sẽ cần phải thêm những công cụ Silverlight và làm việc với một đề án (project) Silverlight
Chủ đề này sử dụng ứng dụng API cho Silverlight Bạn cũng cần phải trình bày ứng dụng nền Silverlight sử dụng JavaScript API cho Silverlight
Trang 7SVTH: Thân Hoàng Lộc Trang 7
Nguyễn Anh Việt
Lưu Xuân Việt
XAML có trong Silverlight là một tập con của XAML trên NET 3.0, trong đó đã
bị hạn chế một số tính năng như đồ họa 3D nhằm giữ tính tương thích trên nhiều nền tảng
và trình duyệt khác nhau
Bạn có thể tạo tất cả các UI của mình trong XAML, hoặc bạn có thể sử dụng Microsoft Expression Blend để xây dựng các UI trong ứng dụng của mình Expression Blend là một bộ công cụ thiết kế với giao diện thiết kế WYSIWYG để tạo nên những trình ứng dụng nền Silverlight Expression Blend sinh ra một file XAML mà bạn có thể dùng để soạn thảo trực tiếp Bạn cũng có thể móc nối những sự kiện và viết code-behind với Expression Blend
4 Layout
Khi tạo một ứng dụng nền Silverlight, điều đầu tiên bạn cần phải làm là xác định việc bố trí giao diện (UI) như thế nào Silverlight cung cấp 3 loại panel bố trí để bạn có
Trang 8SVTH: Thân Hoàng Lộc Trang 8
Nguyễn Anh Việt
Lưu Xuân Việt
thể sử dụng Trong 3 loại đó, panel Grid có tính chất mềm dẻo và mạnh mẽ nhất, do đó giá trị mặc định ban đầu là Grid
Container Mô tả
Canvas Vị trí tuyệt đối của những phần tử con trong không gian x,y
StackPanel Vị trí tương đối của 1 phần tử con với một phần tử khác theo chiều
ngang hoặc chiều dọc
Grid Vị trí của những phần tử con trong hàng và cột
Trong ví dụ dưới đây, một phần tử hình chữ nhật là chỗ ô 1,1 của 1 Grid Grid sử dụng chỉ mục bắt đầu là 0, vì vậy hình chữ nhật xuất hiện ở ô phải-dưới
Trang 9Xuyên suốt Silverlight với những ví dụ mẫu mặc định cho mỗi loại Control và thấy được cách dùng những Control như thế nào Tuy nhiên, bạn cũng có thể tạo nên những mẫu riêng thay đổi sự xuất hiện và cách cách xử lí nhìn trực quan hơn đối với tất cả các Control
Tiếp theo ví dụ ở trên, Chúng ta thêm một Button vào ô 0,0 của Grid
XAML
Nguyễn Anh Việt
Lưu Xuân Việt
Trang 10
Nguyễn Anh Việt
Lưu Xuân Việt
Trang 11
SVTH: Thân Hoàng Lộc Trang 11
Nguyễn Anh Việt
Lưu Xuân Việt
6 Thêm những Code Logic (Adding Code Logic)
Mặc định, trong một đề án Visual Studio gồm có một tập tin mã (code file), đôi khi
sẽ gọi một tập tin code behind Tập tin code thuần một ngôn ngữ và được Silverlight hỗ
trợ (Support) trong suốt quá trình thực thi (CLR – Common Language Runtime) ví dụ
như: C# hoặc Visual Basic
Tên của tập tin Code-Behind là Page.xaml và nó gắn liền với loại ngôn ngữ đã được chọn
(Trong ví dụ này là Page.xaml.cs) Tập tin Code-Behind là nơi mà chúng ta có thể thay
đổi cấu trúc logic những đối tượng trong XAML Chúng ta có thể tạo những đối tượng UI
trong đoạn code và thêm chúng lên cây hiển thị các phần tử Trong việc thêm vào này,
chúng tạo nên những lớp bên trong tập tin code-behind (Hoặc bất kỳ tập tin code nào
trong đề án) có thể truy xuất được trong XAML
Trong ví dụ sau chúng ta thêm vào một sự kiện Click nhằm thay đổi màu của hình chữ
nhật thành màu xanh
Trong XAML, thêm một sự kiện click vào Button và thuộc tính x:Name vào Rectangle
X:Name cho phép chúng tham chiếu vào trong Rectangle trong tập tin Code-Behind:
Trang 12SVTH: Thân Hoàng Lộc Trang 12
Nguyễn Anh Việt
Lưu Xuân Việt
7 Ngôn ngữ chức năng (Dynamic Languages)
Những công cụ trong Visual Studio cho Silverlight bao gồm ngôn ngữ thực thi chức năng (Dynamic Language Runtime - DLR) cho phép người dùng sử dụng các ngôn
ngữ chức năng như Python và Ruby để viết ứng dụng nền Silverlight Ngôn ngữ chức
năng là những gói mã nguồn ( Source code) không biên dịch trong quá trình lắp, nối (assemblies) và mã (code) của chúng có thể được sinh ra và biên dịch trong quá trình thực thi Chúng tương thích tốt và mền dẻo trong quá trình tương tác trình bày Silverlight bao gồm 3 ngôn ngữ chức năng: IronPython, IronRuby, and Managed Jscript
8 Đồ họa (Graphics)
Silverlight cung cấp nhiều tùy chọn trong việc thêm vào những tính năng trực quan trong ứng dụng của bạn Bạn có thể sử dụng thuật vẽ (Drawing), khuôn hình (Shapes), đường vẽ (paths) và những hình học phức tạp Khu vực khai báo hình học có thể được lấp đầy bởi nhiều hiệu ứng như: hình ảnh, độ nghiêng màu hoặc những Video clip
Bạn cũng có thể thêm vào hình ảnh hoặc hiệu ứng hình ảnh trong ứng dụng Silverlight cũng tính đến cách nhìn theo chiều sâu (Deep Zoom) cho phép bạn dễ dàng nhìn thấy và quét góc nhìn chi tiết những hình ảnh
Ví dụ đầy đủ về hình chữ nhật với những bút kẻ nghiêng (linear gradient brush):
Trang 13SVTH: Thân Hoàng Lộc Trang 13
Nguyễn Anh Việt
Lưu Xuân Việt
<GradientStop Offset="0" Color="LightBlue"/>
<GradientStop Offset="0.4" Color="Blue"/>
<GradientStop Offset="0.8" Color="Purple"/>
<GradientStop Offset="1.0" Color="Lavender"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
9 Media và Animation (Media and Animation)
Ngoài việc thêm vào những hình tĩnh, bạn có thể thêm vào những ảnh động, âm thanh (audio) và video nhằm tạo nên nhiều tính năng và sự tương tác cho ứng dụng
Tiếp theo ví dụ tạo hình chữ nhật ở ví dụ trước Chúng sẽ tự phóng to và thu nhỏ cho tới khi nhấp vào button Stop
Trang 14SVTH: Thân Hoàng Lộc Trang 14
Nguyễn Anh Việt
Lưu Xuân Việt
Storyboard.TargetProperty="Height"
From="0" To="100" AutoReverse="True" Duration="0:0:02"
RepeatBehavior="Forever"/>
<DoubleAnimation Storyboard.TargetName="rect1"
Storyboard.TargetProperty="Width"
From="0" To="100" AutoReverse="True" Duration="0:0:04"
Trang 15SVTH: Thân Hoàng Lộc Trang 15
Nguyễn Anh Việt
Lưu Xuân Việt
Trang 16SVTH: Thân Hoàng Lộc Trang 16
Nguyễn Anh Việt
Lưu Xuân Việt
Dữ liệu có thể mang vào trong ứng dụng từ những nguồn (Source) cung cấp dồi dào Chẳng hạn như nguồn cung cấp RSS, nhưng thường định dạng theo kiểu XML Silverlight bao gồm XmlReader và LINQ dùng cho việc phân tách dữ liệu XML LINQ thích hợp cho việc phân tách những phần dữ liệu nhỏ
11 Hệ thống mạng (Networking)
Silverlight cung cấp vài nét đặc trưng trong sự kết nối truyền thông Lớp WebClient điều khiển sự truyền tải nội dung tới máy trạm (Client) Bạn cũng có thể sử dụng lớp WebClient để gởi và nhận một thông điệp XML đơn giản Ứng dụng nền
Trang 17SVTH: Thân Hoàng Lộc Trang 17
Nguyễn Anh Việt
Lưu Xuân Việt
Silverlight cũng có thể truy xuất Web Service như là WCF (Windows Communication Foundation), SOAP, và ASP.NET AJAX
III KIẾN TRÚC SILVERLIGHT (Silverlight Architecture)
Silverlight không chỉ là một bức tranh đa dạng quyến rũ, tương tác với Web và chứa đựng Media đến với người dùng cuối (end user) Mà sức mạnh của nó là yêu cầu nền tảng phát triển nhẹ nên tính linh động cao, nền tảng đa nhiệm, ứng dụng mạng tích hợp nhiều dữ liệu và dịch vụ từ nhiều nguồn khác nhau Hơn nữa, Silverlight cho phép bạn xây dựng những giao diện người dùng với sự thay đổi đáng kể những nét đặc trưng bởi kinh nghiệm từng trải của người dùng cuối so sánh được với những ứng dụng Web truyền thống
Trong khi Silverlight đóng vai trò như là một ứng dụng khách bên cạnh môi trường thực thi đơn và gói gọn trong 1 kích cỡ nào đó Và nền tảng phát triển Silverlight hòa nhập với một số nét đặc trưng tiêu biểu với kỹ thuật phức tạp, chúng tạo nên sự gần gũi với người lập trình Để tạo một ứng dụng nền Silverlight hiệu quả, người lập trình cần phải làm việc và am hiểu kiến trúc nền vững chắc
Chú ý:
Phiên bản Silverlight 2 hỗ trợ 2 kiểu lập trình: JavaScript API đối với Silverlight
và Quản lý (the Managed) API đối với Silverlight Quản lý API là một tập con của NET FrameWork Nhiều nét đặc trưng của Silverlight mà chỉ có Managed API mới hỗ trợ được
1 Nền tảng Silverlight (The Silverlight Platform) Nền tảng Silverlight gồm có 2 phần chính: Cài đặt và nâng cấp các thành phần Được mô tả như bảng sau:
Trang 18SVTH: Thân Hoàng Lộc Trang 18
Nguyễn Anh Việt
Lưu Xuân Việt
.NET
Framework cho
Silverlight
Một tập hợp con của NET Framework chứa đựng những thành phần
và thư viện, bao gồm tích hợp dữ liệu control Windows mở rộng, hệ thống mạng, lớp thư viện cơ bản, tập hợp dữ liệu rác và CLR (common Language Runtime) Một vài phần của NET Framework cho Silverlight là sự triển khai cùng với ứng dụng Nhiều thư viện Silverlight (Silverlight Libraries) là sự hợp thành không phải trong lúc thực thi và trong phần mở rộng của Silverlight SDK Những thư viện Silverlight sử dụng sẽ được đóng gói cùng với ứng dụng và được tải lên trình duyệt Bao gồm: những Control UI mới, XLINQ, Syndication (RSS/Atom), XML serialization và DLR (dynamic language runtime)
Trang 19Hình 3 Bảng mô tả các thành phần hợp thành kiến trúc Silverlight, các thành phần quan
hệ và dịch vụ
Nguyễn Anh Việt
Lưu Xuân Việt
Trang 20
SVTH: Thân Hoàng Lộc Trang 20
Nguyễn Anh Việt
Lưu Xuân Việt
Có những giá trị riêng trong việc thiết lập nối kết các công cụ, kỹ thuật, kể cả những dịch vụ trong nền Silverlight: chúng dễ dàng giúp người lập trình tạo nên sự phong phú, khả năng tương tác và ứng dụng mạng Mặc dù dễ dàng thực hiện việc xây dựng những ứng dụng sử dụng những công cụ và kỹ thuật web hiện nay Người lập trình vẫn bị cản trở bởi những kỹ thuật khó Kể cả sự không tương thích nền tảng lập trình, sự khác nhau trong phương thức truyền và định dạng tập tin, và sự khác nhau trong những trình duyệt Web dẫn đến những trang hồi đáp, những tập lệnh truy xuất khác nhau Một ứng dụng Web phong phú có thể chạy hoàn toàn tốt trên một hệ thống và trình duyệt nhưng nó cũng có thể hoạt động không tốt trên một hệ thống và trình duyệt khác, hoặc không chạy được Các mảng kỹ thuật, phương thức truyền và công cụ ngày nay rất rộng, nó rất là có quy mô…
- Có khả năng tạo những ứng dụng tương tự mà người dùng đã từng trải trên những trình duyệt và nền tảng đa nhiệm Vì vậy chúng trông bắt mắt hơn và dễ thực thi hơn ở bất cứ nơi đâu
- Sự tích hợp dữ liệu và dịch vụ từ nhiều hệ thống mạng vào trong ứng dụng sử dụng
những lớp NET Framework và các hàm xử lý quen thuộc
- Media phong phú, thuyết phục và giao diện gần gũi với người dùng (UI)
- Silverlight dễ dàng tạo dựng cho người phát triển xây dựng những ứng dụng Bởi
vì nó khắc phục nhiều sự không tương thích trong những kỹ thuật hiện hành và cung cấp bên trong một nền tảng công cụ tạo dựng phong phú, nền tảng đa nhiệm
và những ứng dụng đồng nhất
Trang 21SVTH: Thân Hoàng Lộc Trang 21
Nguyễn Anh Việt
Lưu Xuân Việt
2 Các thành phần bên trong (Core Presentation Components)
Tính năng Miêu tả
Input Những xử lý được nhập vào từ những thiết bị phần cứng như: bàn phím,
chuột, bút vẽ (drawing) hoặc một thiết bị nhập khác
UI rendering Định hướng mô tả và những ảnh đồ họa bitmap, hình động (animations) và
văn bản (text)
Media Phát lại với nét đặc trưng và cách quản lý các tập tin audio và video khác
nhau, chẳng hạn như những tập tin với phần mở rộng: WMP và MP3
Controls Hỗ trợ những control mở rộng mà có thể tùy biến tạo mẫu xuyên xuốt ứng
dụng
Layout Cho phép bố trí các chứng năng của các thành phần UI
Data binding Cho phép nối kết những đối tượng và thành phần UI
DRM Cho phép quản lý số hóa các tài nguyên media
XAML Cung cấp một sự phân chia và đánh dấu cho XAML
Bảng mô tả các thành phần bên trong tiêu biểu của nền tảng Silverlight thể hiện trên hình 3
Người phát triển cũng tương tác với Framework thể hiện này bởi sử dụng XAML chỉ định rõ những chi tiết trình bày XAML là điểm chính của sự tương tác giữa NET Framework và các lớp thể hiện Người phát triển có thể vận dụng những cách lập trình để thể hiện các lớp trong cách quản lý code
Trang 22SVTH: Thân Hoàng Lộc Trang 22
Nguyễn Anh Việt
Lưu Xuân Việt
DLR (dynamic
language runtime)
Hỗ trợ biên dịch những chức năng và thi hành những ngôn ngữ kịch bản như JavaScript và IronPython trong những chương trình ứng
Trang 23SVTH: Thân Hoàng Lộc Trang 23
Nguyễn Anh Việt
Lưu Xuân Việt
Người phát triển có thể tương tác với những lớp NET Framework của Silverlight bằng cách viết những mã (code) quản lý sử dụng ngôn ngữ C# hoặc Visual Basic Người phát triển NET Framework cũng có thể truy xuất những lớp thể hiện thông qua Visual Studio 2008 hoặc Microsoft Expression Blend
Việc thêm vào chương trình Silverlight những tính năng giúp cho người phát triển tạo được sự đa dạng và phong phú cho ứng dụng Bao gồm những tính năng mô tả trong bảng sau:
Tính năng Miêu tả
Isolated storage
Cung cấp sự truy xuất an toàn từ máy trạm (Client) Silverlight tới những tập tin cục bộ hệ thống Cho phép lưu giữ cục bộ và tạm thời những dữ liệu riêng của người dùng
Asynchronous
programming
Một nền của người làm việc với những chuỗi chứa đựng những yêu cầu lập trình bên ngoài trong khi ứng dụng không ràng buộc người sử
Trang 24SVTH: Thân Hoàng Lộc Trang 24
Nguyễn Anh Việt
Lưu Xuân Việt
Cho phép người lập trình NET Framework trực tiếp thao tác trên phần
tử UI trong HTML DOM của trang Web Người lập trình Web cũng có thể sử dụng JavaScript để gọi trực tiếp những code quản lý bên trong
và truy xuất đối tượng scriptable, thuộc tính (properties), Sự kiện (events), và phương thức (methods)
Serialization Cung cấp sự hỗ trợ đa dạng của kiểu CLR với JSON và XML
Packaging
Cung cấp những lớp ứng dụng và xây dựng công cụ tạo những gói xap Những gói xap chứa đựng ứng dụng và những điểm tiếp nhận điều khiển (control) việc chạy của Silverlight plug-in
XML libraries
Những lớp XmlReader và XmlWriter đơn giản hóa việc làm việc với
dữ liệu XML từ những dịch vụ Web (Web services) Tính năng Xlinq cho phép người lập trình truy vấn dữ liệu trực tiếp bên trong ngôn ngữ lập trình NET Framework
4 Hỗ trợ những hệ điều hành và trình duyệt
Bởi vì Silverlight là một ứng dụng nền đa nhiệm, chúng chạy trên hầu hết những trình duyệt Web hiện hành
Trang 25Hình 4: Bảng mô tả tính tương thích của hệ điều hành và trình duyệt
(Nguồn http://www.microsoft.com/silverlight/resources/install.aspx#sysreq )
IV MÔ HÌNH ỨNG DỤNG VÀ LẬP TRÌNH
Mục tiêu của Silverlight 2 đối với hầu hết các ứng dụng là viết code quản lý sử dụng những ứng dụng mới nhất trong Silverlight Bên cạnh đó, bạn có thể sử dụng những tùy chọn để làm đơn giản hóa thay cho những mẫu lập trình
Silverlight cung cấp 2 kiểu lập trình riêng biệt trong việc xây dựng những ứng dụng:
Nguyễn Anh Việt
Lưu Xuân Việt
Trang 26
SVTH: Thân Hoàng Lộc Trang 26
Nguyễn Anh Việt
Lưu Xuân Việt
- Quản lý API với Silverlight Mục đích nhằm biên dịch và chạy code trên CLR (common language runtime) hoặc trên DLR (dynamic language runtime) đối với Silverlight
- JavaScript với Silverlight Thể hiện lên trình duyệt sử dụng code JavaScript
Những mô hình lập trình này hoàn toàn khác biệt bởi vì chúng ta không thể đồng thời sử dụng cả hai kiểu lập trình trên đối với một trường hợp cụ thể trong một Silverlight plug-in Tuy nhiên, bạn cũng có thể thi hành việc trang trí màn hình nền bằng cách sử dụng một đoạn code JavaScript khi chuyển trạng thái qua managed API trong lúc tải ứng dụng lên
The managed API cung cấp nhiều hàm xử lý hơn JavaScript API, và đây là một điểm nổi bật của Silverlight Những ứng dụng sử dụng managed API truy xuất tới những phiên bản NET Framework nhẹ hơn Còn đối với JavaScript API chỉ truy xuất và thể hiện nội dung của Silverlight và những đoạn JavaScript nhúng vào trình duyệt
1 Lập trình quản lý và mô hình ứng dụng (Managed Programming and the Application Model)
Managed API cho phép bạn gói những trình điều khiển và những tập tin tài nguyên vào trong một gói tập tin ứng dụng (.xap) Silverlight plug-in có nhiệm vụ tải những gói ứng dụng này lên và rút trích nội dung bên trong
Một gói ứng dụng chỉ chứa một nhóm hành động với những lớp đã được khai báo trên ứng dụng Lớp ứng dụng gói gọn sự tương tác giữa ứng dụng và Silverlight plug-in Chẳng hạn như, nó cho phép bạn trình bày một giao diện người dùng tương tác với trang web chủ Thêm vào đó, nó cung cấp những event của ứng dụng thường trực và quản lý tài nguyên
Trang 27SVTH: Thân Hoàng Lộc Trang 27
Nguyễn Anh Việt
Lưu Xuân Việt
Điểm mạnh của Silverlight là sử dụng những mô hình ứng dụng giới hạn đề cập tới những gói ứng dụng và những hàm đã được đóng gói bởi những lớp Application Mô hình ứng dụng giúp chúng ta trình bày được cả những ứng dụng đơn giản và phức tạp Có thể
mở rộng ứng dụng này bằng cách chia sẻ những tài nguyên trên mạng
A Managed API for Silverlight
Bạn có thể sử dụng ngôn ngữ đánh dấu XAML gói gọn những giao diện người dùng đã thiết kế vào trong managed API và JavaScript API Với managed API, bạn có thể đưa thừa số code ứng dụng vào nhiều tập tin (File) và cung cấp thêm code-behind kèm theo
Khi Silverlight plug-in tải những những tập tin XAML lên, nó sẽ tạo ra một cây đối tượng mà những mã bên trong (code-Behind) có thể thao tác Những mã quản lý ứng dụng cũng có thể được thao tác bởi HTML DOM (Document Object Model) thông qua cầu nối HTML
Silverlight API định nghĩa việc thiết lập đối tượng y như là một cây đối tượng mà cho phép bạn chứa đựng nội dung khởi tạo ban đầu của ứng dụng nền Silverlight được tải lên bởi XAML, và điều chỉnh cây đối tượng này trong thời gian thực thi Bên trong managed API, sự tương tác với cây đối tượng Silverlight là định nghĩa với managed code
Sử dụng CLR, managed code là sự biên dịch vào bên trong assembly Assembly tiêu biểu cũng chứa đựng XAML cho ứng dụng nền Silverlight Managed code có thể Support cho
mô hình ứng dụng Silverlight, và có thể gọi hồi đáp của đối tượng trong suốt thời gian sống của những event, hoặc là những event khởi tạo user Bạn cũng có thể sử dụng managed code để viết những lớp hỗ trợ, định nghĩa những đối tượng data, và cho nhiều những kịch bản ứng dụng khác Bạn cũng có thể sử dụng DLR nhiều hơn CLR, vấn đề này đang được tranh luận trong Dynamic Languages in Silverlight 2
Trang 28SVTH: Thân Hoàng Lộc Trang 28
Nguyễn Anh Việt
Lưu Xuân Việt
là một vấn đề xuất phát từ những lớp hoặc control hiện hành được hỗ trợ một cách hữu ích trong những hàm xử lý cơ bản Và cũng có thể khai báo bằng một số phần tử hỗ trợ như: tạo mới một control template, cập nhật những lớp event handle…v…v…Mở rộng việc quản lý code cũng là khái niệm cơ bản của việc quản lý và lập trình NET Framework và đây cũng không phải là một vấn đề đơn giản trong Silverlight
b Cây đối tượng (Object Trees)
Cây đối tượng là khái niệm tồn tại trong JavaScript API, và sự vận dụng cây vào trong mô hình này cũng có giới hạn bởi vì nó không có một đối tượng kỹ thuật khởi tạo Trong quản lý API, bạn có thể gọi hàm khởi tạo bên trong những lớp và có thể thêm vào cây mà không cần sử dụng phân tích XAML làm trung gian Thật ra, bạn có thể xây dựng một cây thật quy mô hoàn toàn trong khai báo code bằng cách gọi sự khởi tạo liên tục và thêm những đối tượng vào cây đối tượng bắt đầu từ root và xuyên suốt trong các thuộc tính con (Children)
Bạn có thể tham chiếu các đối tượng trong cây đối tượng suốt thời gian thực thi của Silverlight bằng cách quản lý code hoặc JavaScript
Trang 29SVTH: Thân Hoàng Lộc Trang 29
Nguyễn Anh Việt
Lưu Xuân Việt
Code-Behind là một thuật ngữ sử dụng miêu tả code tham gia vào một lớp thành phần với trang XAML khi tạo dựng hoặc biên dịch ứng dụng
d Chuẩn hóa tương tác DOM (Formalized DOM Interaction)
Trong JavaScript API, tham chiếu đối tượng hoặc biến trong HTML DOM từ Silverlight nguyên bản hoặc ngược lại không có liên quan gì bởi vì chính nó đã có thể trình bày được bởi sự tồn tại của nó trong trình duyệt hoặc trong một phạm vi nào đó Trong code quản lý API, một phân đoạn định dạng đã tồn tại bởi vì code quản lý sử dụng
Trang 30SVTH: Thân Hoàng Lộc Trang 30
Nguyễn Anh Việt
Lưu Xuân Việt
thư viện trong Silverlight và chính CLR chứ không phải là trình duyệt Sự tương tác với DOM từ quản lý API, bạn có thể sử dụng một chuỗi những đặc trưng mà đôi khi những tập chuỗi này được tham chiếu như là một cầu nối HTML, hoặc cầu nối HTML DOM Bao gồm những phần sau:
• APIs đưa ra những nhiệm vụ xử dụng DOM phổ biến (trong những trường hợp, tài liệu đối tượng) để code quản lý
• Điều kiện dễ dàng có thể tạo những kiểu quản lý chính từ DOM
• Kỹ thuật chuyển đổi những kiểu quản lý phát sinh từ những giá trị hoặc đối tượng chính JavaScript
• APIs đưa ra những nét đặc trưng của đối tượng Silverlight plug-in trình bày trong DOM
B JavaScript API for Silverlight
JavaScript API là một mô hình đã được tích hợp sẵn trong bản Silverlight 1.0, và
nó vẫn giữ được tính tương thích cũng như chạy những kịch bản ngoại lệ
Trong JavaScript API, Silverlight plug-in tải lên một trang XAML đơn thay vì một gói ứng dụng Trang XAML có thể bao gồm URL tham vấn tới một tài nguyên bên ngoài máy chủ (Server), như là hình ảnh và Video Silverlight plug-in sử dụng XAML để tạo nên một cây đối tượng mà chúng ta có thể vận dụng nhiều cách lập trình sử dụng JavaScript trong tranh HTML chính
JavaScript không cung cấp một mô hình ứng dụng riêng nhưng nó hỗ trợ với sự điều hướng trong nội dung ứng dụng để giải quyết những vấn đề phức tạp Bên cạnh đó,
nó cũng có thể giải quyết những kịch bản “cồng kềnh” như trong managed API ví dụ như trang trí màn hình nền (splash screens) Bạn cũng có thể tải lên những trang XAML mới
Trang 31SVTH: Thân Hoàng Lộc Trang 31
Nguyễn Anh Việt
Lưu Xuân Việt
trong Silverlight plug-in hoặc những trang web mới trong trình duyệt và định hướng thực thi ban đầu cho chúng
Trong một vài trường hợp, JavaScript API với Silverlight phụ thuộc vào nhau nhiều hơn
so với Code quản lý
1 Cân nhắc kiểu lập trình (Programming Model Considerations)
JavaScript API với Silverlight là kiểu lập trình mà đã được tích hợp sẵn trong phiên bản 1.0 của Silverlight Nó sử dụng những tập con nhỏ của đối tượng mà sẵn sàng dùng được trong Silverlight 2, cộng với một số đối tượng riêng biệt trong JavaScript API
Tập con này cũng cân nhắc sự ảnh hưởng với những đối tượng mà bạn khai báo trong XAML Phân tách XAML của Silverlight chỉ tạo nên đối tượng bên trong cây đối tượng của những tập con này Bởi vì cây đối tượng được tạo nên trên nền code cố định thi hành những cái bên dưới JavaScript Nói cách khác, tập con và sự cân nhắc giới hạn mà
áp dụng với JavaScript API cho Silverlight là sự có thật nhiều hơn ngôn ngữ mà bạn lựa chọn để viết cho chuỗi lý luận bên trong code-behind; Lựa chọn lập trình kiểu API cho phép bạn xác định rõ những đối tượng nào sẵn dùng trong ứng dụng
Nếu bạn đã phát triển trong Silverlight 1.0, chắc chắn bạn đã quen thuộc với JavaScript API trong Silverlight Lập trình JavaScript API tương tự như trong HTML DOM, và thực ra là sự thi hành những kịch bản nhúng trong trình duyệt giống như là kịch bản trong DOM Nhưng mô hình Silverlight mở rộng trong cây đối tượng mà được tạo nên khi một trang XAML tải lên những nội dung co Silverlight plug-in Điều này cho phép bạn xử lý những event trên đối tượng tiêu biểu mà bạn đã định nghĩa trong XAML Get hoặc set giá trị thuộc tính hoặc thi hành những phương thức đối tượng trong thời gian chạy, chỉnh sửa cấu trúc của XAML, tạo cây đối tượng trong thời gian chạy và…v.v… Trong điều kiện của cấu trúc, JavaScript API cho phép một hướng mở trong cây đối tượng Silverlight trên Silverlight plug-in, bao bọc những kịch bản được triệu gọi, và kết thúc chúng trong plug-in như những đối tượng tự nhiên Trong Internet Explorer việc
Trang 32SVTH: Thân Hoàng Lộc Trang 32
Nguyễn Anh Việt
Lưu Xuân Việt
bao bọc được thực hiện khi gọi IDispatch::Invoke Còn trong những trình duyệt khác có khả năng sử dụng những kiểu bao bọc khác phụ thuộc vào những plug-in và cấu trúc kịch bản
2 Kịch bản cho khai báo JavaScript API (Scenarios for Using the JavaScript API)
¾ Splash Screens
Một Splash Screens là nội dung một khu vực khởi tạo để trình bày tới user trong khi những nội dung khác vẫn tiếp tục đang tải lên Bên trong điều kiện thiết kế và mục đích, một Splash Screens đã ngầm quan hệ với UI và những yêu cầu tương tác Mục đích chính của Splash Screens là:
• Thể hiện tính trực quan thú vị
• Cung cấp thông tin phản hồi tới user mà ứng dụng (hoặc brower host) vẫn còn những hàm xử lý như mong đợi và tải chúng về như là sự phát triển
• Giữ những thông tin đặc trưng trong tiến trình tải về
Hai hàm đầu tiên có đủ tính năng thường thấy trong XAML mà không cần behind bên trong Miễn là tiến trình tải về yêu cầu thu được những thông tin tối thiểu của một API từ lớp mạng mà nó thực hiện việc tải về Có những lý do một Splash Screens là phương tiện tốt nhất bởi sự khai báo JavaScript API và truyền tải một trang XAML (Được
code-hỗ trợ bởi Script code Behind) cho SplashScreenSource JavaScript API có thể tải về Splash Screen mà không cần tác động tới Silverlight CLR và liên quan tới assemblies để rút ngắn thời gian khởi động
3 Phiên bản JavaScript mới cho Silverlight 2 (New JavaScript API for Silverlight Version 2)
Silverlight 2 cung cấp việc thêm vào những đối tượng có thể sử dụng trong JavaScript API khác với việc thiết lập những đối tượng trong Silverlight 1.0 Nó hoàn toàn cho phép bởi vì những đối tượng này có sự thi hành tự nhiên mà nó trình bày tương tự như việc
Trang 33SVTH: Thân Hoàng Lộc Trang 33
Nguyễn Anh Việt
Lưu Xuân Việt
khởi tạo một đối tượng trong bản 1.0 Bạn có thể tạo những đối tượng này trong bên trong XAML và sau đó script đến cây đối tượng Để sử dụng những đối tượng này, client chạy những ứng dụng nền Silverlight nên có bản chạy Silverlight version 2 client
Việc thêm vào những đối tượng với JavaScript API là bao gồm bên trong những tư liệu Silverlight cho JavaScript (Như thuộc tính-Properties, phương thức-Method, event,
và bảng liệt kê- enumerations) Đây là những tài liệu cấp cơ bản Đối tượng mới và thành viên mới cần chú ý tới những thông tin của phiên bản tham khảo trong trang chủ
4 Những kỹ thuật riêng của JavaScript API (Technical Specifics of the JavaScript API)
Có một vài kỹ thuật riêng trong JavaScript API khác với việc quản lý API và sự mở rộng sang nhiều những phần tử JavaScript API
- JavaScript và các trường hợp nhạy cảm (JavaScript and Case Sensitivity)
Các đối tượng, phương thức và tên thuộc tính trong JavaScript là không được xem xét như là trường hợp nhạy cảm khi được xử lý bởi Idispatch hoặc kỹ thuật song song mà là bên ngoài Silverlight JavaScript API tới tập lệnh nhúng vào trong Brower Hosting Vì vậy, bạn có thể dùng chữ hoa để khởi tạo trong giá trị thuộc tính event XAML và chữ thường trong những phương thức được định nghĩa hiện tại nếu bạn thích Tuy nhiên, tài liệu cú pháp Silverlight và những tiêu đề trong những text mô tả chung phải chuẩn hóa những trường hợp cho đối tượng-object, thuộc tính-properties, phương thức-method, events, bảng liệt kê- enumerations, và các giá trị liệt kê ban đầu sử dụng chữ hoa tốt hơn
là sử dụng chữ hoa bên trong Có hai lý do:
• XAML rất nhạy cảm trong việc phân biệt chữ, bởi vì nó theo chuẩn XML Cú pháp XAML và những tập lệnh tương đương thường có mặt trong một trang đơn Vì vậy, nó cần một chuẩn hóa trong XAML Titling mà bạn thấy trong tài
Trang 34SVTH: Thân Hoàng Lộc Trang 34
Nguyễn Anh Việt
Lưu Xuân Việt
liệu Silverlight là những biểu mẫu trường hợp chính xác cho một phần tử đối
tượng hoặc thuộc tính XAML
• Quản lý API xử lý tất cả các trường hợp như là trường hợp nhạy cảm, khai báo như trong quy ước Pascal Hiện tại JavaScript tham chiếu trường hợp tương
đương ở mức cao hơn không cần đường dẫn
1 Cấu trúc ứng dụng (Application Structure)
Khi bạn tạo một ứng dụng nền Silverlight sử dụng managed API, tiến trình xử lý sẽ sinh ra một gói ứng dụng Gói ứng dụng được nén lại trong tập tin có phần mở rộng là xap và nó chứa đựng những tập tin cần thiết để bắt đầu một ứng dụng
Khi nhúng Silverlight plug-in vào trang Web, bạn có thể chỉ định rõ những gói ứng dụng nào mà Plug-in cần tải về Plug-in sử dụng một tập tin hiển thị trong gói ứng dụng
để nhận dạng những lớp ứng dụng đã được triệu gọi Những lớp này được biết đến như là một điểm mục (entry) của ứng dụng và nó chỉ bắt nguồn từ những lớp Application Đối với những ứng dụng riêng lẻ, plug-in cũng sẽ triệu gọi những tập xử lý (essemble) căn bản chi tiết mà nó thừa hưởng
Trang 35SVTH: Thân Hoàng Lộc Trang 35
Nguyễn Anh Việt
Lưu Xuân Việt
Lớp Application cung cấp một sự kiện bắt đầu (Startup event) để bạn có thể khởi tạo những handle ban đầu cho ứng dụng và giao diện người dùng Lớp Application cũng cung cấp những yêu cầu dịch vụ ứng dụng phổ biến khác Ví dụ bạn có thể sử dụng lớp Application để rút trích những tập tin tài nguyên từ những gói ứng dụng hoặc tải về từ những tập tin zip
Quá trình tải về (download) một gói ứng dụng và ngay lập tức gọi hệ thống kích hoạt Silverlight Hệ thống kích hoạt cho phép bạn chỉ định giá trị nhỏ nhất của gói tải về Sau khi kích hoạt, ứng dụng của bạn có thể truy xuất tới những tập xử lý (assemble) đã thêm vào trong thư viện và những tập tin tài nguyên theo yêu cầu
2 Gói ứng dụng (Application Package)
Một gói ứng dụng bao gồm những tập tin:
- Một tập tin AppManifest.xaml, nó nhận dạng những bộ xử lý đã đóng gói và điểm
bắt đầu của ứng dụng
- Một bộ xử lý ứng dụng, bao gồm những lớp ứng dụng
- Không, hoặc nhiều thư viện những bộ xử lý
- Không, hay nhiều tập tin tài nguyên không xác định, ví dụ như hình ảnh (image) hoặc những tập tin Video
Tập tin AppManifest.xaml là tập tin tự động sinh ra (generate) điển hình trong quá
trình xây dựng và sử dụng ngôn ngữ đánh dấu XAML để trình bày một đối tượng Deployment với trình ứng dụng
Trong tập tin AppManifest.xaml, phần tử Deployment bao gồm những thuộc tính:
- Thuộc tính RuntimeVersion nhận dạng phiên bản yêu cầu của Silverlight
Trang 36SVTH: Thân Hoàng Lộc Trang 36
Nguyễn Anh Việt
Lưu Xuân Việt
- Thuộc tính EntryPointType và EntryPointAssembly nhận dạng mục bắt đầu của ứng dụng
Phần tử Deployment cũng bao gồm một phần tử đặc tính con Deployment ::.Parts mà
có một phần tử con AssemblyPart riêng cho mỗi assembly trong một gói ứng dụng
Gói ứng dụng chỉ bao gồm một tập tin AppManifest.xaml và một entry-point của
assembly ứng dụng Bạn cũng có thể triển khai tất cả các thành phần ứng dụng khác trong
file đóng gói (in-package) hoặc trong file yêu cầu (on-demand)
Trong file đóng gói là những file được chứa đựng bên trong gói ứng dụng Điển hình
là những file tối thiểu để bắt đầu ứng dụng hoặc triệu gọi những file sẵn sàng dùng đến sau khi khởi động Bạn cũng có thể chia sẻ những nguồn tài nguyên như hình ảnh nhúng trực tiếp vào trong assembly hoặc những file riêng biệt trong phạm vi của gói ứng dụng Những file yêu cầu là những file mà bạn triển khai trên máy chủ (Server) Chẳng hạn như vị trí của các gói ứng dụng Ứng dụng của bạn có thể truy xuất những file này sau khi chúng được kích hoạt Độc lập về kích thước và thể loại file nên có thêm vài tùy chọn trong việc truy xuất những file yêu cầu này Ví dụ như bạn có thể sử dụng tham chiếu trực tiếp URL để truy xuất những file hình ảnh (Image) hoặc bạn có thể đồng bộ sự bắt đầu trong việc tải về hay truy xuất những thư viện assembly hoặc những file zip
Trang 37Hình 5: Biểu đồ tổng hợp những gói cấu trúc ứng dụng và những tùy chọn triển khai trong những file ứng dụng
3 Triển khai file trong những gói hoặc trong những yêu cầu (Deploying Files Package or On-Demand)
In-Việc triển khai những file ứng dụng bên trong những gói ứng dụng được diễn ra trong thời gian khởi động và trong lúc tải về, chúng chỉ ngưng khi bạn quyết định ngừng những tiến trình này lại Quyết định này hoàn toàn độc lập với những yêu cầu của ứng dụng Chẳng hạn, bạn có thể cho phép khai báo nhiều file vào bên trong những gói ứng dụng và lần lượt nhận được những hồi đáp sau khi bạn bắt đầu thực hiện (Startup) Trong trường hợp này bạn có thể duy trì trạng thái hồi đáp hiển thị lên màn hình khi bắt đầu tiến trình tải về
Nguyễn Anh Việt
Lưu Xuân Việt
Trang 38
SVTH: Thân Hoàng Lộc Trang 38
Nguyễn Anh Việt
Lưu Xuân Việt
Trong một vài trường hợp, Silverlight plug-in sẽ không thể tải lên những gói ứng dụng lớn Khi bạn khởi tạo những ứng dụng lớn, bạn nên triệu gọi những file cần thiết để tối ưu hóa kích thước dữ liệu
Khi bạn quyết định di chuyển một vài file ra ngoài gói ứng dụng, bạn nên bố trí lại một vài tùy chọn
Những file dễ dàng bố trí lại là những file tham chiếu (reference) trong khai báo quan hệ URIs ví dụ như những file video và image Khi Silverlight plug-in bắt gặp một quan hệ URL trong code hoặc XAML nó sẽ được nhìn thấy trong gói ứng dụng đầu tiên Nếu plug-in không thể tìm thấy file trong gói ứng dụng thì nó sẽ thấy được bên trên máy chủ Nghĩa là bạn có thể di chuyển bất kỳ file nào mà bạn tham chiếu bởi quan hệ URL
mà không cần phải thay đổi code
Nhiều file không thể tham chiếu bằng URL và nó phụ thuộc vào những tiến trình
xử lý riêng nếu bạn bố trí lại những file yêu cầu này Ví dụ như, bạn muốn bố trí lại thư viện assembly, bạn nên thêm code để triệu gọi những yêu cầu và tải chúng lên vùng ứng dụng
Bạn cũng có thể muốn di chuyển một vài file tài nguyên ra ngoài những gói ứng dụng nhưng truy xuất chúng trong yêu cầu như là tải 1 trình đơn về Bạn cũng có thể thực hiện những điều trên bằng cách gói chúng lại thành những file zip và triển khai chúng lại
trên máy chủ
V ỨNG DỤNG DỊCH VỤ (Application Services)
Khi bạn tạo một ứng dụng sử dụng managed API với Silverlight, bạn nên tạo một lớp mà bắt nguồn từ Application Lớp Application cung cấp một vài dịch vụ mà những ứng dụng thường cần tới Trước hết, nó miêu tả những entry point của code ứng dụng trong suốt chu trình sống của Silverlight plug-in
Trang 39Chu trình sống của Silverlight plug-in bắt đầu khi user “lướt” vào trang web chứa Silverlight plug-in Nếu user đã cài đặt Silverlight, trình duyệt web sẽ kích hoạt plug-in và bắt đầu tải những gói ứng dụng của bạn xuống
Plug-in được nạp vào trong theo dịch vụ của Silverlight bởi Silverlight CLR, chúng tạo ra một AppDomain cho ứng dụng Khi những gói ứng dụng của bạn hoàn tất việc tải về, CLR sẽ triệu gọi lớp Application và sinh ra những event Startup
Bạn có thể thêm code vào những lớp ứng dụng Bên cạnh đó,bạn sử dụng một event handle startup cho hầu hết những yêu cầu khởi tạo ứng dụng, như trình bày một trang giao diện người dùng
Hình 6: Biểu đồ minh họa quy trình kích hoạt plug-in và mối quan hệ giữa các thành phần trong quy trình
Nguyễn Anh Việt
Lưu Xuân Việt
Trang 40
SVTH: Thân Hoàng Lộc Trang 40
Nguyễn Anh Việt
Lưu Xuân Việt
Chúng cũng có thể chỉ là một trường hợp Application trong ứng dụng nền Silverlight Sau khi khởi động (Startup), trường hợp Application này cung cấp một vài dịch vụ mà ứng dụng thường cần tới bạn có thể truy xuất những dịch vụ này từ bất kỳ đoạn code nào trong ứng dụng bởi sự truy xuất trường hợp Application từ đặc tính tĩnh của Application ::.Current
Những đặc trưng trong lớp Application gồm:
• Quản lý thời gian sống của ứng dụng
• Tải lên những file tài nguyên của ứng dụng
• Xử lý những ngoại lệ Unhandled
• Tích hợp những Web host
1 Application Lifetime Management
Để quản lý thời gian sống của ứng dụng bạn có thể thêm code vào trong những lớp ứng dụng để chạy và bắt điểm thời gian sống của ứng dụng:
• Lớp khởi tạo ứng dụng
• Event Startup ứng dụng
• Event Exit ứng dụng
a Lớp khởi tạo ứng dụng (Application Class Construction)
Trong lớp ứng dụng khởi tạo, bạn có thể thêm code vào trong lớp ứng dụng khởi tạo để thi hành những yêu cầu khởi tạo cơ bản, chẳng hạn như những biến khởi tạo và những event handler kèm theo