0

MS Word 문서를 만들고 실행하는 응용 프로그램이 있습니다. 해당 코드를 삽입 할 레이어를 결정하려고합니다.외부 문서가 프레젠테이션 계층의 일부로 실행되고 있습니까?

외부 문서를 프레젠테이션 계층이나 비즈니스 논리 계층의 일부로 실행 하시겠습니까?

한편으로는 (궁극적으로 사용자에게 (외부 응용 프로그램 내 임에도 불구하고) "제시"되는 결과를 낳기 때문에 프레젠테이션 계층의 일부인 것처럼 보입니다. 반면에, 프리젠 테이션 레이어는 현재 애플리케이션의 UI에만 관심을 갖고 싶어 할 수도 있고, 외부 프로세스를 실행하고있을 때 정말로 수행하고 있기 때문에 비즈니스 로직 계층의 관심사와 비슷해 보입니다. 모든 "프리젠 테이션"측면을 가지고 있지 않은 여러 외부 프로세스에 사용될 수 있습니다.

또한 SO가이 질문에 적합한 지 잘 모르겠습니다. 나는 https://softwareengineering.stackexchange.com/을 체크했으나 그 태그들에 소수의 추종자 만 있었다.

+0

IMHO 번역 된 데이터는이 MS Word 문서의 형태를 취하기 때문에 * Presentation * 레이어의 일부 여야합니다. – ekostadinov

답변

0

"프리젠 테이션 레이어의 일부"란 의미에 따라 다릅니다. 실제 구현을 의미한다면 확실히 그렇지 않습니다. 예, 결과는 열린 Word 문서이지만 응용 프로그램의 프리젠 테이션 계층과 관련이 없습니다.

  1. 실제 구현은 데이터베이스, 파일 및 타사 응용 프로그램을 처리하기위한 모든 코드로 이동해야하는 인프라 계층으로 이동해야합니다.
  2. 문서 생성 논리의 구현이 다를 수 있습니다. 예를 들어 콘솔 응용 프로그램의 경우에는 파일을 폴더에 씁니다. 웹 응용 프로그램은 사용자가 다운로드 할 수 있도록 파일을 응답에 기록합니다.
  3. 실제 논리는 응용 프로그램에 따라 다르므로 INJECTED해야합니다 응용 프로그램 계층에서 프레젠테이션 계층이 없으면 여기에서도 확인해야합니다.
  4. 특정 비즈니스 사례에 대해 항상 문서가 생성되도록하고 싶다고 가정합니다. 그런 다음 주입 된 문서 생성 서비스를 비즈니스 계층에 전달해야합니다. 이 경우 비즈니스 논리를 다른 응용 프로그램으로 이동하려면 필요할 경우 새 문서 생성 논리를 구현하는 것을 잊지 마십시오. 당신이 어떤 IoC 컨테이너를 사용하는 경우

    public class BusinessLayerService 
    { 
        private IDocumentGenerator _documentGenerator; 
    
        public BusinessLayerService(IDocumentGenerator documentGenerator) 
        { 
         _documentGenerator = documentGenerator; 
        } 
    
        public void DoBusinessCase1() 
        { 
         // Do work here 
         _documentGenerator.GenerateDocument(); 
        } 
    } 
    

    그냥 응용 프로그램 starup에 (웹, 윈도우, 모빌 또는 콘솔 응용 프로그램)에 필요한 구현을 등록 :

그래서 코드는 다음이어야한다.

희망이 있습니다.

+0

@ rory.ap이 도움이 되었습니까? –