2023 beta - Architecture (20%) Flashcards
B2B Commerce is made of building blocks that form the architecture. What kind of building blocks are they?
Widgets
Modules
Handlers
Services
Directives
Controllers
The development architecture is split across three core libraries. Name them.
B2B Commerce.Web
Insite.Module
Insite.Model
What is the project type of the B2B Commerce.Web project ?
The B2B Commerce.Web project is an ASP.NET MVC application
What are the responsibilities of the B2B Commerce.Web application?
The web application is responsible for the client side models and services which call the WebAPI layer within each of the Optimizely Modules.
In which project (or core library) all widget views, AngularJS directives, AngularJS controllers, and AngularJS services reside?
In the B2B Commerce.Web project
What is the responsibility of the Insite.Model project?
The Insite.Model project handles the Unit of Work, Repository, Domain Services, ContextProvider and persistence of the platform.
What are the responsibilities of handlers?
Handlers are objects that are responsible for the heavy lifting of objects and processing of business logic.
Some handler chains need to use the same logic. Where this logic should be located ?
A - In handlers
B - In pipelies
C - In handler helpers
D - In utilities
B - In pipelines.
In previous versions of B2B Commerce, the logic now in pipelines used to exist in handler helpers and utilities. However, the helpers and utilities did not offer an easy way to modify the logic without affecting backwards compatibility. Future service packs and releases could more easily break any custom logic you had managed to inject.
Which statements are not true regarding pipelines? Pick 2.
-Pipelines are reusable portions of business logic that are transactional.
-They are made up of one or more classes, called pipes.
-Unlike handler chains, pipelines can be executed wherever the logic is needed.
-Individual pipes within a pipeline can choose to halt execution of the rest of the pipeline by returning an error code or exiting the pipeline.
-Unlike handler chains, the design of pipelines doesn’t allows you to inject your own logic into the pipeline.
First and last choice.
Truth is:
-Pipelines are reusable portions of business logic that are NOT transactional.
-Just like handler chains, the design of pipelines allows you to inject your own logic into the pipeline.
How to Add a New Pipe to an Existing Pipeline?
-Implement the IPipe<TIn, TOut> interface
-Return a result from the “Execute” method
-Specify an order via the “Order” property
What is the sole entry point into a pipe?
The “Execute” method is the sole entry point into a pipe. This method also contains all of the business logic used by the pipe to complete it’s work.
True or false?
All pipes with the same object types will be executed within the same pipeline.
True.
This is how a pipe is associated with a pipeline
// These two pipes are part of the same pipeline because they both declare the same parameter and result object types.
public class CalculateOrderLines : IPipe<GetCartPricingParameter, GetCartPricingResult>
public class CalculateOrderTotal : IPipe<GetCartPricingParameter, GetCartPricingResult>
How do you replace an existing pipe?
To replace an existing pipe, the new pipe must:
-Implement the IPipe<TIn, TOut> interface
-Return a result from the “Execute” method
-Specify an order via the “Order” property
-Be named the same as the pipe being replaced. This is an additional requirement compared to adding a new pipe.
How do you exit a pipeline?
result.ExitPipeline = true;
if you want to exit and there is no need to indicate an error
OR
result.ResultCode = ResultCode.Error;
if you set the ResultCode to the ResultCode.Error value, the pipeline will exit.
Who is responsible for hosting and maintaining the Windows Integration Service (WIS)?
The implementation team, in coordination with the customer
True or false?
Optimizely does support the use of File Transfer Protocol (FTP) but blocks use of port 21 in the PAWS environment.
False
Optimizely does NOT support the use of File Transfer Protocol (FTP) AND blocks use of port 21 in the PAWS environment.
B2B Commerce has two ways in which to extend the entities within the platform. What are they?
Using the Application Dictionary
Using B2B Commerce .NET objects and methods
What would be the solution if you start to see performance degrading for requests that retrieve custom properties?
Consider creating a custom endpoint to return only the custom properties you actually need.
Which roles are automatically assigned to custom properties?
ISC_System
ISC_Integration
ISC_Admin
ISC_ContentAdmin
ISC_User
ISC_ContentApprover
ISC_ContentEditor
True or false?
Since the data for the tables and custom properties are in the same entities, you can include custom properties as columns in Admin Console tables.
False.
Since the data for the tables and custom properties are in different entities, there is no current way to include custom properties as columns in Admin Console tables.