2017-01-17 3 views
2

웹 사이트 (PHP 사용)와 향후 모바일 응용 프로그램으로 구성된 작은 웹 응용 프로그램 프로젝트를 계획 중입니다. PHP를 사용하여 RESTful API를 구현하여 모바일 앱과 통신하고 싶습니다. 그러나 API와 웹 사이트가 모두 PHP로 작성되어 동일한 서버에서 호스팅되기 때문에 웹 사이트에서 공용 API로 HTTP 호출을하는 것이 약간 이상하게 보입니다 (아니면 그렇지 않은 것입니까?).공용 RESTful API + API에 대한 로컬 액세스의 아키텍처

어쨌든 공개 RESTful API와 동일한 API를 노출하는 객체로 구성되어 있지만 웹 사이트에서 직접 액세스 할 수있는 PHP 객체로 구성되는 API와 비즈니스 로직 사이에 레이어를 넣을 것을 고려하고 있습니다. .

  1. 이것은 좋은 생각인가요? 나쁜 생각입니까? 왜?
  2. 잘 알려진 패턴입니까? 그렇다면 무엇이라고 부릅니까?

나는 일부 사이트는 유사한 구조를 제안하고 "API 게이트웨이 개체"를 호출하지만 그 실제 잘 알려진 패턴이나 그들이 토 해낸 뭔가입니다 있는지 확실하지 않습니다 발견했다.

Application structure

+0

Presentation 및 ReST 레이어에서 비즈니스 레이어로 직접 통신하지 않고 게이트웨이 객체에서 어떤 이점을 볼 수 있습니까? – jaco0646

답변

1

좋은 질문 (답) ... 그것은이 사이트의 오른쪽 종류입니다 확실하지 :

는 여기에 내가 생각하고있는 것을의 스케치입니다. 나는 그 패턴을 정확하게 사용하는데, 나는 다른 아키텍처 접근법/프레임 워크와의 치열한 싸움을 치루고 결국 그 이름을 알지 못한다.

일부 전문가 :

  • , 그것은 또한 테스트를 위해 매우 유용 밝혀 쉽게 구성하고 좋아하는 테스트 장난감을 행사 할 수있는 추상화의 사다리를 등반.
  • 모바일 데이터 아키텍처는 게이트웨이 개체 모델과 똑같은 모양 일 수 있습니다.
  • 똑바로 PHP 액세스가 가능하도록 멋지게 디커플링되며, 중요한 점이있을 때 데이터베이스 액세스의 인증, 로깅 및 추적 기능을 유지할 수 있습니다.
  • 미래의 디자인을 증명합니다. 현재는 어리석은 것처럼 보일지라도, 결국 다른 인스턴스에서 www 및 모바일 프레젠테이션을 제공해야 할 수도 있습니다. RESTful API를 사용하기 위해 PHP 프리젠 테이션을 마이그레이션하는 것이 옳은 일이다.

예 : 아니, 일반 오래된 PHP는 객체, 부작용 :

  • 메시지 : 나는 Message 개체가 말해,이 객체는 '정상'클래스의 숫자를해야합니다 지속성
  • MessageDAO : Message의 지속성 관리자입니다. 기본 CRUD없이 비즈니스 로직, 단지 기본 CRUD
  • MessageWF : 나는 발신자에게 전송하고자하는 메시지의 표현 : 메시지
  • OBMessage에 대한 사양 : 비즈니스 로직
  • IBMessageSpec에서 제공하는 워크 플로우

나는 DI 컨테이너를 사용하여 위의 각각에 컨텍스트의 세부 사항을 주입합니다.

내 모바일에서 OBMessageSpec은 본질적으로 IBMessageSpec이고 서버의 OBMessage를 매핑하는 IBMessage입니다. 이 코드는 여러 인스턴스 유형 및 애플리케이션에서 거의 다시 사용할 수 있습니다.

1

좋습니다. 일부 API Gateway Object을 통해 내부 PHP 사용을위한 API를 제공하고 을 노출 할 수 있으며, 이는 API Gateway Object을 사용합니다. Adapter이라는 이름이 붙을 수 있습니다. HTTP를 통해 외부 서비스에서 PHP API를 사용하기 때문입니다.

그러나 왜 사용해야 할 패턴이 필요한가요? 필요에 완벽하게 부합하는이 아키텍처를 사용하면 모듈을 일관성있게 유지하고 논리의 중복을 피할 수 있습니다.

PHP 쪽에서 RESTful을 사용할 수 있지만 속도는 느리지 만보다 유연합니다. 어쩌면 백엔드를 다른 언어로 다시 작성해야 할 수도 있습니다. 프론트 엔드를 변경할 필요가 없습니다!

그래서, 당신에게 더 바람직한 것은 무엇인지 결정하는 것입니다. 패턴에 관한 것이 아닙니다.