2

그래서 문서 인덱싱 기능을 사용하는 것 외에 다른 이유가 없으므로 Sharepoint에 앉아 있기 때문에 비즈니스에서 응용 프로그램을 다시 작성하기로 결정했습니다.우리는 nTier 응용 프로그램의 서비스 계층 외관으로 WCF 서비스를 사용해야합니까?

우리는 C#을 사용하여 ASP.NET MVC3에서 새 앱을 만들기로 결정했습니다. 우리는 전반적인 아키텍처를 결정하려고합니다.

나는 다음과 같은 생각

:

  • 코어 - 도메인 개체 (POCO의)
  • 데이터 - 엔티티 프레임 워크 (코드 첫 번째) 또는 nHibernate 수는 저장소
  • 서비스로 노출을 -이 계층은 캡슐화 것 모든 비즈니스 로직 및 외관으로 작동합니다. 이것은 더 많은 모듈로 나눌 수 있습니다.
  • UI (MVC) - 컨트롤러 및 뷰.

이것은 모두 Autofac과 같은 DI 컨테이너를 사용하여 함께 묶을 수 있습니다.

우리는 또한 우리는 등 우리의 컨트롤러 그래서

을 테스트하기 위해 우리의 서비스 계층 및 데이터 저장소를 조롱 할 수 있어야하므로 단위 테스트를 작성 할 수 있도록하려면 - 않는 좋은 전반적인 아키텍처 패턴과 같은 위의 소리 꽤 표준적인 비즈니스 응용 프로그램을 원하십니까?

아이디어 즉 데이터, 서비스, UI가 코어를 참조 할 수 있지만

나의 다음 질문은 그에서 일부입니다 UI는 정말 등 데이터의 구현 세부 사항에 대해 서비스 수준 구성 요소에 이야기하지 알 것 인 우리의 응용 프로그램 (WCF Services/ASP.NET Web API) 이외의 일부 기능을 노출하고자 할 것입니다.

귀하의 관점에서 볼 때 가장 좋은 옵션은 무엇입니까? WCF에서 서비스 레이어를 만들고 MVC의 컨트롤러에서 이것을 호출 하시겠습니까? 만약 그렇다면 테스트가 가능하거나 웹 서비스에 래퍼를 작성해야할까요? 시간이 많이 걸릴 수 있습니까?

또는

는 서비스 계층 (즉 Service1.CreateObject (개체 OBJ)) 작성 계속 C#을 수업에서하고 우리의 서비스 계층을 호출 우리가 필요로하는 단지 기능을 노출 별도의 항목으로 웹 서비스를 만들?

어떤 경로가 가장 좋을지 모르겠으니 생각하면 도움이 될 것입니다.

답변

2

우리는 MVC 응용 프로그램 이외의 다른 응용 프로그램이 서비스에 이야기 할 것입니다 경우

에 따라 달라 nTier 응용 프로그램에서 우리의 서비스 계층 외관으로 WCF 서비스를 사용합니다.

  • MVC3 유일한 응용 프로그램입니다 : 물론 : 당신 아닌가요 gonno는
  • 다른 응용 프로그램이 너무해야합니다. 해.

귀하가보기에 무엇이 최선의 선택일까요? WCF에서 서비스 레이어를 만들고 MVC의 컨트롤러에서 이것을 호출 하시겠습니까? 만약 그렇다면 테스트가 가능하거나 웹 서비스에 래퍼를 작성해야할까요? 이 시간이 오래 걸릴 수 있습니다

구체적인 서비스 클래스를 사용하지 마십시오. 서비스 인터페이스를 사용하십시오. 문제 해결됨.

나의 다음 질문은 어떤 점에서 우리는

난 당신이 같은 WCF를 의미 있기를 바랍니다 우리의 응용 프로그램 즉, WCF 서비스/ASP.NET 웹 API 외부의 일부 기능을 노출 할 거라고이다 서비스. 별도의 엔티티가 우리의 서비스 계층을 호출 우리가 필요로하는 단지 기능을 노출로 C#을 수업 및 웹 서비스를 생성 (즉 Service1.CreateObject(object obj))

는 서비스 계층을 작성 계속 하시겠습니까?

ehh. 어떤 방법이 Service1.CreateObject(object obj)입니까? 그건 틀린 것 같아.

+0

OK - 서비스 레이어를 WCF 서비스로 작성하는 것처럼 들립니다. 이전에 WCF를 사용하지 않았기 때문에 인터페이스를 생성 할 수 있습니까? 그렇다면 조롱하는 프레임 워크를 사용하여 쉽게 모의 할 수 있습니다. Service1.CreateObject (object obj)는이 게시물에서 도메인 모델의 특성에 대해 언급하고 싶지 않기 때문에 일반적인 예일뿐입니다. –

+0

그 반대의 경우입니다. 인터페이스와 구현을 만들고 WCF가 WSDL을 생성합니다. EF의 CodeFirst와 같습니다. – jgauffin

1

WCF 서비스를 사용하는 것이 올바른 방법입니다. (웹 API와 웹 API를 http로 호스팅해야하므로).

mvc 응용 프로그램에서 끝점 URL을 사용하여 서비스를 사용할 수 있습니다.

시간 계수는 서버 (MVC 응용 프로그램 용 WebServer 및 WCFservices 호스트 서버) 사이의 연결성에 따라 달라집니다. 병목이면 안됩니다.

MVC 코드의 유닛 테스트는 여전히 가능합니다 (서비스 레이어 호출을 조롱 할 수 있습니다. (Moq/NMock? RhinoMock 사용 ...).))

관련 문제