Click here to load reader

Snabbare/enklare utveckling med Webfoundation (RAD)

  • View
    29

  • Download
    1

Embed Size (px)

DESCRIPTION

Snabbare/enklare utveckling med Webfoundation (RAD). Förslag som med framgång redan har smygits in i en del kund projekt, testats och givit snabbare utveckling. Konfigurerbar model ( Mapper ) med alternativt factory lager. Mapper som alternativt Factory lager Kontrollerbaserad MVC - PowerPoint PPT Presentation

Text of Snabbare/enklare utveckling med Webfoundation (RAD)

PowerPoint-presentation

Snabbare/enklare utveckling med Webfoundation (RAD)Frslag som med framgng redan har smygits in i en del kund projekt, testats och givit snabbare utveckling.Konfigurerbar model(Mapper) med alternativt factory lager.Mapper som alternativt Factory lagerKontrollerbaserad MVCAutoregistrering i AutofacAnvnda standard MVC i strsta utstrckning eller open source alternativ, t.ex. form validation,js,css minifiering etc.En frdel med dessa tekniker r att man kan smyga in dessa tekniker i nyutveckling p befintliga WF projekt.

Konfigurerbar produkt modellVadKonfigurerbart kunna vlja vilken data man vill ha ut i vyn fr produkter.T.ex. kan utvecklare eller kund (med viss risk ) konfigurerbart vlja vilken data som behvs i vyn fr en produkt sida eller produktlistning eller relaterade produkter, carten etc.Borde utkas fr att klara alla Enova objekt som adress mm.Konfigurerbar produkt modellFrdelarSnabbare/enklare utveckling (slipper verlagra faktories, modeller och vill du t.ex. lsa av pris finns det troligen redan en klass fr detta)Gr att anpassa model strukturen mer d det r mer otypat (lugn i en vy kan man enkelt ndra).Bttre prestanda d allt automatiskt cachas och cachningen gr att konfigurerbart kund anpassa. (T.ex. kan man vlja att inte cacha pris men produkt namn beroende p sprk. Vidare s riskerar man inte att lsa av properties som inte behvs fr specifik kund.Enklare att teranvnda d kund specifika properties separeras ut i en egen klass. Mjliggr att en specifik sida som t.ex. en produktlistning kan innehlla olika properties beroende p produkt. (Frutom att konfigurera nskade properties kan man programmatiskt vlja properties)Oberoende av CMS.

ImageMapper

ProductlistControllerRenderActionHjlp jag behver modellen fr produktlistningen CmsProductlistControllerVy och model fr CMSenProductlistServiceAktuella Enova produkterProductlistMapperModel fr produktlistningen(Factory)ProductConfigMapper

Hjlp ge mig modellen fr varje produkt i produktlistningen med de properties som r konfigureradeOtypad (Dictionary) Model (ProductConfigViewModel) fr varje produktProductConfigurationService UrlMapperPriceMapperEnovaPropertyMapperDessa properties skall lsas av och de skall lsas av t.ex. p bara produkten och/eller varianter etc.CMS Produktlistningssida

http://www..Produkt x1, pris,lagerProdukt x2 , pris,lagerProdukt x3, pris,lagerProdukt x4, pris,lagerProdukt x5 , pris,lagerProdukt x6, pris,lagerProdukt x7 , pris,lager

Produkt kategori xLookupVaryByProductService Dessa produkter skall du lsa av properties p Property vrdet

Fr tillfllet konfigureras allt i en xml fil (runtime settings). Men alternativa servicar som lser frn Backoffice kommer/kan enkelt skapas.

Man kan enkelt lgga till egna kund anpassade property mappers. EnovaPropertyMapper kan lsa vilken property som hellst som finns p enova objektet medan t.ex. PriceMapper bara kan lsa av price.Konfigurerbar produkt modell fldet fr t.ex. en produktlistning.PropertyValuesCacheService Cacha property vrdet per sprk eller behrighetInStockMapperKonfigurerbar produkt modell fldet fr t.ex. en produktlistning.(Dynamic or typed) ViewDataNamePriceInStockUrlMyDataImageMapperUrlMapperPriceMapperEnovaPropertyMapperMyDataMapperDescription

Konfigurerbar produkt modellProperty mapperINamedPropertyMapper anvnds fr mappers som klarar av en specifik property som t.ex. pris.IPropertyMapper klarar av properties beroende p produkt eller konfigurering. T.ex. Enova properties, bild urler till olika storlekar som konfigureras med ett namn.Allting anropas med: _productConfigMapper.Map(WebFoundationProduct,pageId)

Konfigurerbar produkt modellProperty mapperEtt exempel p hur man gr en property mapper som returnerar true eller false om produkten finns i lager. (Notera att kravet att det skall vara en lista av strngar troligen kommer att ndras.)

public class IsInStockMapper : INamedPropertyMapper { private readonly IWarehouseService _warehouseService; private readonly IsInStockMapperSettings _settings;

public IsInStockMapper(IWarehouseService warehouseService,IsInStockMapperSettings settings ) { _warehouseService = warehouseService; _settings = settings; }

public string PropertyName { get { return "Stock"; } }

public List Map(WebFoundationProduct product,string pageId) { //TODO borde in i WarehouseServicen double stockQuantity = 0; if (product.IsVariantOwner) { stockQuantity = product.GetVariantMembers().Sum(p=>_warehouseService.GetStockQuantity(p)); } else { stockQuantity = _warehouseService.GetStockQuantity(product); }

return new List { (stockQuantity > _settings.InStockTreshold).ToString(CultureInfo.InvariantCulture) }; }

public string DefaultVaryBy { get { return null; } } }

Konfigurerbar produkt modellxml konfigurationFr tillfllet stds bara xml konfiguration men backoffice std r nskvrt ocks.I runtimme_settings.xml stller man in fljande exempel: