2012-03-08 35 views
9

Hiện tại, tôi đang chọn công nghệ cho một ứng dụng di động đa nền tảng đơn giản. Các hệ thống đích về cơ bản là iOS, Windows Phone 7.5 và Windows 8. Trong bước đầu tiên, nó sẽ là một ứng dụng LAN không dây cục bộ.Ứng dụng web HTML5 - Chọn công nghệ serverside

Có các máy chủ hiện có (sử dụng .net/WCF) có tất cả dữ liệu tôi muốn hiển thị. Các ứng dụng sẽ được bỏ phiếu mỗi vài giây và đưa ra một cái nhìn trực tiếp trên dữ liệu. Tôi sẽ không truy cập trực tiếp vào máy chủ dữ liệu nhưng phải tạo máy chủ ứng dụng của riêng tôi ở giữa.

Đối với ứng dụng khách, tôi đã chọn phương pháp HTML5, CSS, JavaScript (JQuery) để làm cho nó chạy trong bất kỳ trình duyệt hiện đại nào. Vì vậy, tôi sẽ phải giao tiếp qua http.

Câu hỏi của tôi là kỹ thuật nào được sử dụng cho phía máy chủ của ứng dụng của tôi. Tôi phải nhận được yêu cầu http, nhận dữ liệu (tốt nhất qua WCF) từ một máy chủ khác và gửi cho khách hàng dưới dạng xml hoặc html. (Tôi không hoàn toàn chắc chắn cho dù máy chủ hoặc khách hàng có để chuyển đổi dữ liệu xml vào html)

Tìm kiếm trên web tôi đã tìm ra hai cách tiếp cận có thể:

  • ASP.net
  • Xây dựng riêng của máy chủ http đơn giản của tôi sử dụng WCF

Nhìn vào một số tài liệu và ví dụ ASP.net Tôi có ấn tượng rằng nó hoạt động theo cách tôi biết từ PHP, v.v. (Khách hàng gửi yêu cầu, máy chủ chạy tập lệnh/chương trình, máy chủ gửi phản hồi , programm chấm dứt) Tôi không thể giữ các đối tượng trong bộ nhớ và chạy mã độc lập với yêu cầu của khách hàng. Hoặc ít nhất nó không được thiết kế để làm việc như thế. Đúng không?

Điều đó sẽ buộc tôi phải xây dựng máy chủ rất đơn giản của riêng mình có thể trả lời một số yêu cầu http cụ thể.

Vì vậy, câu hỏi của tôi là:

  • Are giả định của tôi về ASP.net có đúng không? Hay tôi đã hiểu sai?
  • Máy chủ http của riêng bạn có phải là con đường để đi không?
  • Bạn có thể đề xuất bất kỳ phương pháp tiếp cận nào khác (trong thế giới Microsoft/.net) không?

Cảm ơn trước ...

+1

Để biết tốc độ, dễ dàng kiểm tra và dễ dàng tích hợp, tôi nghĩ bạn không thể đi sai với MVC. Thật tuyệt vời khi phát triển các dịch vụ web –

+0

Quan điểm của bạn về công nghệ phía máy chủ, mặc dù chính xác, rất hẹp. Có nhiều nhóm công nghệ phía máy chủ như PHP, Java, Python, v.v. Tôi chưa bao giờ là fan của ASP .Net vì lý do cấp phép đơn giản. Tôi không muốn gây nhầm lẫn cho bạn nhưng bạn nên làm một số nghiên cứu thêm trước khi hoàn thiện công nghệ phía máy chủ của bạn. –

+0

Tôi đích thân đi với Node.js hoặc Ruby EventMachine và tạo máy chủ web của riêng tôi (cũng có các khung giá như Rails hoặc Sinatra [được khuyến nghị]). Tôi không thích ASP.Net cho cùng một lý do @juzerali đã đề cập. Khác với một máy chủ web, bạn có thể tạo một máy chủ web-socket, tốt hơn là bỏ phiếu. – omninonsense

Trả lời

2

Có vô số công nghệ web mà thể làm điều đó nhưng điều nổi bật đối với tôi là thế này:

máy chủ

Có hiện có (bằng .net/WCF) có tất cả dữ liệu tôi muốn hiển thị.

Vì vậy, bạn đã có. Net đá xung quanh và tôi không thể không nghĩ rằng cách nhanh nhất để lấy dữ liệu ra khỏi máy chủ .net/WCF bằng máy khách .net/WCF.

Vì lý do đó một mình tôi sẽ đi với asp.net MVC. Cung cấp cho bạn một con đường nhanh chóng và dễ dàng để truy cập dữ liệu của bạn trong khi vẫn cho bạn nhiều linh hoạt với cách bạn xử lý phần "V" (các trang HTML thẳng, ajax với dữ liệu xml hoặc json, v.v.)

Chỉ cần tháng trước asp .net mvc được phát hành theo giấy phép mã nguồn mở Apache 2.0.

Đối với trường hợp sử dụng của bạn, tôi muốn giữ cách xa webforms asp.net và asp.net ajax

chỉnh sửa:

tôi không thể giữ các đối tượng trong bộ nhớ và mã chạy độc lập với khách hàng yêu cầu. Hoặc ít nhất nó không được thiết kế để làm việc như thế. Đúng không?

ASP.net (như rất nhiều máy chủ ứng dụng) có cả phiên và phạm vi ứng dụng mà bạn có thể lưu trữ dữ liệu trong. Bạn cũng có thể tạo chủ đề nền để thực hiện công việc bên ngoài các tiêu chuẩn request-> phản ứng lifycycle.

0

Những gì tôi có thể nói là:

Sử dụng LUÔN công nghệ mã nguồn mở :-). Có hàng tá thư viện/khung công tác để viết các máy chủ web rất tốt nhưng nếu bạn cần cuncurrency cao, tôi có thể đề xuất sử dụng các khung dựa trên sự kiện chứ không phải các chuỗi dựa trên sự kiện/quy trình.

Node.js (như đã nói bởi @withadot) nhưng cũng Python Tornado là một lựa chọn tốt.

3

Bạn có thể xem APE (Ajax push Engine) vì ứng dụng của bạn yêu cầu bỏ phiếu. Nó được xây dựng dựa trên javascript và hoạt động như một máy chủ Comet.

Hoặc bạn cũng có thể sử dụng một trong các dịch vụ trả tiền cho đẩy (do đó bạn không nên bận tâm nhiều về công nghệ máy chủ)

1) Pusher

(Từ trang chủ pusher: Pusher là một tổ chức API cho một cách nhanh chóng, dễ dàng và an toàn thêm chức năng thời gian thực khả năng mở rộng lên web và các ứng dụng di động.)

2) UrbanAirship

Vì @Fabio đề cập đến Python Tornado có thể được sử dụng luân phiên để sử dụng. Một máy chủ COMET của nó, và rất nhiều ứng dụng web thời gian thực được xây dựng dựa trên điều này. Có nhiều hướng dẫn có sẵn khi bỏ phiếu với NodeJs. Một tìm kiếm google đơn giản đưa tôi đến đây article.

3

Dữ liệu khi được truy cập qua thiết bị di động sẽ tốn kém. Vì vậy, tôi muốn sử dụng JSON/XML để gửi dữ liệu qua dây. Sẽ đi với phương pháp RESTful để lấy dữ liệu với WCF Restful services/ASP.NET Web API trong .NET stack. Ngoài ra, nếu bạn sẽ xem xét việc sử dụng pin, bạn nên tránh bỏ phiếu và nên sử dụng khung báo hiệu. Trong .NET stack, chúng ta có SignalR. Điều này sẽ thông báo cho khách hàng khi dữ liệu mới có sẵn và khách hàng sẽ bắt đầu một yêu cầu mới để lấy dữ liệu.

Nếu bạn muốn thử nghiệm các công nghệ mới, tôi khuyên bạn nên sử dụng node.js ở phía máy chủ và socket.io để giao tiếp từ khách hàng cho logic báo hiệu.Ngoài ra, tôi muốn viết ứng dụng máy khách bằng cách sử dụng khoảng cách điện thoại & javascript để nó có thể dễ dàng được chuyển sang các nền tảng khác nhau.

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