이 짧은 시리즈에서 나는 몇 가지 간단한 방법과 그렇지 않은 방법을 다루고 싶습니다. Mendix 앱은 더 효율적으로 만들 수 있습니다. 이상적인 결과는 가능한 한 가장 짧은 시간 안에 작업을 수행하고 가능한 한 가장 적은 리소스를 소모하는 앱이어야 합니다.
언제나?
그렇지 않습니다.
때로는, 거래 사이에 옵션이 있습니다 읽기 쉽고 유지 관리 가능 또는 더욱 최적화된 버전일 수 있습니다. 독창적 인글렌데일 더 보기 효율적인 하지만 이해하기 어렵다 이는 나중에 코드를 유지 관리해야 하는 당신이나 다른 개발자에게 문제가 될 수 있습니다.

개발이 진행 중이거나 성능 문제가 조사 중일 때 팀이 판단을 내려야 하며, 양질의 의견이나 문서가 불분명한 코드를 이해하는 데 도움이 될 수 있습니다.
또한, 뭔가가 더 자주 실행될수록, 가능성이 더 큽니다 이익 에 효율성을 개선하다. 5분이 아닌 10분이 걸리도록 최적화할 수 있지만 한 달에 한 번만 실행되는 작업은 효율성 향상을 찾을 때 덜 중점을 두어야 할 것입니다. 반면, 하루에 수천 번 실행되는 작업에서 XNUMX초의 효율성 향상은 확실히 더 높은 우선순위가 있습니다.
골든 올드
일부 디자인 패턴 Mendix 이전에도 강조한 바 있지만, 새 개발자나 노련한 개발자 모두 간과하는 경우가 있으므로 다시 방문할 가치가 있습니다.
루프 드 루프

마이크로흐름에서 객체를 생성하거나 수정하기 위해 루프를 사용할 때 수집 동일한 유형의 새/수정된 객체 명부 범하다 그 목록 외부 전에, 고리.
대신에:

당신이 사용할 수있는:

이는 다음을 의미합니다. 단일 커밋 Order 객체용과 OrderUpdateAudit 객체용이 있는데, 이 두 객체는 프로세스의 마지막에 새 객체와 변경된 객체에 대해 사용됩니다. 커밋은 비쌀 수 있습니다 각각의 커밋은 앱이 데이터베이스로 왕복을 실행해야 하며, 각 왕복에는 오버헤드가 발생하므로 커밋을 일괄 처리하면 왕복 횟수가 줄어들고 결과적으로 오버헤드도 줄어듭니다.
귀하의 골재를 날아오르게 하세요!
따라서 Mendix 예를 들어, 작성한 코드의 양이 적기 때문에 데이터베이스 쿼리를 최적화하기 위해 런타임이 너무 길어질 수 있습니다. 마이크로플로우에 다음을 배치할 수 있습니다. 검색 활동 바로 다음에 집계 활동을 나열합니다.:

이것은 런타임 에 단일 문장을 실행하다 OrderValue의 평균값을 계산하는 데이터베이스에 대해. Order 레코드는 앱으로 전혀 검색되지 않으며 OrderList는 실제로 생성되지 않습니다. 이렇게 하면 실행이 더 빨라집니다.
하지만 생성된 목록을 나중에 재사용하면 이러한 최적화를 깨뜨릴 수 있습니다.

이제 OrderList는 집계가 실행된 후 다시 사용되고 있습니다(IteratorOrder 루프의 데이터 소스로). 이는 다음을 의미합니다. Mendix 표준 동작으로 돌아가서 Retrieve를 실행하여 모든 레코드를 OrderList에 로드한 다음 해당 목록에 있는 레코드를 스캔하여 평균을 계산합니다.

이러한 상황에서는 아마도 그럴 수도 있습니다. 실현하세요. ~을 실행하기 위해 검색 활동 두번 — 한 번은 사용할 집계 그리고 다시 한번 기록 목록을 얻으세요. 이것은 특히 이 그림에서 두 번째 Retrieve(이제 IteratorOrder 루프의 소스)가 계산된 평균이 적절한 경우에만 실행되므로 평균이 낮으면 목록이 전혀 검색되지 않기 때문에 해당 그림에서 특히 적용 가능합니다.
마이크로플로우 대신 나노플로우 사용

마이크로플로우 실행되는 강력한 코드 동작입니다. Mendix 섬기는 사람, 사용자의 요청에 의해 자주 발생 Mendix 고객. 나노플로우 Microflow와 동일한 활동을 많이 수행할 수 있지만 어떤 경우에는 작동 방식이 Microflow의 작동 방식과 다릅니다. 가장 큰 차이점은 Nanoflow가 다음에서 실행된다는 것입니다. Mendix Client (사용자 브라우저나 기본 앱) 이는 Nanoflow가 비슷한 기능을 수행하는 Microflow보다 훨씬 더 효율적일 수 있다는 것을 의미합니다.

이 Microflow는 사용자 인터페이스의 버튼에서 호출되며 표시되는 객체를 업데이트할 수 있는 비즈니스 규칙을 구현합니다. 버튼을 클릭하면 호출이 수행됩니다. Mendix 클라이언트는 서버의 앱으로 돌아와서 Microflow를 실행하고 그 결과를 클라이언트에게 반환해 달라고 요청합니다.

이 Nanoflow도 같은 일을 합니다. 기능적으로는 Microflow와 거의 동일하지만 전체 작업은 사용자의 Mendix 클라이언트에서 서버로의 호출, 서버에서의 코드 실행, 그리고 클라이언트로의 결과 반환이 발생하지 않도록 클라이언트. 이렇게 하면 네트워크 트래픽이 줄어들고 서버가 중단되어 사용자를 위해 변경을 수행하는 일이 방지됩니다.
Nanoflow를 사용하는 것이 항상 좋은 생각은 아닙니다. Nanoflow가 기능의 일부로 Microflow를 호출해야 하는 경우, 여전히 네트워크 상호 작용과 서버 중단이 발생하기 때문에 아무것도 절약할 수 없습니다. Nanoflow가 여러 개의 Microflow를 호출해야 하거나 기능을 수행하기 위해 데이터베이스에서 추가 데이터를 검색해야 하는 경우, Microflow 대신 Nanoflow를 사용하는 것이 역효과를 낼 가능성이 있습니다.