2012-03-08 3 views
9

지금은 간단한 크로스 플랫폼 모바일 애플리케이션을위한 기술을 선택하고 있습니다. 대상 시스템은 기본적으로 iOS, Windows Phone 7.5 및 Windows 8입니다. 첫 번째 단계에서는 로컬 무선 LAN 응용 프로그램이 될 것입니다.HTML5 웹 앱 - 서버 측 기술 선택

표시하려는 모든 데이터가있는 기존 서버 (.net/WCF 사용)가 있습니다. 앱은 몇 초마다 폴링하고 데이터를 실시간으로 보여줍니다. 데이터 서버에 직접 액세스하지는 않지만 중간에 내 응용 프로그램 서버를 만들어야합니다.

클라이언트의 경우 현대적인 브라우저에서 실행되도록 HTML5, CSS, JavaScript (JQuery) 방식을 선택했습니다. 그래서 나는 http를 통해 의사 소통을해야 할 것이다.

제 질문은 내 응용 프로그램의 서버 측에서 사용할 기술입니다. 나는 HTTP 요청을 받고, 다른 서버에서 데이터를 얻고 (WCF를 통해) 데이터를 xml 또는 html로 클라이언트에 보내야한다. 내 자신의 간단한 HTTP 서버를 구축 ASP.net

    • : 나는 두 가지 방법을 알아 낸 웹 검색

      (I는 서버 또는 클라이언트가 HTML에 XML 데이터를 변환 할 수 있는지 여부를 확실히 모르겠습니다)

    일부 ASP.net 설명서 및 예제를 보면 PHP 등에서 내가 아는 방식으로 작동한다는 인상을 받았습니다. (클라이언트는 요청을 보내고 서버는 스크립트/프로그램을 실행하고 서버는 응답을 보냅니다. , 프로그램 종료) 개체를 보관할 수 없습니다. 메모리에 저장하고 클라이언트 요청과 독립적으로 코드를 실행합니다. 아니면 적어도 그렇게 작동하도록 설계되지 않았습니다. 그 맞습니까?

    이렇게하면 몇 가지 특정 http 요청에 대답 할 수있는 아주 간단한 서버를 만들게됩니다.

    그래서 제 질문은 다음과 같습니다

    • 는 ASP.net에 대한 내 가정이 정확합니까? 아니면 뭔가 잘못 됐어?
    • 고유 한 http 서버가 될 방법은 없을까요?
    • 다른 방법을 권장 할 수 있습니까 (Microsoft/.net 세계 내에서)? 사전에

    감사합니다 ...

  • +1

    속도와 테스트 용이성, 통합의 용이성을 위해 MVC로는 큰 문제가 될 수 없다고 생각합니다. 웹 서비스 개발에도 우수합니다. –

    +0

    서버 측 기술에 대한 귀하의 관점은 정확하지만 매우 좁습니다. PHP, Java, Python 등과 같은 서버 측 기술의 코호트가 있습니다. 라이센스의 간단한 이유로 ASP .Net의 팬이 된 적이 없습니다. 혼란스러워하지 않고 서버 측 기술을 마무리하기 전에 좀 더 연구해야합니다. –

    +0

    나는 개인적으로 Node.js 또는 Ruby EventMachine을 사용하고 내 웹 서버를 만들 것입니다 (Rails 또는 Sinatra와 같은 랙 프레임 워크가 권장됩니다). 나는 ASP.Net을 좋아하지 않는다. 왜냐하면 @juzerali가 언급했던 것과 같은 이유 때문이다. 웹 서버 이외에 폴링보다 나은 웹 소켓 서버를 만들 수 있습니다. – omninonsense

    답변

    2

    에 나를 인도 :

    가 존재하는 서버가 (.NET을 사용하여이/WCF)에 표시 할 모든 데이터가 있습니다.

    그래서 .net은 이미 시작되었습니다 .net/WCF 서버에서 데이터를 가져 오는 가장 빠른 방법은 .net/WCF 클라이언트를 사용하는 것이라고 생각할 수 없습니다.

    그 이유만으로도 asp.net MVC를 사용할 수 있습니다. "V"부분 (직선 HTML 페이지, xml 데이터 또는 json 등을 사용하는 아약스)을 다루는 방법에 대해 많은 유연성을 제공하면서 데이터를 얻는 빠르고 쉬운 방법을 제공합니다.

    지난 달 ASP .net mvc는 Apache 2.0 오픈 소스 라이선스에 따라 배포되었습니다. 귀하의 사용 사례를 들어

    , 내가 잘 멀리 asp.net 웹 양식 및 asp.net 아약스에서 유지할 것

    편집 :

    나는 클라이언트의 메모리 및 실행 코드 독립의 개체를 지킬 수없는 요청. 아니면 적어도 그렇게 작동하도록 설계되지 않았습니다. 그 맞습니까?

    ASP.net (응용 프로그램 서버의 많은 등)는 데이터를 저장할 수있는 세션 및 애플리케이션 범위에 모두 있습니다. 또한 표준 요청 -> 응답 lifycycle 외부에서 작업을 수행하는 백그라운드 스레드를 만들 수 있습니다.

    0

    내가 말할 수있는 것은 :

    사용 항상 오픈 소스 기술 :-). 아주 좋은 웹 서버를 작성하는 데 수십 개의 라이브러리/프레임 워크가 있지만 높은 cuncurrency가 필요한 경우 스레드 기반/프로세스 기반 프레임 워크가 아닌 이벤트 기반 프레임 워크를 사용할 것을 제안 할 수 있습니다.

    Node.js (@withadot에서 말한 것)뿐만 아니라 Python Tornado도 좋은 선택입니다.

    3

    애플리케이션에 폴링이 필요하므로 APE (Ajax push Engine)을 살펴볼 수 있습니다. 자바 스크립트를 기반으로 만들어졌으며 Comet 서버처럼 작동합니다.푸셔가 있습니다 :

    또는 당신은 또한

    1) Pusher

    이 (푸셔 홈페이지에서 (서버 기술에 대해 많이 귀찮게 안되도록) 밀어위한 유료 서비스 중 하나를 사용할 수 있습니다 웹 및 모바일 애플리케이션으로 확장 실시간 기능을 추가 쉽고 안전하게, 빠르게하기위한 API를 개최했다.)

    2) UrbanAirship

    @ Fabio는 Python Tornado을 사용하여 폴링을 대신 사용할 수 있습니다. 그것의 COMET 서버 및 많은 실시간 웹 응용 프로그램은 이것에 기초합니다. NodeJs을 사용하여 폴링에 사용할 수있는 자습서가 많이 있습니다. 간단한 구글 검색 그것을하지만 나를 위해 띄는 것은 이것이다 할 수있는 수많은 웹 기술이 있습니다이 article.

    3

    모바일 장치를 통해 액세스 할 때 데이터에 많은 비용이 듭니다. 따라서 JSON/XML을 사용하여 데이터를 유선으로 전송하는 것을 선호합니다. .NET 스택에서 WCF Restful services/ASP.NET Web API으로 데이터를 검색하는 RESTful 접근 방식을 사용합니다. 또한 배터리 사용을 고려한다면 폴링을 피해야하며 Signaling 프레임 워크를 사용해야합니다. .NET 스택에서는 SignalR을 사용합니다. 그러면 새 데이터를 사용할 수 있고 클라이언트가 데이터를 가져 오기 위해 새 요청을 시작할 때 클라이언트에 알립니다.

    새로운 기술을 실험하고 싶다면 서버 측에서 node.js을 사용하고 클라이언트에서 신호 로직을 전달하려면 socket.io을 사용하는 것이 좋습니다.또한 클라이언트 갭 & 자바 스크립트를 사용하여 클라이언트 응용 프로그램을 작성하여 다양한 플랫폼에 쉽게 이식 할 수 있습니다.