Silverlight 클 라 이언 트 와 WCF 서버 측 공유 라 이브 러 리

WCF 는 Silverlight 클 라 이언 트 에 인용 공유 유형 을 제공 하기 위해 관련 DataContract 와 DataMember 계약 속성 을 정의 하고 이러한 속성 을 통 해 하나의 데이터 구 조 를 만들어 야 합 니 다.Silverlight 클 라 이언 트 는 인용 을 추가 하여 서버 측 과 통신 할 수 있 습 니 다.실제 프로젝트 에서 이러한 정의 의 한계 가 너무 많 습 니 다. 마이크로소프트 는 현재 .Net RIA Services 를 출시 하여 이 문 제 를 해결 하고 있 습 니 다. 그러나 현재. Net RIA 는 여전히 테스트 버 전 으로 정식 프로젝트 에 사용 되 지 못 합 니 다.이 문제 에 대해 저 는 관련 Prism 프레임 워 크 자 료 를 봤 습 니 다. Prism 은 WPF 와 Silverlight 의 공유 코드 방안 을 설 계 했 습 니 다. 이 개념 을 참고 하여 저 는 Silverlight 프로젝트 의 데이터 계약 을 독립 적 으로 추출 한 다음 에 이런 공유 와 Silverlight 와 WCF 사 이 를 고려 했 습 니 다.이렇게 하면 우 리 는 이 독립 계약 류 에서 복잡 한 기능 을 하면 서 클 라 이언 트 와 서버 측 이 공유 하여 호출 할 수 있다.그러나 Silverlight 클 라 이언 트 와 서버 쪽 에 서로 다른 CLR 이 있 기 때문에 프로젝트 를 만 드 는 동시에 충돌 하 는 인용 을 삭제 해 야 합 니 다.자세 한 절 차 는 프레젠테이션 을 보십시오.
1. 먼저 프로젝트 를 만 듭 니 다. "Silverlight China. CodeSharing"
 
2. 새로운 계약 류 프로젝트 를 만 듭 니 다. 이 프로젝트 는 DataContract 와 DataMember 를 저장 합 니 다. 먼저 Silverlight 류 프로젝트 를 만 듭 니 다. Silverlight China. Code Sharing. Client 를 만 든 다음 에. Net 류 프로젝트 Silverlight China. Code Sharing. server 를 만 듭 니 다. 새 생 성 클래스 에 대해 서 는 Class1. cs 파일 이 있 습 니 다. 이번 프레젠테이션 에서 이 파일 이 필요 하지 않 고 삭제 하면 됩 니 다.
 
 
3. 하나의 네 임 스페이스 를 통일 적 으로 명명 하 는 것 은 정 보 를 동시에 공유 할 수 있 도록 하 는 것 이다.각각 두 개의 새 항목 의 속성 페이지 에 들 어가 기본 네 임 스페이스, Silverlight China. CodeSharing 을 추가 합 니 다.
 
4. 클래스 를 만 들 고 계약 구성원 을 만 듭 니 다. 이 파일 은 클 라 이언 트 에서 만 들 수도 있 고 서버 에서 만 들 수도 있 습 니 다. 여기 서 저 는 Silverlight China. Code Sharing. Client 클 라 이언 트 에서 만 들 겠 습 니 다.
나 는 학생 정 보 를 설명 하 는 새로운 종류의 Student 를 만 들 었 다.서버 쪽 CLR 은 System. Windows 라 이브 러 리 를 지원 하지 않 기 때문에 인용 을 삭제 해 야 합 니 다.
using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace SilverlightChina.CodeSharing.Entities
{
    public class Student
    {
        public string Name { get; set; }
        public string EmailAddress { get; set; }
    }
}

 
5. Silverlight China. Code Sharing. server 에 '링크 클래스' 를 추가 하여 링크 클래스 를 통 해 계약 구성원 을 공유 합 니 다.
 
 
 
 
"링크 추가" 를 선택 하 십시오.
이렇게 해서 공유 계약 류 가 완성 되 었 습 니 다. 이 종 류 를 어떻게 사용 하 는 지 보 여 드 리 겠 습 니 다.
1. 먼저 웹 프로젝트 에 Silverlight China. Code Sharing. server 인용 을 추가 한 다음 WCF 서 비 스 를 구축 합 니 다.
2. WCF 함수 반환 클래스 를 만 듭 니 다. 여 기 는 일반적인 WCF 가 데이터 베 이 스 를 방문 하여 데 이 터 를 되 돌려 주 는 것 과 같은 방법 입 니 다. 여 기 는 Silverlight China. Code Sharing. server 의 계약 구성원 속성 을 호출 했 습 니 다.
using System;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.Collections.Generic;
using System.Text;
using SilverlightChina.CodeSharing.Entities;

namespace SilverlightChina.CodeSharing.Web
{
    [ServiceContract(Namespace = "")]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class StudentService
    {
        [OperationContract]
        public Student GetStudent()
        { 
           return new Student()
            {
             Name="Jv9",
             EmailAddress ="[email protected]"
            };
        }

    }
}

 
 
3. Silverlight 클 라 이언 트 에서 계약 멤버, Student 를 사용 합 니 다.우선 서비스 인용 을 추가 해 야 합 니 다. 추가 할 때 'Advanced' 를 누 르 면 선택 여 부 를 확인 하고 모든 라 이브 러 리 를 중복 사용 합 니 다.
4. 클 라 이언 트 에 인용 을 추가 합 니 다.
using SilverlightChina.CodeSharing.Entities; using SilverlightChina.CodeSharing.Services;
5. 클 라 이언 트 에서 WCF 서 비 스 를 호출 합 니 다.
using System;
using System.Windows;
using System.Windows.Controls;
using SilverlightChina.CodeSharing.Entities;
using SilverlightChina.CodeSharing.Services;

namespace SilverlightChina.CodeSharing
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
            ClientTest();
        }

        void ClientTest()
        {
            var client = new StudentServiceClient();
            client.GetStudentCompleted += (sender, ea) =>
                {
                    tbName.Text = ea.Result.Name;
                    tbEmail.Text = ea.Result.EmailAddress;
                };
            client.GetStudentAsync();
        }
    }
}

 
6. 결 과 는 다음 과 같다.
 
이렇게 하면 이미 공유 계약 구성원 의 기능 을 실현 하 였 으 며, 위의 Client Test 에 서 는 임의의 방법 을 추가 하여 데이터 바 인 딩 을 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기