SlideShare une entreprise Scribd logo
1  sur  9
Service Contract
autor: Tomasz Pałkiewicz
Magento to system modułowy, który umożliwia zewnętrznym programistom
dostosowywanie i zastępowanie podstawowych (corowych) części frameworka.
Ta elastyczność ma jednak swoją wadę. Logika biznesowa przenika przez warstwy
systemu Magento, co przejawia się jako zduplikowany i niespójny kod.
Podczas aktualizacji programiści mogą mieć trudności ze śledzeniem zależności,
pomiędzy niestandardowymi modułami (rozszerzeniami).
Co to jest Service Contract?
Service Contract to zestaw interfejsów
PHP zdefiniowanych dla modułu.
Service Contract obejmuje interfejsy danych
(znajdujące się w Api/Data, które zachowują
integralność) oraz interfejsy serwisowe (które
ukrywają szczegóły logiki biznesowej przed
kontrolerami, usługami sieciowymi i innymi
modułami).
Jeśli programiści zdefiniują interfejsy danych i
usług zgodnie z zestawem wzorców projektowych,
wówczas powstanie dobrze zdefiniowany, trwały
interfejs API.
Interfejs ten może zaimplementować rozszerzenia
i moduły innych firm za pomocą modeli i resource
model.
Korzyści ze stosowania Service Contract:
- Aktualizacja modułu staje się łatwa.
- Upraszcza dostosowywanie modułu bez konieczności zagłębiania się w
corowe pliki.
- Zmniejsza konflikty między modułami.
- Aktualizacja Magento staje się bezpieczniejsza.
- Umożliwia udostępnienie niestandardowej funkcjonalności modułu jako
web API poprzez dodanie configu w etc/webapi
- Łatwiejsze testy jednostkowe.
Service contract wzorce projektowania
Interfejsy danych (data interfaces) definiują funkcje, które
zwracają informacje o jednostkach danych, czyli wszystkie ‘gettery’
i ‘settery’. Należy zdefiniować interfejsy danych dla umowy
serwisowej w podkatalogu Api / Data modułu.
vendor/magento/module-cms/Api/Data/BlockInterface.php
Implementacja tego interfejsu jest w
vendor/magento/module-cms/Model/Block.php
Search Criteria - w katalogu Api / Data tworzy się
również osobny interfejs dla kryteriów wyszukiwania.
vendor/magento/module-cms/Api/Data/BlockSearchResultsInterface.php
Interfejsy serwisowe (service interfaces) obejmują interfejsy:
repozytorium (repository),
zarządzania (management),
metadanych (metadata).
Należy zdefiniować interfejsy serwisowe dla umowy serwisowej w podkatalogu Api dla
modułu.
Interfejsy repozytorium (service interface)
zapewniają dostęp do trwałych jednostek danych.
Interfejsy repozytorium muszą zapewniać
funkcje:
save - Jeśli Id nie jest określony, tworzy rekord,
jeśli określono id, aktualizuje rekord.
get(id) - Wykonuje wyszukiwanie bazy danych
według id.
getList() - Przeprowadza wyszukiwanie
wszystkich jednostek danych, które spełniają
określone kryteria wyszukiwania.
delete() - Usuwa określoną jednostkę.
deleteById() - Usuwa określoną jednostkę według Id.
vendor/magento/module-cms/Api/BlockRepositoryInterface.php
Interfejsy zarządzania zapewniają funkcje
zarządzania niezwiązane z repozytoriami.
Przykład:
AccountManagementInterface
definiuje m.in. funkcje:
- createAccount(),
- changePassword(),
- activate(),
- isEmailAvailable().
vendor/magento/module-customer/Api/AccountManagementInterface.php
Interfejsy metadanych dostarczają informacji o tym, jakie atrybuty są zdefiniowane dla konkretnej encji
Potrzebujesz wiedzieć więcej?
Napisz do nas!
biuro@auroracreation.pl

Contenu connexe

Similaire à Service Contract

Modele i metodyki wdrażania i zarządzania projektami eai
Modele i metodyki wdrażania i zarządzania projektami eaiModele i metodyki wdrażania i zarządzania projektami eai
Modele i metodyki wdrażania i zarządzania projektami eaiJaroslaw Zelinski
 
Artur Żarski, PHP na Windows
Artur Żarski, PHP na WindowsArtur Żarski, PHP na Windows
Artur Żarski, PHP na WindowsWebhosting.pl
 
Wprowadzenie do MEF w .NET 4.0
Wprowadzenie do MEF w .NET 4.0Wprowadzenie do MEF w .NET 4.0
Wprowadzenie do MEF w .NET 4.0Maciej Zbrzezny
 
Czwartki z bi - Reporting Services - podstawy
Czwartki z bi - Reporting Services - podstawyCzwartki z bi - Reporting Services - podstawy
Czwartki z bi - Reporting Services - podstawyMariusz Koprowski
 
VirtualStudy.pl - Czwartki z BI - Reporting Services
VirtualStudy.pl - Czwartki z BI - Reporting ServicesVirtualStudy.pl - Czwartki z BI - Reporting Services
VirtualStudy.pl - Czwartki z BI - Reporting ServicesSSAS.PL
 
Jak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyJak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyqbeuek
 
[CareerCon] as-a-Service czy Software Defined (PL)
[CareerCon] as-a-Service czy Software Defined (PL)[CareerCon] as-a-Service czy Software Defined (PL)
[CareerCon] as-a-Service czy Software Defined (PL)Jaroslaw Sobel
 
My littlemvc 2008 official
My littlemvc 2008 officialMy littlemvc 2008 official
My littlemvc 2008 officialskowronkow
 
Migracja I Integracja Bazy
Migracja I Integracja BazyMigracja I Integracja Bazy
Migracja I Integracja BazyPrzemysław ...
 
Funkcje systemu eakceptacje - projekt unijny PO IG 2007 - 2013
Funkcje systemu eakceptacje - projekt unijny PO IG 2007 - 2013Funkcje systemu eakceptacje - projekt unijny PO IG 2007 - 2013
Funkcje systemu eakceptacje - projekt unijny PO IG 2007 - 2013Marek Maciaszek
 
Projekt unijny eakceptacje (mobilny obieg dokumentów)
Projekt unijny eakceptacje (mobilny obieg dokumentów)Projekt unijny eakceptacje (mobilny obieg dokumentów)
Projekt unijny eakceptacje (mobilny obieg dokumentów)Marek Zawadzki
 
Integration framework dla SAP Business One
Integration framework dla SAP Business OneIntegration framework dla SAP Business One
Integration framework dla SAP Business OneAnna Lewandowska
 
JIRA Days 2018 Warsaw Coqit
JIRA Days 2018 Warsaw CoqitJIRA Days 2018 Warsaw Coqit
JIRA Days 2018 Warsaw CoqitMaciej Gajownik
 
Datapolis Process System PL
Datapolis Process System PLDatapolis Process System PL
Datapolis Process System PLDatapolis
 
Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?tkryskiewicz
 

Similaire à Service Contract (20)

Modele i metodyki wdrażania i zarządzania projektami eai
Modele i metodyki wdrażania i zarządzania projektami eaiModele i metodyki wdrażania i zarządzania projektami eai
Modele i metodyki wdrażania i zarządzania projektami eai
 
Platforma SOA
Platforma SOAPlatforma SOA
Platforma SOA
 
Artur Żarski, PHP na Windows
Artur Żarski, PHP na WindowsArtur Żarski, PHP na Windows
Artur Żarski, PHP na Windows
 
Wprowadzenie do MEF w .NET 4.0
Wprowadzenie do MEF w .NET 4.0Wprowadzenie do MEF w .NET 4.0
Wprowadzenie do MEF w .NET 4.0
 
Czwartki z bi - Reporting Services - podstawy
Czwartki z bi - Reporting Services - podstawyCzwartki z bi - Reporting Services - podstawy
Czwartki z bi - Reporting Services - podstawy
 
VirtualStudy.pl - Czwartki z BI - Reporting Services
VirtualStudy.pl - Czwartki z BI - Reporting ServicesVirtualStudy.pl - Czwartki z BI - Reporting Services
VirtualStudy.pl - Czwartki z BI - Reporting Services
 
Jak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyJak stworzyć udany system informatyczny
Jak stworzyć udany system informatyczny
 
[CareerCon] as-a-Service czy Software Defined (PL)
[CareerCon] as-a-Service czy Software Defined (PL)[CareerCon] as-a-Service czy Software Defined (PL)
[CareerCon] as-a-Service czy Software Defined (PL)
 
My littlemvc 2008 official
My littlemvc 2008 officialMy littlemvc 2008 official
My littlemvc 2008 official
 
Migracja I Integracja Bazy
Migracja I Integracja BazyMigracja I Integracja Bazy
Migracja I Integracja Bazy
 
Funkcje systemu eakceptacje - projekt unijny PO IG 2007 - 2013
Funkcje systemu eakceptacje - projekt unijny PO IG 2007 - 2013Funkcje systemu eakceptacje - projekt unijny PO IG 2007 - 2013
Funkcje systemu eakceptacje - projekt unijny PO IG 2007 - 2013
 
Projekt unijny eakceptacje (mobilny obieg dokumentów)
Projekt unijny eakceptacje (mobilny obieg dokumentów)Projekt unijny eakceptacje (mobilny obieg dokumentów)
Projekt unijny eakceptacje (mobilny obieg dokumentów)
 
Podstawy ETL z SSIS
Podstawy ETL z SSISPodstawy ETL z SSIS
Podstawy ETL z SSIS
 
Integration framework dla SAP Business One
Integration framework dla SAP Business OneIntegration framework dla SAP Business One
Integration framework dla SAP Business One
 
Budowanie sieci Grid
Budowanie sieci GridBudowanie sieci Grid
Budowanie sieci Grid
 
JIRA Days 2018 Warsaw Coqit
JIRA Days 2018 Warsaw CoqitJIRA Days 2018 Warsaw Coqit
JIRA Days 2018 Warsaw Coqit
 
Datapolis Process System PL
Datapolis Process System PLDatapolis Process System PL
Datapolis Process System PL
 
Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?
 
ERP jako system systemów
ERP jako system systemówERP jako system systemów
ERP jako system systemów
 
Gemini = BI for masses
Gemini = BI for massesGemini = BI for masses
Gemini = BI for masses
 

Plus de Aurora Creation

PSR czyli dobre praktyki programistyczne
PSR czyli dobre praktyki programistycznePSR czyli dobre praktyki programistyczne
PSR czyli dobre praktyki programistyczneAurora Creation
 
6 typów produktów w Magento 2
6 typów produktów w Magento 26 typów produktów w Magento 2
6 typów produktów w Magento 2Aurora Creation
 
Magento 2 Multi Source Inventory (MSI) - wielomagazynowość w Magento
Magento 2 Multi Source Inventory (MSI) - wielomagazynowość w MagentoMagento 2 Multi Source Inventory (MSI) - wielomagazynowość w Magento
Magento 2 Multi Source Inventory (MSI) - wielomagazynowość w MagentoAurora Creation
 
Adding a simple product in magento 2
Adding a simple product in magento 2Adding a simple product in magento 2
Adding a simple product in magento 2Aurora Creation
 
Optymalizacja Magento pod Page Speed - Google
Optymalizacja Magento pod Page Speed - GoogleOptymalizacja Magento pod Page Speed - Google
Optymalizacja Magento pod Page Speed - GoogleAurora Creation
 
Typy produktów w Magento
Typy produktów w MagentoTypy produktów w Magento
Typy produktów w MagentoAurora Creation
 
Dekalog bezpieczeństwa Magento
Dekalog bezpieczeństwa MagentoDekalog bezpieczeństwa Magento
Dekalog bezpieczeństwa MagentoAurora Creation
 

Plus de Aurora Creation (9)

PIM
PIMPIM
PIM
 
PSR czyli dobre praktyki programistyczne
PSR czyli dobre praktyki programistycznePSR czyli dobre praktyki programistyczne
PSR czyli dobre praktyki programistyczne
 
Logi w Magento 2
Logi w Magento 2Logi w Magento 2
Logi w Magento 2
 
6 typów produktów w Magento 2
6 typów produktów w Magento 26 typów produktów w Magento 2
6 typów produktów w Magento 2
 
Magento 2 Multi Source Inventory (MSI) - wielomagazynowość w Magento
Magento 2 Multi Source Inventory (MSI) - wielomagazynowość w MagentoMagento 2 Multi Source Inventory (MSI) - wielomagazynowość w Magento
Magento 2 Multi Source Inventory (MSI) - wielomagazynowość w Magento
 
Adding a simple product in magento 2
Adding a simple product in magento 2Adding a simple product in magento 2
Adding a simple product in magento 2
 
Optymalizacja Magento pod Page Speed - Google
Optymalizacja Magento pod Page Speed - GoogleOptymalizacja Magento pod Page Speed - Google
Optymalizacja Magento pod Page Speed - Google
 
Typy produktów w Magento
Typy produktów w MagentoTypy produktów w Magento
Typy produktów w Magento
 
Dekalog bezpieczeństwa Magento
Dekalog bezpieczeństwa MagentoDekalog bezpieczeństwa Magento
Dekalog bezpieczeństwa Magento
 

Service Contract

  • 2. Magento to system modułowy, który umożliwia zewnętrznym programistom dostosowywanie i zastępowanie podstawowych (corowych) części frameworka. Ta elastyczność ma jednak swoją wadę. Logika biznesowa przenika przez warstwy systemu Magento, co przejawia się jako zduplikowany i niespójny kod. Podczas aktualizacji programiści mogą mieć trudności ze śledzeniem zależności, pomiędzy niestandardowymi modułami (rozszerzeniami).
  • 3. Co to jest Service Contract? Service Contract to zestaw interfejsów PHP zdefiniowanych dla modułu. Service Contract obejmuje interfejsy danych (znajdujące się w Api/Data, które zachowują integralność) oraz interfejsy serwisowe (które ukrywają szczegóły logiki biznesowej przed kontrolerami, usługami sieciowymi i innymi modułami). Jeśli programiści zdefiniują interfejsy danych i usług zgodnie z zestawem wzorców projektowych, wówczas powstanie dobrze zdefiniowany, trwały interfejs API. Interfejs ten może zaimplementować rozszerzenia i moduły innych firm za pomocą modeli i resource model.
  • 4. Korzyści ze stosowania Service Contract: - Aktualizacja modułu staje się łatwa. - Upraszcza dostosowywanie modułu bez konieczności zagłębiania się w corowe pliki. - Zmniejsza konflikty między modułami. - Aktualizacja Magento staje się bezpieczniejsza. - Umożliwia udostępnienie niestandardowej funkcjonalności modułu jako web API poprzez dodanie configu w etc/webapi - Łatwiejsze testy jednostkowe.
  • 5. Service contract wzorce projektowania Interfejsy danych (data interfaces) definiują funkcje, które zwracają informacje o jednostkach danych, czyli wszystkie ‘gettery’ i ‘settery’. Należy zdefiniować interfejsy danych dla umowy serwisowej w podkatalogu Api / Data modułu. vendor/magento/module-cms/Api/Data/BlockInterface.php Implementacja tego interfejsu jest w vendor/magento/module-cms/Model/Block.php Search Criteria - w katalogu Api / Data tworzy się również osobny interfejs dla kryteriów wyszukiwania. vendor/magento/module-cms/Api/Data/BlockSearchResultsInterface.php
  • 6. Interfejsy serwisowe (service interfaces) obejmują interfejsy: repozytorium (repository), zarządzania (management), metadanych (metadata). Należy zdefiniować interfejsy serwisowe dla umowy serwisowej w podkatalogu Api dla modułu.
  • 7. Interfejsy repozytorium (service interface) zapewniają dostęp do trwałych jednostek danych. Interfejsy repozytorium muszą zapewniać funkcje: save - Jeśli Id nie jest określony, tworzy rekord, jeśli określono id, aktualizuje rekord. get(id) - Wykonuje wyszukiwanie bazy danych według id. getList() - Przeprowadza wyszukiwanie wszystkich jednostek danych, które spełniają określone kryteria wyszukiwania. delete() - Usuwa określoną jednostkę. deleteById() - Usuwa określoną jednostkę według Id. vendor/magento/module-cms/Api/BlockRepositoryInterface.php
  • 8. Interfejsy zarządzania zapewniają funkcje zarządzania niezwiązane z repozytoriami. Przykład: AccountManagementInterface definiuje m.in. funkcje: - createAccount(), - changePassword(), - activate(), - isEmailAvailable(). vendor/magento/module-customer/Api/AccountManagementInterface.php Interfejsy metadanych dostarczają informacji o tym, jakie atrybuty są zdefiniowane dla konkretnej encji
  • 9. Potrzebujesz wiedzieć więcej? Napisz do nas! biuro@auroracreation.pl