2015-01-07 8 views
-1

저는 WCF를 매우 처음 사용하고 있으며, 어떻게 동작하는지 돌아보기 위해 노력하고 있습니다. 웹 개발자는 (결코) 웹 개발자가 아니므로이 방법을 사용할 의사가 없음을 명심하십시오. 그러나, 그것은 나의 신청을 위해가는 길 인 것처럼 보인다. 사실상 표준 "Best Practices" article을 포함하여 온라인에서 본 모든 기사 및 자습서는 모두 데이터베이스 및 웹 서비스와 함께 사용되고 있다고 가정하는 것으로 보이므로 내 머리를 감싸는 것이 어렵습니다. 다시 전달하려고합니다.ServiceContract를 사용하지 않는 WCF DataContract 버전 관리

기본적으로 나는 시간이 지남에 따라 급속도로 진화 할 수있는 클래스가있는 프로젝트를 가지고 있습니다. 그래서 나는 민첩한 버전 관리가 가장 좋을 것이라고 가정합니다. 그 클래스의 이전 버전을 최신 버전과 호환되도록하고 싶습니다. 그리고 그 반대도 마찬가지입니다. 이제는 현재 염려하고있는 한,이 클래스를 사용하여 데이터를 저장합니다. 나는 getter/setter를 제외하고는 어떤 메소드도 필요로하지 않는다. 그래서 서비스 계약이 필요하지 않다고 믿습니다. 개체는 기본적으로이 전역 데이터 집합에 대한 액세스를 전달하는 단일 항목으로 사용됩니다. 이 데이터 개체를 여러 시스템의 여러 응용 프로그램간에 공유 할 수 있기를 원합니다.

WCF에서이 작업을 수행 할 수있는 방법이 있습니까? 웹과 데이터베이스를 최소한으로 유지하는 프레임 워크에 대한 설명은 감사하겠습니다. 물론 나는 내가 원하는 것을 성취하는 다른 제안에 대해서도 개방적이다. 감사합니다

답변

1

내 경험에 의하면 WCF는 당신이 달성하고자하는 것에 대해 매우 중량입니다. 간단한 "데이터 전송 객체"가 있다면 REST 서비스 (또는 JSON을 반환하는 다른 웹 서비스)를 만드는 것이 더 나을 것입니다. WCF가 당신을 위해 할 수있는 몇몇 기계들 사이에서 데이터를 앞뒤로 직렬화하고 싶어하는 것 같다.하지만 REST가 아주 잘하고 MVC 프레임 워크에서 구현하는 것이 훨씬 간단한 간단한 저장 비유를 사용하는 것이 더 나을 것이다. .

+0

예, 동의합니다. 그것은 아주 헤비급 보였다. REST에 좋은 자원이 있습니까? 특히 웹/데이터베이스 기반이 아닌 하나? – audiFanatic

+0

글쎄, REST는 JSON (일반적으로) 직렬화 된 클래스를 리턴하는 HTTP 호출 구문이다. 그렇다면 "비 웹"REST 구현은 없습니다. 귀하의 API는 IIS에서 호스팅되고 HTTP를 사용하므로 http://www.asp.net/web-api/overview/older-versions/build-restful-apis-with-aspnet-web을 따르는 것보다 더 나쁠 수 있습니다. -api – PhillipH

+0

미안하지만 아직 나에게 그리스어가 전부다. 저는 데이터를 저장하는 수단으로 JSON과 XML에 익숙하지만 다시는 웹 기반 응용 프로그램에서 사용한 적이 없기 때문에 아직 이해하기 힘듭니다. – audiFanatic

2

좋아, 나는 철저하게 ServiceStack NuGet 패키지를 다운로드하고 ServiceStack.Text.TypeSerializer을 사용하는 것이 좋습니다 - API가 (죽은 쉬운) 다음과 같습니다

string serialString = ServiceStack.Text.TypeSerializer.SerializeToString<TObject>(content); 

당신은 클래스의 당신의 JSON 문자열 버전을, 당신은 그 반대로 사용할 수 있습니다

TObject assetValue = ServiceStack.Text.TypeSerializer.DeserializeFromString<TObject>(serialString); 

다시 되돌아 갈 수 있습니다. 중간에 저장하거나 보낼 수 있습니다. 구조 변경에 대한 관대함.