2010-03-25 1 views
0

배경 : .NET WinForms 응용 프로그램 (C#)에서 데이터 계층에 대한 ADO.net 데이터베이스를 사용하고 있습니다.어떻게 미래의 웹 기반 인터페이스 (웹 서비스 또는 REST)로 ADO.net 로컬 데이터 계층을 마이그레이션 할 수 있습니까?

질문 : HTTP 웹 서비스 또는 REST 인터페이스를 통해 데이터 계층을 추상화 한 모델로 쉽게 마이그레이션 할 수있는 방법을 지금 어떻게 개발하고 있습니까?

예를 들어, ADO.net을 가장 잘 사용하는 인터페이스의 구체적인 구현을 얻으려면 Factory와 함께 표준 C# 인터페이스를 사용합니다. n 계층 시스템 (응용 프로그램 (들)에 변화 < -

감사

답변

2

사실 당신 싶어하는 일은 2 계층 응용 프로그램 (> 데이터베이스 응용 프로그램 <를) - 만드는 것입니다> 응용 프로그램 서버 < - -> 데이터베이스).

보안, 비즈니스 로직 및 모든 것을 생각해야하기 때문에 복잡한 변경입니다.

DataAbstract과 같은 타사 라이브러리를 사용하는 것이 좋습니다. 이것은 완벽한 n-Tier 프레임 워크이며 LINQ와 같은 기능을 원격 데이터 소스에 제공하고 n 계층 개발을 정말 쉽게 할 수있게 해줍니다. 또한 모든 소스에서 응용 프로그램 계층 내의 비즈니스 논리에 쉽게 액세스 할 수있는 웹 서비스 인터페이스를 제공합니다. 더 나아가 아이폰과 윈도우 모바일을위한 클라이언트 라이브러리를 제공하여 레이어에 더 빠른 (바이너리로) 액세스를 가능하게합니다. DataAbstract를 사용할 수없는 플랫폼에 대해서만 웹 서비스 인터페이스가 필요합니다.

1

당신은 머리에 못을 박 았어요. 그것은 추상에 관한 것입니다. 비즈니스 논리의 스토리지 관련 의미를 추상화하여 지금 시작하십시오. 깨끗하고 객체 지향적 인 DAL을 개발하고이를 통해 모든 CRUD/Query 작업을 수행하며, 객체 모델 (또는 도메인 모델, 두 모델의 차이점을 인식하려는 경우)이 구체적인 클래스를 사용할 수 있지만 DAL 작업을 정의해야합니다 인터페이스에서. 팩토리 사용 여부는 특정 유스 케이스에 따라 다르지만, 이러한 추상화를 염두에두고 개발할 경우 컨트롤 컨테이너의 반전을 채택하고 이러한 종류의 배선을 종속성 주입으로 처리하는 것이 좋습니다. Therearelotstochoosefrom.

+0

그래도 인터페이스를 지정해야한다면 IOC 컨테이너는 클라이언트 코드를 데이터 액세스 코드로 연결하는 데 과도한 부담이 될까요? IOC를 추가하기 전에 앱이 얼마나 크고 복잡해야하는지 궁금해하면 복잡한 것이 아니라 전반적으로 간단해질 것입니다. – Greg

+0

많이 사용되는 .Net IoC 컨테이너의 컨벤션 오버 구성 지원은 입력 임계 값을 매우 낮게 만듭니다. 나는 당신이 컨피규레이션이나 컨텍스트를 기반으로 다른 구현을 제공 할 필요가있는 인터페이스가 4 개 또는 5 개 이상이라면 IoC 컨테이너를 살펴볼 차례이다. 당신이 10 명 이상이 될 때까지, 당신은 확실히 거기에 있습니다. 언제나처럼, YMMV. 물론 DAL 연산을위한 인터페이스를 지정하지 않아도됩니다 (NHibernate에 대한 'Session'). 그러나 가능한 경우 추상화에 의존하는 것은 좋은 프로그래밍 습관입니다. – Dathan

1

REST 인터페이스로 DAL을 추상화하고 싶지는 않을 것입니다. REST 인터페이스는 "사용자 에이전트"에 직접 노출되는 것입니다. 비즈니스 계층에서 REST를 통해 데이터를 소비하지 않기를 원할 것입니다.

유일한 예외는 원시 데이터를 일부 원격 제 3 자에게 노출하는 것입니다.

+0

Darrel - 데스크톱 (리치 클라이언트)에서 두꺼운 WinForms 클라이언트가 백엔드와 대화하는 경우 마이그레이션을 권장합니다. 이 때 웹 서비스를 추천 하시겠습니까? 하지만 내 생각에 HTTP REST는 오버 헤드가 적은 프로토콜을 기반으로 한 또 다른 형태의 웹 서비스였습니다. – Greg

+0

REST 서비스와 대화하는 리치 클라이언트 애플리케이션을 수행 할 수 있습니다. 그러나 REST 인터페이스 뒤에서 모든 애플리케이션 로직이 움직이기 때문에 그것은 매우 바보 같은 리치 클라이언트가된다. IMHO "웹 서비스"는 함수 라이브러리를 원격 클라이언트에 노출시키는 방법입니다. REST는 일반적으로 HTTP를 통해 분산 응용 프로그램을 작성하는 접근 방법이며 분산 응용 프로그램 구성 요소를 작성하는 방법과 상호 작용 방법에 대해 많이 설명합니다. REST는 단순한 가벼운 웹 서비스 그 이상입니다. –