2010-03-16 3 views
4

현재 ADO.net 및 저장 프로 시저를 사용하여 데이터베이스에 연결하는 DAL에 연결해야하는 WCF 서비스를 만들고 있습니다.이것은 거친 반 패턴입니까?

DAl은 데이터베이스를 통해 응답을 서비스를 통해 클라이언트로 전달되는 datacontract에 씁니다.

나는 이것이 반 패턴 'CRudy Interface'일지도 모른다고 읽었지 만, datacontract를 공유 할 때 확실하지는 않습니다.

안티 패턴을 사용하고 있다면 누구나 내가 필요한 행동에 대해 더 나은 패턴을 제안 할 수 있습니까?

답변

4

글쎄, CRUDy 패턴에 대한 논란이있는 것 같습니다. 장단점입니다. 최소한 나는 (로가 here 댓글을 달았) 그것을 방지 패턴을 사용하면 이러한 종류의 코드를 작성하게하는 서비스 인터페이스를 부를 것이다 :

service.CreateCustomer(c); 

foreach(Group group in c.Groups) 

    service.AddCustomerToGroup(c.CustomerId, group.GroupId); 

foreach(Person person in c.Contacts) 

    service.AddCustomerContact(c.CustomerId, person); 

자체가 나쁜 CRUDy 인터페이스를 노출되어 있습니까? 나는 그렇게 말하지 않을 것이다. 중요한 것은 인터페이스를 제공하는 것입니다있는 것이다 기본 프로세스에 대한

  1. 캡슐화 지식
  2. 하지 될 매우 수다스러운
+0

CRUD 인터페이스의 문제점은 원격으로 복잡한 작업을하기 위해 여러 번 호출해야하기 때문에 일반적으로 2 차 규칙을 위반하게된다는 것입니다. 이는 "수다스러운"것입니다. –

+0

Joe, 예를 들어 생각하십니까? –

+1

CRUD 인터페이스의 위험은 다중 호출을 장려한다는 것입니다. 예를 들어 Order를 처리하기 위해 InsertOrder와 InsertOrderLine 메서드가 둘 다있을 수 있습니다 - 두 개의 인터페이스 호출. 이는 하나의 잘 정의 된 인터페이스 메소드를 사용하여 전체 트랜잭션을 처리하는 것과는 대조적입니다. –

2

그것은 CRUD 인터페이스 안티 패턴처럼 보인다, 그러나 그것은 좋은 것입니다 몇 가지 인터페이스 예제를 확인하십시오.

paper에는 더 나은 서비스 인터페이스 설계에 관한 토론이 있습니다.

CRUD 방지 패턴에는 대체에 대한 비평이 포함되어 있습니다.

1

구현하기위한 cruddy 유스 케이스가있는 경우 cruddy 인터페이스를 얻으려고하지 마십시오. 반 패턴은 비 cruddy 물건을 cruddy 방식으로 구현할 때입니다.