2009-10-05 4 views
2

이전에는 Silverlight를 사용한 적이 없었지만, 필자는 동적/대화 형 양식을 작성하여 작성해야했습니다. 이로 인해 많은 경험이없는 두 가지 기술, 즉 JavaScript/jQuery 또는 Silverlight 중 하나가 선택됩니다. (편집 : 응용 프로그램이 내부이므로 Silverlight를 사용할 수 있다고 가정 할 수 있습니다.)웹 서버와의 Silverlight 상호 작용

결국 일부 데이터를 서버에 다시 제출해야합니다. ASP.net에서 일반적인 HTTP Form을 사용하면 Button과 onClick Event를 가질 수 있다는 것을 알고 있습니다. JavaScript 접근 방식에는 필드를 동적으로 추가/제거하기위한 일부 DOM 조작이 포함되지만 버튼을 클릭하면 현재 DOM이 ASP.net 응용 프로그램에 제공되고 정상적으로 처리됩니다. 그것은 여전히 ​​일반적인 WebForms 응용 프로그램입니다.

그러나 상호 작용이 Silverlight와 어떻게 작동합니까? 본질적으로 HTTP 양식을 게시하는 Silverlight 응용 프로그램에 Button을 가질 수 있습니까? 아니면이 웹 서비스를 사용합니까? Silverlight 응용 프로그램이 서버에서 일부 데이터를 다시 가져올 수 있다면 좋을 것입니다. 그러면 웹 서비스라고 생각할 수 있습니다.

+0

다양하고 자세한 답변을 주셔서 감사합니다. 마지막으로 jQuery는 SL을 보증 할만큼 복잡하지 않았고 jQuery는 순수한 Magic ™이기 때문에 jQuery와 함께 갔다. –

답변

2

환경이 얼마나 강력한지를 알기 위해 Silverlight를 사용해 보시기 바랍니다. 개인적으로 jQuery가 좋다고 생각하지만 Silverlight를 사용하면 훨씬 더 제어되고 풍부한 환경을 얻게됩니다.

  1. Visual Studio 2008 다운로드 Microsoft® Silverlight™ 3 Tools for Visual Studio 2008 SP1을 사용한다고 가정합니다. 이렇게하면 Visual Studio에서 Silverlight 프로젝트를 만들 수 있습니다. Expression Blend를 사용하여 Silverlight 응용 프로그램을 제작할 수도 있지만 Visual 디자이너 없이도 XAML을 작성하는 것이 좋으면 개발자 관점에서 Visual Studio를 좀 더 성숙하게 사용할 수 있습니다.
  2. Microsoft .NET RIA Services July 2009 Preview을 시도해 볼 수 있습니다. Silverlight 응용 프로그램이 ASP.NET 서버의 데이터 모델과 원활하게 작동 할 수있게 해주는 매우 강력한 환경입니다. 특히 LINQ to SQL 및 ADO.NET Entity Framework와의 통합이 매우 뛰어납니다. 그러나 Silverlight를 처음 사용하는 경우 학습 곡선이 약간 가파른 것을 알 수 있습니다. 쿼리 작업을 비동기 적으로 실행하려면 쿼리 작업을로드해야합니다. 다운로드 위치에서 찾은 Word 문서를보고 시작하십시오.
  3. 다른 사람들은 Silverlight 컨트롤을 호스팅하는 웹 페이지에서 HTML 양식을 숨기고 Silverlight에서 HtmlPage 개체를 사용하여 브라우저 DOM에 액세스하여 양식을 제출할 것을 제안했습니다.
  4. .NET RIA Services 또는 WCF와 같은 웹 서비스 프레임 워크를 사용하지 않고 Silverlight 내에서 POST 작업을 수행하려는 경우 WebClient 또는 HttpWebRequest 개체를 사용할 수 있습니다. Silverlight 3에는 두 개의 HTTP 스택이 있으며 기본값은 브라우저 스택을 사용하여 브라우저 쿠키 (예 : 폼 인증 쿠키)가 요청에 사용되도록합니다.
  5. 양식에 복잡한 상호 작용 논리가 있으므로 MVVM 패턴을 살펴 보는 것이 좋습니다. Silverlight에서는 양식과 관련된 모든 데이터가 포함 된보기 모델을 만듭니다. 관련 데이터에는 양식의 필드 값뿐만 아니라 어떤 컨트롤이 활성화되었는지에 대한 정보, 적용되는 선택 정보 등이 포함됩니다. 그런 다음 양식 (보기)을보기 모델에 데이터 바인딩하고 INotifyPropertyChanged을 view-model을 사용하면 복잡한 상호 작용 로직을 얻을 수 있습니다. 최소한 개발자로서 다루기 쉬운 방식으로는 자유롭지 않습니다. .NET RIA Services에서 생성 된 부분 클라이언트 측 클래스는 뷰 모델에 특히 적합한 후보이며 해당 프레임 워크 내에서 MVVM 패턴을 적용하기 쉽습니다.
+0

모든 답변이 유용하고 도움이되므로 모두 읽으시기 바랍니다._me_에 대한 질문에 가장 잘 답변했기 때문에 받아들입니다. 그러나 YMMV. –

1

예, ASP.net 양식과 같은 서버로 이동하는 Silverlight 응용 프로그램에서 버튼을 사용할 수 있습니다. Silverlight에서는 .net 프레임 워크 요소를 활용할 수있는 모델 만 같습니다 (제한된 방식 임).

2

Silverlight로 웹 서비스를 찾고있는 것처럼 들립니다. 프레임 워크는 상대적으로 강력하고 구현하기 쉽습니다. 일단 잠수하면 웹 서비스를 신속하게 가동시켜야합니다. 당신이 당신의 실버 라이트 응용 프로그램이 그것을 둘러싸고있는 HTTP 양식을 게시 할 수 있지만

http://silverlight.net/getstarted/

, 당신은이 문제에 대한 적절한 구현 경로에 있는지 확인해야합니다.

1

저는 지금까지 모든 사람들이 귀하의 실버 라이트 제안을 지원한다고 생각하지 않습니다. Jquery를 대신 사용하십시오! 꽤 동적 인 양식을 만들 수 있으며 다양한 플랫폼에서 사용자에게 액세스 할 수 있습니다. 저는 웹 개발자이며 실버 라이트 런타임을 설치하지 않았습니다. 나는 강하게 jQuery를 제안한다!

+0

다음과 같이 추가해야합니다. Silverlight가 설치되어 있다고 가정 할 수 있습니다. 그것은 제가 알기로 어떤 미지의 기술을 찾아야하는지에 관한 것입니다. Silverlight에 기대는 것은 단순히 기존 C# 개발자이기 때문입니다. –

1

Silverlight는 강력한 도구이지만 필요한 동적 인 수준에 따라 ASP.NET 페이지를 만들고 jQuery를 사용하여 동적으로 만들 수 있습니다.

jQuery를 사용하면 Javascript와 jQuery 라이브러리를 배우게됩니다. Silverlight를 사용하는 경우 WPF, WCF 및 .NET 서버 코드와의 상호 작용을 학습하게됩니다.

이미 ASP.NET에서 사이트를 구축하면 jQuery 경로가 80 %가됩니다. Silverlight 경로를 사용하는 경우 학습 곡선이 더 가파른 것으로 생각됩니다.

Silverlight 옵션을 사용하는 경우 Tim Heuer는 communicating from Silverlight to Asp.net web services의 몇 가지 예를 제공합니다.

2

저는 JQuery를 작성하는 방법을 모르지만 실버 라이트를 알고 있습니다. 나는 당신이 원하는 모든 것이 양식이라면 Silverlight는 약간 과잉이라고 생각하고 JQuery와 같은 것을 사용하면 더 잘할 수있을 것이라고 말하고 싶습니다.

그러나 C#을 알고 있기 때문에 시간을 절약하기 위해 알고있는 것에 더 가깝게가는 것이 좋습니다. 이 글을 쓰려면 Silverlight, ADO.Net Entity Model 및 RIA 서비스를 사용할 것입니다. Silverlight Dataform을 사용하면 매우 동적 인 형식을 매우 빠르게 만들 수 있으며 데이터를 깨끗하게 유지하는 간단한 유효성 검사를 수행 할 수도 있습니다.

check here 여기에 Brad Abrams 게시물이 있습니다.

+0

RIA 서비스 +1 - 그는 그 양식을 즉시 작성할 수 있습니다. –

1

당신의 프로젝트가 내부적이고 주어진다면 당신은 Silverlight가 설치되어 있고 모든 선택이 당신이 원하는 것을 제공 할 수 있다고 가정 할 때 그 대답은 선호하거나 가려운 것 (당신이 개인적으로 가지고 놀고 싶은 것)으로 보일 것입니다.

프로젝트 마감일을 지정하지 않았습니다. Silverlight를 사용하면 RIA 디자이너와 같은 결과를 얻으려면 Blend (액세스 권한이있는 경우 언급하지 않았 음)가 필요할 가능성이 높습니다. 그런 다음 사용 방법을 배우는 데 약간의 시간을 소비해야합니다. 블렌드 (얼마나 많은 노력이 RIA가 얼마나 부자인지에 달려 있음). 내가보기로

브레이크 다운 :

웹 서비스 : 당신이 당신의 (a 웹 서비스를 사용하는 좋은 이유가 없다면 당신은 RIA 또는 WCF를 사용한다 신선한 시작하는 경우 이미 존재처럼, 당신은 선택의 여지가 , etcetera).

WCF : 웹 서비스를 대체하지만 배관의 대부분을 직접 만들어야합니다.

RIA : Silverlight 용 데이터 서비스를 대상으로합니다 (향후 ASPX를 포함하도록 확장 예정). RIA Services는 아직 베타 버전이 아닙니다. 중요한 변경 사항이있을 수 있으며 변경 사항이 회사에 과도하게 영향을 줄 때까지 앱이 작동하지 않을 것이라는 점을 명심해야합니다.

당신은 이유를 밝히지 않고 ASPX를 빠뜨 렸습니다. 이것은 동적 인 생각이 많은 것과 다를 수 있습니다. ASPX와 AJAX (AJAX가 필요하다고 가정 할 때)가 문제를 가장 잘 해결하지 못할지 궁금합니다.

jQuery가 확실히 할 수 있기 때문에 공이 법원에 있습니다. 얼마나 많은 시간을 가지며 무엇을 배우고 싶습니까? 얼마나 역동적으로 당신이 정말로 원하고 필요로합니까?

이 트레드의 다른 몇 가지 점에 대해 설명합니다. Silverlight 학습은 그렇게 가파른 것은 아닙니다. 애니메이션을 배우지 않으면 블렌드 IDE가 가장 시간이 많이 소요될 가능성이 큽니다. 실제로, 주로 VS를 사용하여 코드를 작성한 경우 Blend가 주로 레이아웃에 사용됩니다. 간단한 RIA의 경우 Blend를 건너 뛸 수도 있습니다 (하지만 그렇게하지 않는 것이 좋습니다).

마지막으로 일부 사양 (비헤이비어/디자인/DB)에 대한 작업을 수행 한 다음 사람들이 사용할 내용을 물을 수 있습니다.

2

버튼 클릭으로 양식 게시를 원한다면 Silverlight를 통해이 작업을 수행 할 수 있습니다.

Silverlight 컨트롤을 호스팅하는 aspx 페이지에서 div를 추가합니다.이 예에서는 formDiv라고 부릅니다. formData 변수는 게시하기 위해 작성한 양식입니다. 간단히 말해서

 var doc = HtmlPage.Document; 
     var el = doc.GetElementById("formDiv"); 
     el.SetProperty("innerHTML", formData); 
     try 
     { 
      el.Children[0].Invoke("submit"); 
     } 
     catch (Exception) 
     { 
      throw new LogicException("Error launching post"); 
     } 
1

, 그것은 실버 WCF 클라이언트 구현을 통해 웹 서비스를 사용하고, 실버 라이트는 웹 서비스에 액세스 할 수있는 몇 가지 방법을 제공합니다.여기

  1. 간단한 Silverlight-Enabled WCF service to your website

  2. 하고 '핫'새로운 일이 .net RIA servicescomparison to plain ASMX services

  3. 추가에, 여기에 tutorial을의에 방법 - 당신은 또한 Brad Abram's blog을 확인해야 빠르다 , 그는 그것에 대해 많은 정보를 가지고 있습니다.

silverlight.net 동영상도 훌륭합니다. 몇 가지 예가 있습니다.