Làm việc với dự án Azure trong Visual Studio (phần 1)

[Day2] Làm việc với dự án Azure trong Visual Studio (phần 1)

Trong đội hình của nền tảng Azure hiện có 4 thành phần: Hệ điều hành Windows Azure, hệ quản trị dữ liệu quan hệ SQL Azure, hệ thống quản trị máy ảo AppFabric và sàn giao dịch cho các ứng dụng đám mây Marketplace. Trong hệ thống thuật ngữ của Microsoft, một máy ảo riêng của đám mây Azure được gọi là một vai trò. Có 3 vai trò được xem xét: Web (dùng để xử lý các truy vấn web của các ứng dụng máy khách), Worker (xử lý dữ liệu) và VM (một máy tính Window ảo đầy đủ, trên đó có thể chạy các ứng dụng Windows truyền thống). Về nguyên tắc, một ứng dụng có thể cấu hình từ vài vai trò tương tác nhau. Bản thân nền tảng Azure đảm bảo hạ tầng mạng, hệ thống lưu trữ dữ liệu, cân bằng tải, hệ điều hành cập nhật, xử lý các truy vấn web và nhiều thứ khác cho các ứng dụng đám mây.

Tạo project Visual Studio

Windows Azure Tools cho Visul Studio tạo ra một kiểu project chứa các template cho Web role và Worker role. Sau khi cài đặt Windows Azure Tools cho Visual Studio, mở Visual Studio và tạo một project mới bằng cách: File > New > Project

Chọn Cloud Service > Windows Azure

Chọn Cloud (hoặc Cloud Service tùy từng phiên bản), tiếp theo thêm vào các role cho dự án.

Chọn thêm các role trong dự án

Có 4 role hợp lệ cho cloud service.

• ASP.NET Web role : Role này gồm một project ASP.NET, Bạn có thể xây dựng hay chuyển bất cứ project ASP.NET để triển khai trên đám mây.

• WCF Service Web role : Role này chứa một WCF project. Cũng như ASP.NET Web role, bạn có thể xây dựng hay chuyển bất cứ dịch vụ WCF để triển khai trên đám mây.

• Worker role: Dự án Worker role là một ứng dụng xử lý background.

• CGI Web role: CGI Web role là một Web role cho phép dùng FasstCGI.

Sau khi tạo xong,

Ví dụ một Cloud Service đã tạo

Trong hình trên, project cloud service HelloCloud giữ tham chiếu đến tất cả các project trong solution trong thư mục con Roles. Đồng thời, project cũng chứa 2 tập tin: “ServiceDefinition.csdef” và “ServiceConfiguration.cscfg” định nghĩa các thiết lập cấu hình cho các role trong cloud service. Dự án WCF service bao gồm một service mẫu và cấu hình liên kết với nó trong tập tin “web.config”. Tập tin “Webrole.cs” cài đặt sự kiện bắt đầu và thay đổi cấu hình tạo ra bởi Windows Azure Platform. Tập tin này được tạo cho tất cả các role với hàm điều khiển sự kiện bắt đầu và thay đổi cấu hình mặc định. Bạn có thể điều khiển các sự kiện khác như StatusCheck hay Stopping tùy thuộc vào yêu cầu của ứng dụng. Lớp WebRole kế thừa từ lớp RoleEntryPoint từ namespace Microsoft.WindowsAzure.ServiceRuntime. Tập tin “WebRole.cs” tương tự như tập tin “Global.asax” trong ứng dựng ASP.NET

Project ASP.NET Web role gồm một tập tin “Default.aspx” và tập tin code-behind và tập tin “web.config”. Cuối cùng, project Worker role gồm tập tin “WorkerRole.cs” và “app.config”. Khi kế thừa lớp RoleEntryPoint, có thể override phương thứcRun(). Bởi vì Worker role không được thiết kế để có bất kì một external interface nào, nên nó không chứa bất kì tập tin ASP.NET hay WCF nào.

Thiết lập và cấu hình Roles

Trong một project cloud service, bạn có thể cấu hình cho từng role bằng cách nhấp đúp chuột vào các role reference trong thư mục con Role của dự án.

Trong Visual Studio có thể thấy như hình sau:

Role settings

Trang thiết lập role có 5 tab: ConfigurationSettingsEndpoints, Local Storage, và Certificates.

Thẻ Configuration được chọn mặc định và hiển thị lựa chọn cấu hình sau:

• .NET Trust Level: chỉ ra mức độ tin cậy khi role này chạy trên thực tế. Có 2 lựa chọn là Full Trust và Windows Azure Partial Trust. Lựa chọn Full Trust cho role đặc quyền để truy cập đến các tài nguyên và thực thi được native-code. Trong Full trust, role có thể chạy trong ngữ cảnh người sử dụng Windows Azure chuẩn, hoặc là admin. Trong lựa chọn Partial Trust, role chạy trong môi trường tin cậy một phần và ko có quyền truy cập tài nguyên cũng như thực thi các native code trên máy.

• Instances: Số đếm thực thể định nghĩa số lượng thực thể của mỗi role mà bạn muốn chạy trên cloud. Ví dụ, bạn muốn chạy 2 thực thể của Web role ASP.NET và một thực thể của Worker role cho xử lý background. Mặc định, tất cả các role đều chạy ở một thực thể duy nhất. Lựa chọn này cho bạn khả năng để tăng giảm số thể hiện theo yêu cầu.

• Lựa chọn VM size cho bạn khả năng chọn kích thước của máy ảo phụ thuộc vào sự triển khai ứng dụng của bạn.

Trong thẻ Setting, bạn có thể thêm hoặc xóa các thiết lập của mình.

Role Setting tab Settings

Những cặp name-value này tương tự như cặp name-value trong “app.config”, hay “web.config”. Bạn có thể lấy giá trị của các thiết lập này trong code bằng cách gọi RoleEnvironment.GetConfigurationSettingValue. Mặc định, có một thiết lậpDiagnosticsConnectionString được sử dụng cho logging từ code của bạn, không xóa bỏ thiết lập này.

Thẻ Endpoint chứa các endpoint của role sẽ được tạo ra khi triển khai.

Thẻ Endpoint cho Web role

Một Web role có thể có InputEndpoints và một internal endpoint. InputEndpoints có thể là HTTP hay HTTPS endpoints xuất ra bên ngoài. Số Port định nghĩa cổng được sử dụng khi truy cập trang web mặc định hay dịch vụ trong Web role này. Trong trường hợp là HTTPS endpoint, bạn có thể upload một chứng chỉ X.509 cho việc truy cập trang web hay dịch vụ sử dụng kết nối được mã hóa HTTPS. Internal endpoint là một endpoint có thể truy cập dến các role khác của cùng một cloud service. Ví dụ, một Worker role có thể tham chiếu đến một internal endpoint của một Web role trong cùng một cloud service cho việc tạo ra các phương thức dịch vụ web gọi đến nó.

Một Worker role không định nghĩa endpoint như Web role bởi vì nó được dùng như là một xử lý background. Để dịnh nghĩa một endpoint, bạn phải thêm một danh sách và chọn kiểu của nó (input hay internal), protocol (tcp, http, https), cổng, và một tùy chọn- tên chứng chỉ SSL.

Chú ý rằng Web role chỉ có thể có HTTP hoặc HTTPS endpoints, nhưng một Worker role có thể có một HTTP, HTTPS, hay TCP endpoint.

Thẻ LocalStorage định nghĩa thư mục cục bộ được tạo ra trên máy chủ của role để cho việc lưu trữ tập tin cục bộ.

Thẻ Local Storage

Tên của local storage sẽ là tên của thư mục được tạo trên máy chủ. Cột size định nghĩa kích thước tối đa của thư mục đó, và Clean on Role Recycle chỉ ra rằng nội dung của thư mục đó có bị dọn dẹp đi khi một role dọn rát không. Bạn có thể sử dụng tùy chọn này để tạo ra nơi lưu trữ nhanh để duy trì trạng thái của các role sau khi khởi động lại hay bị hư hỏng. Local storage còn rất hữu ích khi sử dụng cho việc catching tạm thời, hay quản lý session của ứng dụng.

Thẻ Certificate được sử dụng cho việc tham chiếu đến các chứng chỉ trong role của bạn. Bạn có thể sử dụng Windows Azure developer portal hay các API các service quản lý cho việc upload các chứng chỉ lên server và sau đó tham chiếu đến các chứng chỉ này trong các thiết lập như hình sau:

Thẻ Certificates

Chú ý: Tất cả các thiết lập trên có thể thay đổi trực tiếp trong tập tin ServiceDefinition.csdef và ServiceConfiguration.cscfg.