2012-01-27 35 views
13

Để đạt được một số quan điểm, chúng tôi đã sử dụng các biểu mẫu web ASP.NET cho các độ tuổi.[HTML5 + jQuery] (không có ASP.NET) + WCF là một giải pháp hợp lệ cho một ứng dụng web cấp doanh nghiệp?

Chúng tôi cũng nhận thức được lợi ích của MVC trên biểu mẫu web, tuy nhiên tùy chọn thay thế sẽ được gửi xung quanh để bỏ qua tất cả các lớp trừu tượng đó và chỉ cần chuyển từ trang HTML thuần túy sang dịch vụ WCF.

Không .ASPX, no .cshtml/.vbhtml, chỉ là tệp .HTML thuần túy để tránh hiển thị logic và phía máy chủ. Đó là ý tưởng được một số gợi ý và đang trở nên hấp dẫn hơn với HTML5 và các tính năng của nó. Khả năng nhắm mục tiêu nhiều thiết bị hơn bằng cách kiểm soát hoàn toàn HTML cũng là yếu tố thúc đẩy.

Tôi biết rằng nó khả thi từ quan điểm kỹ thuật - đặc biệt với jQuery khiến mọi việc trở nên dễ dàng hơn nhiều - nhưng tôi lo ngại rằng bằng cách tung toàn bộ nền máy chủ (mã-đằng sau trong biểu mẫu web, bộ điều khiển và xem- ràng buộc trong MVC) chúng tôi sẽ kết thúc làm ống nước nhiều hơn mà chúng tôi không phải lo lắng về trước đây.

Câu hỏi đặt ra nắm tới:

  1. Có phải đó là một mối quan tâm hợp lệ, và nếu như vậy những loại ống nước, chúng tôi có thể kết thúc làm gì?
  2. Chính xác là chúng ta có thể mất gì bằng cách ném toàn bộ khung ASP.NET sang một bên (từ phía ứng dụng web) và chỉ dựa vào giao tiếp trực tiếp với dịch vụ WCF của chúng tôi từ các trang HTML thuần túy?

NB: Tôi đã sử dụng thuật ngữ 'cấp doanh nghiệp' để nhấn mạnh rằng đây không phải là ứng dụng web đơn giản với một vài trang mà quyết định cuối cùng của kiến ​​trúc cơ bản là không liên quan. :)

Edit: để có thậm chí rõ ràng hơn, các lĩnh vực chính mà là mối quan tâm đối với chúng tôi trong một cách tiếp cận như vậy là:

  • Authentication và tác giả ization -> MVC xử lý điều này một cách rất đơn giản với các thuộc tính (ví dụ: AuthorizeAttribute), cách tiếp cận 'tĩnh' này có nghĩa là WCF sẽ phải xử lý thẻ, mã hóa/giải mã chúng và quyết định ai sẽ tự làm tất cả những gì trong suốt cuộc gọi. Đây có phải là giải pháp duy nhất không?

  • Tách mối quan tâm -> MVC làm rõ điều đó và thực hiện điều đó rất tốt. Cách tiếp cận này tuy nhiên buộc bạn phải viết rõ ràng trong HTML của bạn mà chức năng WCF gọi là cần thiết. Vì vậy, không chỉ là lớp trình bày của bạn xử lý những gì để vẽ, nó cũng đã nhúng vào trong đó logic của những gì để gọi để có được dữ liệu của nó, và làm thế nào để phân phối nó trong trang. Đây có thể không phải là một vấn đề lớn, nhưng ngược lại ViewBag trong MVC cung cấp cho bạn tùy chọn để có các URL dịch vụ WCF của bạn như một thuộc tính động, có nghĩa là logic bây giờ là một phần của bộ điều khiển chứ không phải trang HTML của bạn. Việc thay đổi logic đó sẽ loại bỏ những rắc rối khi xem xét các trang HTML hoàn toàn.

  • Binding & Validation -> Tôi đã đặt hai trong cùng một giỏ vì cuối cùng một lần các dịch vụ WCF đáp ứng với một đối tượng JSON chứa tất cả các thông tin trang web của tôi cần phải hoạt động (bao gồm cả quy tắc xác nhận) sẽ của một ai đó phải ràng buộc nó với những điều khiển nhàn rỗi đó.

Hy vọng ý tưởng này đủ rõ ràng và cảm ơn trước.

Trả lời

3

Bạn chưa "ném toàn bộ phần trừu tượng phía máy chủ", bạn đang phân vùng chức năng khác với ứng dụng web chuẩn. Tóm tắt phía máy chủ giờ đây xuất phát từ dịch vụ WCF cung cấp dữ liệu cho tầng trình bày

Bạn cần sử dụng API kiểu web để trả về JSON để dễ sử dụng - và tôi khuyên bạn nên sử dụng API Web mới cho điều đó vì nó cho phép bạn kiểm soát hạt mịn trên tương tác HTTP đã phần nào ẩn trong các triển khai REST trước đó trong WCF

Rõ ràng là tuyến đường này không phải là viên đạn bạc - bạn vẫn cần phải quan tâm đến các chuyến đi khứ hồi và độ trễ (nó sẽ rất dễ dàng để có các bộ phận tổng hợp của giao diện người dùng web của bạn thực hiện các cuộc gọi riêng biệt đến phần phụ trợ cho dữ liệu kết thúc bằng các trang rất chậm để hiển thị). Nhưng về mặt kiến ​​trúc thì không có lý do gì mà cách tiếp cận này đặc biệt ít hạn chế hơn là có một ứng dụng web truyền thống.

Có lẽ một nhược điểm là mỗi trang sẽ có ít nhất hai vòng - một để lấy HTML + JS và một cho JS để lấy dữ liệu - với ứng dụng web truyền thống chỉ có một roundtrip để đạt được giống như dữ liệu được tải phía máy chủ khi hiển thị trang ở địa điểm đầu tiên

+1

True, trừu tượng bây giờ nằm ​​trong WCF. Đối với API Web mới, nó đã được phát hiện trong một thời gian của chúng tôi và là một công cụ rất tốt cho giải pháp này. Chúng tôi không quá lo lắng về toàn bộ "cách giao tiếp với WCF và với cái gì" nhưng giống như "Chúng ta cần phải lo lắng gì về việc chúng ta đang viết các trang tĩnh?" Một số lo ngại: liên quan đến bảo mật, như ủy quyền và xác thực. – Alucardz

+0

... xác thực, quản lý phiên, có thể nội địa hóa ... Tôi không nói rằng những điều này không khả thi, tất nhiên WCF có thể xử lý chúng hoàn toàn tốt nhưng bằng cách làm như vậy không phải là chúng tôi "tái phát minh bánh xe "để nói chuyện? – Alucardz

+0

"Có lẽ một nhược điểm là cho mỗi trang sẽ có ít nhất hai vòng" - không phải là vấn đề nếu tất cả tương tác người dùng chuẩn được lồng trong một trang duy nhất. –

2

Bạn có thể xem một số thư viện js nâng cao hơn như KendoUI chẳng hạn, điều đó sẽ làm phần lớn nhất của hệ thống ống nước cho bạn. Bạn có thể thưởng thức một số tính năng thực sự thú vị, mà các nhà phát triển ASP.NET đã sử dụng để làm với mã phía máy chủ, out-of-the-box chỉ với mã phía máy khách. Khuôn khổ vẫn đang trong quá trình phát triển và bạn có thể mong đợi nhiều tính năng thú vị hơn nữa.

dislaimer: Tôi làm việc tại Telerik, mặc dù không trực tiếp tham gia vào sản phẩm và chúng tôi cũng sử dụng nó trong nội bộ. Tôi không phải từ đội ngũ bán hàng cũng không phải từ sự phát triển - Tôi chỉ nghĩ rằng đó chỉ là những gì bạn cần.

+0

Cảm ơn phản hồi của bạn. – Alucardz

+0

Chúng tôi đã cân nhắc sử dụng KendoUI và Sencha. Tuy nhiên, điều này chỉ trả lời phần giao diện người dùng của vấn đề mà chúng tôi không thực sự gặp sự cố, có rất nhiều khung công tác tuyệt vời như bạn đã đề cập. – Alucardz

Các vấn đề liên quan