Bạn có thể triển khai đến Window Server máy chạy Internet Information Services IIS mà bạn chạy và quản lý cục bộ; bạn có thể triển khai một dịch vụ lưu trữ từ xa để quản lý các máy chủ c
Trang 1Chương 13 Triển khai
Cuối cùng, và quan trọng, bước vào phát triển ứng dụng là triển khai: làm ứng dụng của bạn có sẵn cho cả thế giới sử dụng Ở chương này, tôi sẽ cho bạn xem cách để chuẩn bị và triển khai ứng dụng SportsStore
Có nhiều cách khác nhau để triển khai các ứng dụng MVC Framework, và một loạt các mục tiêu triển khai
Bạn có thể triển khai đến Window Server máy chạy Internet Information Services (IIS) mà bạn chạy và quản lý cục bộ; bạn có thể triển khai một dịch vụ lưu trữ từ
xa để quản lý các máy chủ của bạn; hoặc sau này, bạn có thể triển khai một nền tảng cơ sở hạ tầng cho điện toán đám mây quy định và quy mô ứng dụng của bạn
để liên tục đáp ứng nhu cầu
Tôi đã suy nghĩ rất lâu và kĩ về làm như thế nào để triển khai một ví dụ hữu ích trong chương này Tôi không hiển thị cho bạn làm cách nào để triển khai trực tiếp đến IIS bởi vì quá trình cấu hình máy chủ rất lâu và phức tạp, và hầu hết các nhà phát triển MVC là đích máy chủ cục bộ phụ thuộc vào nhóm hoạt động CNTT để thực hiện cấu hình và triển khai các công việc Tôi không triển khai cho một công
ty quản lý lưu trữ bởi vì mỗi người đều có quá trình triển khai tùy chỉnh riêng của mình và không có một công ty đặt tiêu chuẩn cho lưu trữ
Vì vậy, một vài theo mặc định, tôi giải quyết trên thể hiện một triển khai Windows Azure, đó là nền tảng điện toán đám mây của Microsoft và đó có một số hỗ trợ rất tốt cho các ứng dụng MVC Tôi không gợi ý rằng Azure là phù hợp cho tất cả các triển khai, nhưng tôi thích cách nó hoạt động và sử dụng nó trong chương này cho phép tôi chứng minh quá trình triển khai hơn là bị sa lầy trong IIS và Windows các vấn đề cấu hình Có 90 ngày dùng thử miễn phí có sẵn trên Azure như tôi viết (và MSDN đăng ký bao gồm Azure), có nghĩa là bạn sẽ có thể làm theo các ví dụ trong chương này, ngay cả khi bạn không có ý định sử dụng Azure để lưu trữ ứng dụng của bạn
Chú ý: Tôi khuyên bạn nên thực hành triển khai sử dụng một ứng dụng thử nghiệm và máy chủ trước khi cố gắng để triển khai một ứng dụng thực tế vào một môi trường sản xuất Giống như mọi khía cạnh khác của vòng đời phát triển phần mềm, những lợi ích từ quá trình triển khai thử nghiệm Tôi
Trang 2có một cổ phiếu của câu chuyện kinh dị của các đội dự án đã bị phá hủy các ứng dụng hoạt động thông qua các thủ tục triển khai quá vội vàng và thử nghiệm kém Nó không phải là các tính năng triển khai ASP.NET đặc biệt nguy hiểm, họ không-nhưng là, bất kỳ sự tương tác có liên quan đến một ứng dụng đang chạy với dữ liệu người dùng thực sự xứng đáng suy nghĩ và lập kế hoạch cẩn thận
Triển khai một ứng dụng web đã từng là một quá trình mệt mỏi và dễ bị lỗi nhưng Microsoft đã đặt rất nhiều nỗ lực vào việc cải thiện các công cụ triển khai trong Visual Studio Vì vậy, ngay cả khi bạn cần để triển khai đến một loại khác nhau của cơ sở hạ tầng, bạn sẽ tìm thấy rằng Visual Studio có thể làm rất nhiều công việc nặng nhọc cho bạn
Chuẩn bị Windows Azure
Bạn cần phải tạo một tài khoản trước khi bạn có thể sử dụng Azure, mà bạn có thể làm bằng cách vào www.windowsazure.com Tại thời điểm viết bài, Microsoft đang cung cấp tài khoản thử nghiệm miễn phí, và MSDN gói bao gồm các dịch vụ Azure Một khi bạn đã tạo tài khoản, bạn có thể quản lý các dịch vụ Azure của bạn bằng cách vào http://manage.windowsazure.com để cung cấp thông tin của bạn Khi bạn bắt đầu, bạn sẽ thấy những cách nhìn tổng thể hiện trong hình 13-1
Trang 3Hình 13.1 Các cổng Azure
Tôi bắt đầu bằng cách tạo ra một trang web và cơ sở dữ liệu dịch vụ mới, đó là hai trong số các dịch vụ đám mây được cung cấp bởi Azure Nhấp vào dấu cộng ở góc dưới bên trái của cửa sổ cổng và chọn Compute >Web App >Custom Create Bạn
sẽ nhìn thấy hình minh họa trong hình 13-2
Trang 4Hình 13.2 Tạo một web site mới và cơ sở dữ liệu
Tôi cần phải chọn một URL cho ứng dụng của tôi Đối với các dịch vụ Azure miễn phí, tôi đang bị hạn chế đối với tên miền trong azurewebsites.net Tôi đã chọn tên
Trang 5giaydep, nhưng bạn sẽ phải chọn tên riêng của bạn vì mỗi trang web Azure đòi hỏi một tên duy nhất
Chọn khu vực mà bạn muốn ứng dụng của bạn được triển khai tới và đảm bảo rằng
tùy chọn Create a new SQL database là lựa chọn cho các trường cơ sở dữ
liệu(Database) (Azure có thể sử dụng MySql, mà ứng dụng SportsStore không được thiết lập để sử dụng, vì vậy tôi muốn chọn cho tôi một cơ sở dữ liệu SQL Server)
Đặt DB Connection String Name tên là DBGiayDep Đây là tên các ứng dụng SportsStore dùng để một kết nối cơ sở dữ liệu từ các tập tin Web.config, và bằng
cách sử dụng tên này trong dịch vụ Azure, tôi đảm bảo rằng các mã ứng dụng hoạt động trong triển khai mà không sửa đổi
Khi bạn đã điền vào mẫu form trên, nhấp vào nút mũi tên để chuyển sang mẫu form như hình 13-3
Hình 13.3 Cấu hình cơ sở dữ liệu
Đặt tên cho cơ sở dữ liệu Tôi đã sử dụng giaydep_db nó là hiển nhiên mà ứng dụng cơ sở dữ liệu liên quan đến Chọn tùy chọn New SQL Data Server cho phần Server và nhập tên đăng nhập và mật khẩu Tôi đã chỉ định một tên sportsstore và
Trang 6theo các hướng dẫn được cung cấp bởi các hình thức để lựa chọn một mật khẩu gồm có chữ hoa, chữ thường và số Hãy ghi nhớ tên người dùng và mật khẩu mà bạn sử dụng bởi vì bạn sẽ cần đến chúng trong các phần tiếp theo Nhấn vào nút dấu tích để hoàn tất quá trình thiết lập Azure sẽ tạo trang dịch vụ web và cơ sở dữ liệu, nó có thể mất một vài phút Bạn sẽ được trả lại cho các tổng quan khi thiết lập xong và bạn sẽ thấy các Web Sites và danh mục SQL Databases báo cáo một hàng, như thể hiện trong hình 13-4
Chuẩn bị cơ sở dữ liệu cho quản trị từ xa
Bước tiếp theo là cấu hình cơ sở dữ liệu Azure để nó có chứa cùng một lược đồ và
dữ liệu mà tôi đã sử dụng trong Chương 7 Nhấp vào liên kết SQL Databases
trong trang tổng quan Azure và sau đó nhấn vào tên cơ sở dữ liệu đã cấu hình trong bảng SQL Databases (Nếu bạn đang theo ví dụ của tôi, cơ sở dữ liệu sẽ được gọi
là giaydep_db.)
Các portal sẽ hiển thị cho bạn các chi tiết của cơ sở dữ liệu và các tùy chọn khác
nhau cho việc cấu hình và quản lý nó Nhấp vào địa chỉ link Set up Windows
Trang 7Azure firewall rules for this address, cái mà bạn sẽ tìm thấy trong Design Your Database của trang Bạn sẽ thấy một thông báo cho bạn rằng địa chỉ IP hiện tại
của bạn (cái này là địa chỉ IP máy trạm của bạn)thì không có trong các quy tắc tường lửa Nhấp vào nút Yes như trong hình 13-5
Hình 13.5 Thêm địa chỉ máy trạm IP để các quy tắc tường lửa Azure
Chú ý :Visual Studio đã hỗ trợ cho việc triển khai cơ sở dữ liệu cùng với các ứng dụng Tôi khuyên bạn không nên sử dụng tính năng này vì nó là thường
dễ dàng quét sạch dữ liệu ứng dụng thực tế của bạn với một menu lựa chọn bất cẩn hay không cẩn thận Luôn cập nhật cơ sở dữ liệu của bạn một cách riêng biệt và kiểm tra kỹ lưỡng trước khi làm như vậy
Tạo các lược đồ
Bước tiếp theo là tạo ra các lược đồ cho các cơ sở dữ liệu Nhấp vào liên kết
Design your SQL database trong Connect to your Database Nhập tên cơ sở dữ
Trang 8liệu (giaydep_db), tên người dùng (sportsstore), và mật khẩu mà bạn xác định khi tạo cơ sở dữ liệu, và nhấp vào nút Log On, như thể hiện trong hình 13-6
Lời khuyên: Quản lý cơ sở dữ liệu đòi hỏi Silverlight, mà bạn có thể cần phải cài đặt trong trình duyệt của bạn trước khi bạn có thể tiếp tục Ở phía trên cùng của
cửa sổ, bạn sẽ thấy một nút New Query Nhấp vào nút đó và một khu vực văn bản
sẽ nhập vào đó bạn có thể gõ lệnh SQL Đây là nơi tôi sẽ cung cấp cho các lệnh SQL mà sẽ tạo ra các bảng cơ sở dữ liệu tôi cần
Lấy lệnh của lược đồ
Tôi có thể nhận được các câu lệnh SQL tôi cần từ Visual Studio Mở cửa sổ Server
Explorer và mở rộng các mục nó chứa cho đến khi bạn tới bảng Products trong
ứng dụng phát triển SportsStore Kích chuột phải vào bảng Products và chọn Open Table Definition Các chỉnh sửa cho các lược đồ bảng sẽ được mở ra Trong tab T-SQL, bạn sẽ thấy lệnh SQL trong Bảng liệt kê13-1
Bảng liệt kê 13.1: Câu lệnh để tạo bảng sản phẩm
Sao chép SQL từ Visual Studio, dán nó vào vùng văn bản trong trình duyệt, và nhấp vào nút Run ở trên cùng của cửa sổ trình duyệt Sau một giây, bạn sẽ nhìn thấy các lệnh thông báo (s) thành công, mà chỉ ra rằng các cơ sở dữ liệu Azure chứa cơ sở dữ liệu sản phẩm sử dụng cùng một lược đồ như tôi đã nêu trong ứng dụng SportsStore
Thêm dữ liệu bảng
CREATE TABLE [dbo].[Products] (
[ProductID] INT IDENTITY (1, 1) NOT NULL,
[Name] NVARCHAR (100) NOT NULL,
[Description] NVARCHAR (500) NOT NULL,
[Category] NVARCHAR (50) NOT NULL,
[Price] DECIMAL (16, 2) NOT NULL,
[ImageData] VARBINARY (MAX) NULL,
[ImageMimeType] VARCHAR (50) NULL,
PRIMARY KEY CLUSTERED ([ProductID] ASC) );
Trang 9Bây giờ tôi đã tạo ra bảng, Tôi có thể điền nó với các dữ liệu sản phẩm mà tôi sử
dụng trong Chương 7 Quay trở lại mục Products trong cửa sổ Database Explorer, nhấp chuột phải và chọn Show Data Table từ menu pop-up Bạn sẽ tìm thấy một
nút Script ở phía trên cùng của cửa sổ được mở ra, như thể hiện trong hình 13.7
Hình 13-7 Nút script in the table data display
Một cửa sổ mới sẽ mở ra có chứa một câu lệnh SQL khác, mà tôi thấy trong bảng liệt kê 13-2
SET IDENTITY_INSERT [dbo].[Products] ON INSERT INTO [dbo].[Products] ([ProductID], [Name], [Description], [Category], [Price], [ImageMimeType]) VALUES (1, N'Kayak', N'A boat for one person', N'Watersports', CAST(275.00 AS Decimal(16, 2)), NULL)
INSERT INTO [dbo].[Products] ([ProductID], [Name], [Description],
[Category], [Price], [ImageMimeType]) VALUES (4, N'Lifejacket', N'Protective and fashionable', N'Watersports', CAST(48.95 AS Decimal(16, 2)), NULL)
INSERT INTO [dbo].[Products] ([ProductID], [Name], [Description],
[Category], [Price], [ImageMimeType]) VALUES (5, N'Soccer Ball',
N'FIFAapproved size and weight', N'Soccer', CAST(19.50 AS Decimal(16, 2)), NULL)
Trang 10INSERT INTO [dbo].[Products] ([ProductID], [Name], [Description],
[Category], [Price], [ImageMimeType]) VALUES (6, N'Corner Flags', N'Give your playing field a professional touch', N'Soccer', CAST(34.95 AS Decimal(16, 2)), NULL)
INSERT INTO [dbo].[Products] ([ProductID], [Name], [Description],
[Category], [Price], [ImageMimeType]) VALUES (7, N'Stadium', N'Flat-packed 35,000-seat stadium', N'Soccer', CAST(79500.00 AS Decimal(16, 2)), NULL) INSERT INTO [dbo].[Products] ([ProductID], [Name], [Description],
[Category], [Price], [ImageMimeType]) VALUES (8, N'Thinking Cap', N'Improve your brain efficiency by 75%', N'Chess', CAST(16.00 AS Decimal(16, 2)),
N'image/jpeg')
INSERT INTO [dbo].[Products] ([ProductID], [Name], [Description],
[Category], [Price], [ImageMimeType]) VALUES (9, N'Unsteady Chair',
N'Secretly give your opponent a disadvantage', N'Chess', CAST(29.95 AS
Decimal(16, 2)), NULL)
INSERT INTO [dbo].[Products] ([ProductID], [Name], [Description],
[Category], [Price], [ImageMimeType]) VALUES (10, N'Human Chess Board', N'A fun game for the family', N'Chess', CAST(75.00 AS Decimal(16, 2)), NULL) INSERT INTO [dbo].[Products] ([ProductID], [Name], [Description],
[Category], [Price], [ImageMimeType]) VALUES (11, N'Bling-Bling King',
N'Gold-plated, diamond-studded King', N'Chess', CAST(1200.00 AS Decimal(16, 2)), NULL) SET IDENTITY_INSERT [dbo].[Products] OFF
Xóa vùng văn bản trong cửa sổ trình duyệt Azure và dán SQL hiển thị trong bảng liệt kê ở vị trí của nó Nhấn vào nút Run Các script sẽ được thực thi và thêm dữ liệu vào bảng
Trang 11Triển khai các ứng dụng
Bây giờ cài đặt hoàn tất, triển khai ứng dụng rất đơn giản Quay trở lại cổng Azure chính và nhấp vào nút Sites Web Nhấp vào trang web giaydep để mở trang bảng
điều khiển và nhấp vào Download the publish profile trong Publish your app Lưu
tập tin này trong một vị trí dễ thấy
Đối với dịch vụ Azure của tôi, các tập tin được gọi là giaydep.azurewebsites.net
PublishSettings và tôi đã lưu nó vào máy tính để bàn Tập tin này có chứa các chi
tiết mà Visual Studio cần xuất bản ứng dụng của bạn cho các cơ sở hạ tầng Azure
Quay trở lại Visual Studio và kích chuột phải vào project SportsStore.WebUI trong
Solution Explorer và chọn Publish từ menu pop-up Bạn sẽ thấy cửa sổ hộp thoại Publish Web, như minh họa trong Hình 13-8
Hình 13.8: Hộp thoại Publish Web
Nhấn vào nút Import và xác định vị trí các tập tin mà bạn tải về từ các cổng thông tin Azure Visual Studio sẽ xử lý các tập tin và hiển thị các chi tiết của cấu hình dịch vụ Azure của bạn, như thể hiện trong hình 13-9 Thông tin chi tiết của bạn sẽ phản ánh tên bạn chọn cho trang web của bạn
Trang 12Hình 13.9 Chi tiết về các dịch vụ Azure rằng các ứng dụng sẽ được triển khai đến Không cần phải thay đổi bất kỳ giá trị được hiển thị Nhấp vào nút Next để chuyển sang giai đoạn tiếp theo của quá trình triển khai, trong đó bạn có thể thấy trong hình 13-10
Trang 13Hình 13.10 Cài đặt cho các ứng dụng triển khai
Bạn có thể lựa chọn cấu hình cái mà được sử dụng trong triển khai Điều này
thường sẽ được Release, nhưng bạn có thể chọn Debug nếu bạn có ý định thử
nghiệm ứng dụng của bạn trên cơ sở hạ tầng Azure và muốn cài đặt gỡ lỗi và cho các trình biên dịch ứng dụng của bạn
Các phần khác của quá trình này là cấu hình kết nối cơ sở dữ liệu Visual Studio cung cấp cho bạn cơ hội để tạo ra bản đồ liên kết giữa các kết nối cơ sở dữ liệu được xác định trong dự án của bạn và các cơ sở dữ liệu có liên quan đến trang web Azure File Web.config chỉ chứa một tập hợp các thông tin chi tiết, và kể từ khi tôi tạo ra một cơ sở dữ Azure, chỉ có một mục để chọn từ danh sách thả xuống Nếu bạn có nhiều cơ sở dữ liệu trong ứng dụng của bạn, bạn phải làm sao để đảm bảo rằng cơ sở dữ liệu Azure phải được chọn
Nhấp vào nút Next để xem trước hiệu ứng của việc triển khai của bạn, như được hiển thị trong hình 13-11 Khi bạn nhấp vào nút Start Preview, Visual Studio duyệt
Trang 14qua quá trình triển khai, nhưng không thực sự gửi các tập tin đến máy chủ Nếu bạn đang nâng cấp một ứng dụng đã được triển khai, điều này có thể là một kiểm tra có ích để đảm bảo rằng bạn chỉ đang thay thế các tập tin mà bạn mong muốn
Hình 13.11: Các phần Preview của hộp thoại Publish Web
Đây là lần đầu tiên mà tôi triển khai ứng dụng này, vì vậy tất cả các tập tin vào dự
án sẽ xuất hiện trong cửa sổ xem trước, như hiển thị trong hình 13-12 Chú ý rằng mỗi tập tin có một hộp kiểm bên cạnh nó Bạn có thể ngăn chặn các tập tin cá nhân
từ khi đang triển khai, mặc dù vậy bạn cũng nên cẩn thận khi làm điều này Tôi khá bảo thủ trong vấn đề này và tôi thà triển khai tập tin mà tôi không cần chứ không phải quên để triển khai cái mà tôi làm
Trang 15Hình 13.12 Xem trước các thay đổi triển khai
Nhấp vào nút Publish để triển khai các ứng dụng của bạn với nền tảng Azure Hộp
thoại Publish Web sẽ đóng lại và bạn sẽ có thể xem chi tiết về tiến độ triển khai trong cửa sổ Visual Studio Output, như hiển thị trong hình 13-13
Trang 16Hình 13.13 Triển khai một ứng dụng cho nền tảng Azure
Nó có thể mất một vài phút để triển khai một ứng dụng, nhưng sau đó quá trình hoàn tất Visual Studio sẽ mở một cửa sổ trình duyệt mà điều hướng đến các URL của trang web của bạn Azure Đối với tôi, đây là URL
http://mvc5sportsstore.azurewebsites.net, như hiển thị trong hình 13-14