1.4k likes | 1.42k Views
Litium Certified Developer. Agenda. About Litium Litium Accelerator Installation Architecture Data modelling Websites area Globalization Dependency injection Security token Litium areas E-Commerce, PIM, Customers and Media Logging Events Validation Web API Searching & Batching
E N D
Agenda • About Litium • Litium Accelerator • Installation • Architecture • Data modelling • Websites area • Globalization • Dependency injection • Security token • Litium areas E-Commerce, PIM, Customers and Media • Logging • Events • Validation • Web API • Searching & Batching • Accelerator frontend • Testing • Certification
Features PRODUCT INFORMATION MANAGEMENT Product management Categorystructures Pricing Workflows Images and media DIGITAL MARKETING Content management Personalization Product presentation Landing pages Inspiration E-COMMERCE Purchase process Order management Payments Campaigns Reports
EDGE 3rd PARTY ACCELERATOR STOREFRONT • CONNECT • WEB APIs PRODUCT PIM COMMERCE OMS CONTENT CMS • ON DEMAND • CLOUD
Eco system PAYMENTS PRICE COMPARISON SEARCH & RECOMMENDATIONS SEO & CONVERSION ANALYTICS + and more EMAIL MARKETING PREMIUM PIM CUSTOMER SERVICE PRINT SOCIAL MARKETING AdobeInDesign + and more ERP + and more
AddOns • Following are some of the most frequently used AddOns • Product Media Mapper - To connect images and files to products automatically • Payment providers - Klarna, Dibs, PayEx, Adyen, PayPal, Nets, Handelsbanken Ecster, Skrill • Integration kit - Platform to develop file based integrations towards Litium
Integration Integration Kit InRiverConnector ERP / PIM / CRM Product info Images & media Order status Delivery status Customer Info Stock balance Prices Credit limits Order Payments Customer Info etc. https://docs.litium.com/more/best-practices/integrate/best-practice-for-integration-architecture
Litium is based on standard technology • .NET Standard 2.0 • Entity Framework Core (Microsoft/Open Source) • Newtonsoft JSON (Open Source) • AutoMapper (Open Source) • ASP.NET MVC 5 (Microsoft) • ASP.NET WebAPI 5 (Microsoft) • Angular JS (Google/Open Source)
Roadmap Platform • Litium 5.5 • Litium 6 • Litium 7 • Litium 8 Today • Multi-market campaigns • Google Shopping • Custom Web API Foundations • PIM improvements • E-commerce improvements • Order & Returns Management • Campaign management • Microsoft Azure Infrastructure support • User interface improvements • Media management • Real-time customer segmentation • User interface improvements • GDPR process support • Web API add-on • Brand new CMS with Marketing Automation and Personalization • Refactored Accelerator • Improved headless support • User interface improvements 2019 Q3 2018 Q3 2017 Q1 2018
The “New” API The “Old” API • Products – Litium 5.x • Media and Customers – Litium 6.x • Websites – Litium 7.x • Ecommerce – Litium 8.x • Service Oriented design • Each entity has its service for create/update/delete operations • Business logic in extensible interface implementations • Use decorator pattern to extend • Old API (Ecommerce module) • Based on architecture popular in year 2000 to 2010 • “Collection” classes as object creators • “Carrier” is a pure code object (no operations) • “Entity” has operations • Business logic in extensible interface implementations • Use inheritance to extend
What is Litium Accelerator? • A packaged technical solution, • Speed up starting new projects. • No need to build from scratch, • Base for common functionality to start development. • Delivered as source code. • Once customized, accelerator will be part of the solution.
Litium Accelerator • A complete re-write for Litium 7 • Blocks instead of sections • Settings moved into platform • Business logic separation • ASP.NET Mvc, React and Redux (no JQuery) • Foundation Zurb - Responsive design framework
Litium Accelerator 7 MVC ReactRedux Selectedcomponents Most pages Web api Business LogicLayer (BLL) Litium API
Technical choices • Design - less is more • Zurb Foundation for Sites • Zurb Foundation for E-mails • Styles • Component based • SASS • Block, Element, Modifiermethodology (BEM) • JavaScript • Component based • React • Webpack • No JQuery
MVC React + Redux • Used when not much javascript is needed • Litium.Accelerator.Mvc/Controllers • Litium.Accelerator.Mvc/Views • Litium.Accelerator/ViewModels • Used when more js is needed for dynamic views • Compile with WebPack • All client resources in folder • Litium.Accelerator.Mvc\Client • Litium.Accelerator.Mvc/Controllers/Apihas the webapi endpoints
Installation • Installation of Litium is done through Visual Studio • With or without accelerator • Litium is available through a private Litium NuGet-feed • NuGet-feed is accessed with your user account in http://docs.litium.com • All packages that start with Litium.* are distributed as individual nuget packages • One DLL = one NuGet package
Installation Pre-requisites • System requirementshttps://docs.litium.com/documentation/get-started/system-requirements • VS 2017 • Sql Server 2012 • .NET 4.7.2 dev pack • Litium NuGet feed https://docs.litium.com/download/litium-nuget-feed • Requires docs.litium.com account with download rights • IIS (Should have .net development enabled through “Turn windows features on/off”)
NuGet package for installation Litium.Web.Setup.Complete Litium.Setup.Complete
Distribution – Add-Ons/Accelerator • Compiled Add-Ons (e.g. payment provider addOns) • Install via NuGet packages • Accelerator and source code Add-Ons (e.g. Integration Kit) • Download from KC (Litium Knowledge Center) • The Litium platform and licensed Add-Ons (e.g. Accelerator and Integration Kit) can not be reused or shared after download
Configure Https • HSTS max age = The time, in seconds, that the browser should remember that a site is only to be accessed using HTTPS. • Chrome requires min 1 year to be allowed in its hardcoded list of HTTPS only websites • For development set to a few minutes • Litium does not include subdomain in hsts setting https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security https://hstspreload.org/
Task: Installation During this education we will build a bookstore webshop All tasks are available at https://github.com/LitiumAB/Education/in the Developer education/Bookstore folder
Options in Web.config • Update database connection string • Update the files folder. • Used for • Temporary files. • Lucene search index. • Media files. • CommonFilesDirectory • Sessionstate, inProc vs StateServer • Use StateServer in local development to verify serialization support • SMTP https://docs.litiumstudio.com/documentation/get-started/configure/web_config
Should you use IIS in dev? • IIS Express has limitations, by using IIS during development these will not come as a surprise when moving to production • If you ever need to check something, without opening visual studio! https://msdn.microsoft.com/en-us/library/58wxa9w5(v=vs.120).aspx
Useful tools • http://readme.localtest.me/ • You can use <yourDomainName>.localtest.me instead of using windows hosts file • Will not work offline • ReAttach, a Visual Studio addon that makes it easy to attach to IIS process for debugging. • Baretail or Wintail to keep an eye on the log • PaperCut for local email testing
Login to backoffice • <mydomain>/litium • If you belong to the local administrators group in windows, use your windows account user name and password. • Otherwise, you need to change systemUserGroupin Web.config to specify a different group to allow login locally. https://docs.litium.com/documentation/get-started/web_config
Administration UI • Angular • ASP.NET WebAPI • Signalr • Webforms in Sales
Accelerator – What is deployed? • New site in websites area • New assortment in products area • Fields and templates in Blocks, Customers, Websites and PIM • Globalization artifacts • Channel, Country, Currency, Domain name, Market and Tax class
Web solution ASP.NET web app running on IIS • Integration- file based / Web APIs / Headless • - Windows Service /ASP.NET web app running on IIS Accelerator (MVC REACT)Foundation by Zurb Foundation Email by Zurb Litium API Sites Products Orders Customer Media Globalization Dashboard Price calculations Validation rules State Transitions Search Campaign Engine Field framework Querying Batching Security Dependencyinjection Event Auditing Log Infrastructure CDN FileStorage Service bus Database
Component model - Assemblies • Litium.Abstractions • Domain entities, events and service contracts. • When there are breaking changes • Information in release notes. • Except items where namespace name include ”Internal” • Litium.Application • Implementation of service contracts. • Litium.Infrastructure.X • Implementation of external services, e.g: Service Bus
Component model • Namespaces • Same namespace for domain entity and its service contract. • Example: Variant and VariantService in same Litium.Products namespace • Assembly Structure, examples • Litium.Abstractions • Litium.Web.Abstractions • Litium.Web.Mvc.Abstractions • Litium.Web.WebApi.Abstractions • Litium.Web.Administration.Abstractions • Implementations • Litium.Application • Litium.Infrastructure.MicrosoftServiceBus
Service Model • Litium contracts (Services) • Artifacts that have “methods” or “operations” • Interfaces • Implement an interface to extend the functionality • Or change default functionality by extending default implementation (service decorator pattern) • Example: IPriceCalculator • Abstract Classes • Declare service definitions that implementation projects are not expected to change. • Example: BaseProductService
Concurrency • Optimistic concurrency is available only in Ecommerce area • Pessimistic locking – prevent edits when an entity is being edited • Optimistic locking – allow edit but check before save if the item has been edited since it was read • All other areas do not have concurrency checks • Can enforce pessimistic concurrency through DistributedLock object
Data modelling Entities • Entities which supports data modelling • from Litium 7 are shown in green • from Litium 5 and Litium 6 versions are shown in blue
Field Framework Litium.FieldFramework • Handles all “dynamic” fields (fields defined in the project) • Can create your own field types • Field types are per Installation • The field does need not be added to the Field template to use it. • Consider field template as a grouping, and a way to point out the display template. • Field template is not the container of fields. • In accelerator, setup is done in \Src\Litium.Accelerator\Definitions\
Field Definition • Defined for each Area • Litum.WebSites.WebSiteArea • Litium.Products.ProductArea • Litium.Customers.CustomerArea • Litium.Blocks.BlockArea • \Src\Litium.Accelerator\Definitions\
Field Template • The field definitions are grouped into field groups and added to a field template
Field Template • Fields are added to a field group by Field definition id • Field group added to template
Usage – Getting data from fields \Src\Litium.Accelerator\Builders\Product\VariantInfoBuilder.cs Extension method
Pointer Can be any entity • One field type that points to other entities • Single or multi select Image Pointer Page Product
Multi field • A field that is a container for other fields • Can be used as array Slide Image Text Link
Entity model • Each entity has its own “entity service” • Use the service to get, create, update and delete entities • Example: