Web Apps Development With Breeze.js. Workaround Seminars
-
Upload
softengi-inspired-software-engineering -
Category
Education
-
view
60 -
download
3
Transcript of Web Apps Development With Breeze.js. Workaround Seminars
• BREEZE IS A JAVASCRIPT LIBRARY THAT HELPS YOU TO MANAGE DATA IN RICH CLIENT APPLICATION
• FIRST RELEASE – SEPTEMBER 17, 2012
• LAST RELEASED VERSION – 1.4.16 (JULY 13. 2014)
BREEZE
• DATA RETRIEVAL VIA SERVICE CALLS
• DATA CACHING ON CLIENT
• CHANGES TRACKING
• SAVE CHANGES VIA SERVICE CALLS
• VALIDATION
• EXPORT/IMPORT DATA ON FOR OFFLINE STORAGE
• WORK WITH ODATA SERVICES
CAPABILITIES
• ENTITYMANAGER IS THE BRAINS OF BREEZE CLIENT SIDE FUNCTIONALITY
• - MAKES SERVICE CALLS
• - CACHES METADATA AND QUERY RESULTS
• - CREATES ENTITIES
• - VALIDATES ENTITIES
• - FORMS UPDATE REQUESTS
• - HANDLES MERGING REQUERY AND SAVECHANGES RESULTS WITH CACHED ENTITIES
ENTITY MANAGER
ClientBreeze
Controller
Metadata
Entity Manager
Query Results
GET breeze/Zza/Customers
ClientEntity
ManagerClient
GET breeze/{controller}/Metadata
Entity Manager
ClientEntity
ManagerClientClient
Entity ManagerClient
Entity ManagerClient
Breeze Controller
Entity ManagerClient
Breeze Controller
Entity ManagerClient
QueryEntities
QUERY
• METADATA IS USED BY BREEZE ENTITYMANAGER FOR MANY ASPECTS
• ENTITY TYPE INFORMATION
• CREATING ENTITIES
• MANAGING KEY PROPERTIES FOR ENTITIES
• MANAGING ENTITY RELATIONSHIPS
• VALIDATION
• DEFAULT VALUES
• ALLOW ENTITYMANAGER TO BE SMART ABOUT SENDING CHANGE BATCHES
• PARENT-CHILD RELATIONSHIPS AND QUERY EXECUTION ORDER
METADATA
Server Persisted Entities
Breeze Controller
POST breeze/{controller}/SaveChanges
Entity ManagerClient
SaveChanges
UPDATE
• BREEZE ROUTING
• AUTO-REGISTERS BREEZE ROUTES
• BREEZECONTROLLERS (WEBAPI CONTROLLER)
• ADDS QUERY FILTERS HANDLE QUERY REQUESTS
• CONTEXTPROVIDERS
BREEZE SERVER INFRASTRUCTURE
• BREEZE ROUTING IS ACTION-BASED
• URL INCLUDES CONTROLLER NAME AND METHOD (ACTION) ON CONTROLLER TO INVOKE
• ALLOWS MANY DIFFERENT QUERY METHODS TO BE EXPOSED FROM THE SAME CONTROLLER
• BREEZE ROUTING IS AUTO- CONFIGURED ON START- UP
BREEZE ROUTING CONFIGURATION
• BASED ON WEBAPI CONTROLLER
• SIMPLE ATTRIBUTE TO ADD TO AN APICONTROLLER
• ADDS FILTERS FOR METADATA AND QUERY REQUEST HANDLING
• SIMPLIFIES SERVER CODING PATTERN
CONTROLLER
• METADATA
• - RETURNS THE EDM AS CLIENT METADATA
• QUERY METHODS
• - RETURNS IQUERYABLE
• - NO EXPLICIT PARAMETERS
• - ODATA QUERY PARAMETERS ARE TURNED INTO EXPRESSION TREE THAT IS EXECUTED AGAINST RETURNED IQUERYABLE BY THE FILTER
• SAVECHANGES
• - TAKES JOBJECT BUNDLE(BATCH OF ENTITIES)
• - HANDS IT OF TO EFCONTEXTPROVIDER TO PROCESS REQUEST
BREEZE CONTROLLER METHODS
• CONTEXTPROVIDER ENCAPSULATES THREE MAIN FUNCTIONS:
• - INSTANTIATION OF A CONTEXT FOR ACCESSING THE DATA STORE
• - GENERATION (OR ACQUISITION) OF METADATA TO SEND TO BREEZE CLIENTS
• - PROCESSING "CHANGE-SET" SAVE REQUESTS
• ALTERNATIVES TO ENTITY FRAMEWORK:
• - NHIBERNATE PROVIDER
• - YOU ARE ABLE TO IMPLEMENT YOUR OWN CUSTOM CONTEXT PROVIDER
• - ALSO YOU CAN EXTEND EFCONTEXTPROVIDER TO ADD CUSTOM CODE
CONTEXT PROVIDERS
• - BASIC QUERYING/CACHING
• - EDITING/SAVING
• - ENTITY CREATION
• - WORKING WITH ENTITY ON THE CLIENT
• - VALIDATIONS
OTHER
• ENTITYQUERY OBJECTS DEFINE THE QUERY TO BE EXECUTED
• - DEFINE THE MODEL RESOURCE COLLECTION THROUGH THE FROM() METHOD
• EXPOSES CHAINABLE METHODS FOR SUPPORTED QUERY OPERATIONS
• - WHERE/ORDERBY/TAKE/SKIP
• EXECUTED THROUGH ENTITYMANAGER
• - CALL ENTITYMANAGER.EXECUTEQUERY() OR ENTITYQUERY.EXECUTE()
• THE QUERY IS PASSED FROM THE CLIENT TO THE SERVER VIA ODATA QUERY SYNTAX
• - EVEN IF NOT AN ODATA SERVER
• CAN BE EXECUTED LOCALLY AGAINST THE CACHE AS WELL
CREATING ENTITY QUERIES
• CAN EASILY QUERY THE ENTITIES THAT HAVE ALREADY BEEN LOADED INTO THE ENTITYMANAGER CACHE
• SYNCHRONOUS:
• - ENTITYMANAGER.EXECUTEQUERYLOCALLY
• - RETURNS THE ARRAY OF MATCHING ENTITIES DIRECTLY
• ASYNCHRONOUS:
• - ENTITYQUERY.USING(FETCHSTRATEGY.FROMLOCALCACHE)
• - EXECUTE QUERY THROUGH ENTITYMANAGER.EXECUTEQUERY
• - RETURNS PROMISES AS NORMAL
• - ONLY EXECUTES AGAINST THE LOCAL CACHE
FETCHING FROM CACHE
• BREEZE APPENDS AN ENTITYASPECT OBJECT TO EVERY ENTITY IT MANAGES
• CONTAINS METADATA AND STATE INFORMATION ABOUT THE ENTITY
• USED FOR
• - CHECKING/MODIFYING ENTITY STATE
• - OBTAIN ORIGINAL VALUES OF MODIFIED ENTITIES
• - OBTAINING REFERENCE TO ITS ASSOCIATED ENTITYMANAGER
• - VALIDATION
• - MONITORING PROPERTY CHANGE EVENTS
ENTITY ASPECT
• - ENTITYASPECT
• - MODIFYING ENTITIES
• - SAVING CHANGES TO THE SERVER
• - CREATING ENTITIES
• - REJECTING AND ACCEPTING CHANGES
• - DELETING ENTITIES
• - NAMED SAVES
EDITING AND SAVING
• ENTITY PROPERTIES ARE OBSERVABLES
• - RAISE CHANGE NOTIFICATIONS TO ANY SUBSCRIBERS WHEN PROPERTY IS SET
• BREEZE ENTITYMANAGER TRACKS CHANGES TO ANY ENTITIES THAT ARE ATTACHED
• ENTITYMANAGER WILL KNOW WHEN PROPERTIES GET MODIFIED AND KEEPS A LIST OF THOSE ENTITIES THAT HAVE CHANGED
MODIFYING ENTITITES
• SIMPLY CALL ENTITYMANAGER.SAVECHANGES
• ENTITYMANAGER FORMS A BATCH FROM ALL THE ENTITIES THAT WERE MODIFIED, ADDED, OR DELETED
• MAKES THE CALL TO THE SERVICE WITH THE BATCH
• - SAVECHANGES METHOD BY DEFAULT
• GETS BACK A RESPONSE CONTAINING ALL THE PERSISTED ENTITIES
• - IN CASE OF SERVER COMPUTED PROPERTIES
• - PRIMARY KEYS
• MERGES ENTITIES BACK INTO THE CLIENT SIDE CACHE
SAVING CHANGES TO THE SERVER
• NEED TO BE CONSTRUCTED THROUGH BREEZE
• BASED ON METADATA OBJECT MODEL
• - WITH AN ENTITYASPECT ATTACHED
• - WITH OBSERVABLE PROPERTIES
• - WITH TEMPORARY KEYS IF SERVER GENERATED KEY PROPERTIES
• TWO WAYS:
• ENTITYMANAGER.CREATEENTITY
• - CREATES AN INSTANCE
• - ATTACHES TO THE CACHE
• ENTITYTYPE.CREATEENTITY
• - GET REFERENCE TO METADATA STORE
• - GET ENTITYTYPE FROM THE METADATA STORE
• - CREATE THE ENTITY FROM THE ENTITYTYPE
• - ADD THE ENTITY TO THE ENTITYMANAGER’S CACHE
CREATING NEW ENTITIES
• ENTITYMANAGER.REJECTCHANGES
• - REVERTS ALL ENTITIES RETRIEVED FROM THE SERVER TO THEIR ORIGINAL VALUES / UNCHANGED STATE
• - DETACHES AND RELEASES ANY ENTITIES THAT HAVE BEEN ADDED
• ENTITYASPECT.REJECTCHANGES
• - IF ENTITY RETRIEVED FROM SERVER, REVERTS STATE AND PROPERTY VALUES TO ORIGINAL
• - IF ENTITY WAS ADDED, DETACHES ENTITY FROM ENTITYMANAGER CACHE
REJECTING CHANGES
ENTITYASPECT.SETDELETED
• - ENTITY WILL NOT BE PART OF LOCAL QUERY RESULTS
• - BREEZE WILL SEND ENTITY INFO TO SERVER SIDE ON SAVECHANGES
• - ENTITY WILL BE REMOVED FROM THE CACHE AFTER SUCCESSFUL COMPLETION OF A SAVECHANGES CALL AND RELEASED BY BREEZE
DELETING ENTITIES
ENTITYMANAGER.SAVECHANGES NORMALLY CALLS “SAVECHANGES ”
• - ALL MODIFIED, ADDED, DELETED ENTITIES
• - ALL TYPES IN ONE BUNDLE
CAN TARGET SAVE METHODS WITH OTHER NAMES
• - SAVEOPTIONS PARAMETER TO SAVECHANGES , SET RESOURCENAME PROPERTY
CAN SEND SPECIFIC COLLECTIONS OF ENTITIES
• - PASS ENTITY ARRAY TO SAVECHANGES
NAMED SAVES
ENTITYASPECT.ENTITYSTATE PROPERTY
• UNCHANGED – AFTER BEING LOADED BY A QUERY OR AFTER SUCCESSFUL SAVECHANGES
• MODIFIED – PREVIOUSLY UNCHANGED ENTITY HAS A PROPERTY CHANGE
• ADDED – ENTITY HAS BEEN CREATED AND ADDED TO THE CACHE, BUT NOT SAVED TO BACK END
• DELETED – PREVIOUSLY UNCHANGED ENTITY IS MARKED FOR DELETION
• DETACHED
• - NEWLY CREATED ENTITY THAT HAS NOT BEEN ADDED TO THE CACHE
• - ADDED ENTITY THAT GETS MARKED FOR DELETION
• - DELETED ENTITY AFTER SAVECHANGES IS COMPLETE
• - ENTITIES THAT WERE IN THE CACHE WHEN ENTITYMANAGER.CLEAR IS CALLED
• - ENTITYMANAGER.DETACHENTITY CALLED
ENTITY STATES
ENTITYMANAGER.EXPORTENTITIES ([ ENTITYARRAY ])
• RETURNS STRING BUNDLE – SERIALIZED COPY OF THE ENTITY AND THEIR STATE INFORMATION
• IF NO PARAM , EXPORTS ENTIRE CACHE CONTENTS
• IF ARRAY PASSED IN, ONLY THOSE ENTITIES ARE EXPORTED
ENTITYMANAGER.IMPORTENTITIES (BUNDLE, [CONFIG ]) – STATIC
• CREATES A NEW ENTITYMANAGER INSTANCE, POPULATES ITS CACHE WITH THE BUNDLE, RETURNS IT
• OPTIONAL CONFIG ARGUMENT WITH MERGESTRATEGY TO OVERRIDE DEFAULT
ENTITYMANAGER.IMPORTENTITIES (BUNDLE, [CONFIG ]) – INSTANCE
• MERGES ENTITIES INTO EXISTING ENTITYMANAGER CACHE
• OPTIONAL CONFIG ARGUMENT WITH MERGESTRATEGY TO OVERRIDE DEFAULT
EXPORTING/IMPORTING ENTITIES
CLIENT AND SERVER SIDE SUPPORT
YOU ARE ABLE TO DEFINE CLIENT AND SERVER SIDE RULES
• - BECOME A PART OF METADATA FOR MODEL
ERRORS ASSOCIATED WITH ENTITIES
ENTITYASPECT
• - MANUAL VALIDATION
• - ACCESSING VALIDATION ERRORS
VALIDATION
ENTITIES ARE VALIDATED DURING SAVECHANGES
• SERVER LOGIC IS EXECUTED
• 403 STATUS CODE AND ENTITIES WITH VALIDATION ERRORS ATTACHED ARE THROWN
• ERRORS ARE ASSOCIATED WITH ENTITIES IN THE CACHE
VALIDATION ON THE SERVER
EACH ENTITY CONTAINS COLLECTION OF VALIDATIONERROR OBJECTS
• PROPERTYNAME
• PROPERTY
• ERRORMESSAGE
• CONTEXT
• ISSERVERERROR
• KEY
• VALIDATOR
DISPLAYING VALIDATION ERRORS
SOME VALIDATION RULES ARE CREATED AUTOMATICALLY BASED ON METADATA
• - DATA TYPES: NUMERIC TYPES, BOOL , BYTE, DATE, DURATION, GUID , STRING
• - REQUIRED, STRINGLENGTH
OTHER RULES CAN BE ADDED ON THE CLIENT SIDE
RULES ARE CHECKED
• - WHEN PROPERTIES CHANGE
• - WHEN YOU ADD/ATTACH AN ENTITY TO THE CACHE
• - WHEN YOU TRY TO SAVECHANGES
• - WHEN ENTITIES ARE LOADED INTO CACHE FROM A QUERY (OFF BY DEFAULT)
• - CONFIGURABLE – ENTITYMANAGER.VALIDATIONPROPERTIES
AUTOMATIC VALIDATION
THERE ARE SEVERAL VALIDATION RULES, DEFINED INSIDE VALIDATOR CLASS
• - DATA TYPES, REGULAR EXPRESSIONS, PHONE, EMAIL, CREDITCARD, URL
VALIDATOR ALLOWS YOU TO:
• - REGISTER CUSTOM VALIDATION RULES
• - MANUALLY VALIDATE
• - MANAGE ERROR MESSAGE TEMPLATES
BUILT IN CLIENT SIDE VALIDATION RULES
ANY JS LIBRARY
BEST (IF WE NEED DATA BINDING ADVANTAGE):
• KNOCKOUT, ANGULAR ETC.
WORKS WELL WITH REQUIRE.JS FOR MODULE DEPENDENCY CHECKING
BREEZE AND OTHER JS LIBRARIES/TOOLS
• HTTP://WWW.BREEZEJS.COM/
• HTTP://WWW.BREEZEJS.COM/PREVIOUS-RELEASE-NOTES
• HTTP://WWW.BREEZEJS.COM/DOCUMENTATION/RELEASE-NOTES
• HTTP://BRIANNOYES.NET/2013/02/16/CONSUMING-AN-ASP-NET-WEB-API-ODATA-SERVICE-WITH-BREEZE/
• HTTP://WWW.BREEZEJS.COM/SITES/ALL/APIDOCS/CLASSES/ENTITYMANAGER.HTML
• HTTP://WWW.BREEZEJS.COM/DOCUMENTATION/METADATA
• HTTP://WWW.BREEZEJS.COM/DOCUMENTATION/WEB-API-ROUTING
• HTTP://WWW.BREEZEJS.COM/DOCUMENTATION/WEB-API-CONTROLLER
• HTTP://WWW.BREEZEJS.COM/SAMPLES/NODB
• HTTP://WWW.BREEZEJS.COM/DOCUMENTATION/NHIBERNATE
• HTTP://WWW.BREEZEJS.COM/DOCUMENTATION/ENTITYMANAGER-AND-CACHING
• HTTP://WWW.BREEZEJS.COM/SITES/ALL/APIDOCS/CLASSES/ENTITYASPECT.HTML
• HTTP://WWW.BREEZEJS.COM/DOCUMENTATION/EXPORTIMPORT
• HTTP://WWW.BREEZEJS.COM/SITES/ALL/APIDOCS/CLASSES/MERGESTRATEGY.HTML
• HTTP://WWW.BREEZEJS.COM/SITES/ALL/APIDOCS/CLASSES/VALIDATIONERROR.HTML
• HTTP://WWW.BREEZEJS.COM/DOCUMENTATION/TESTING-BREEZE-APPLICATION
LINKS
NOW WATCH LIVE VIDEO
OF THIS PRESENTATION
AT:
HTTPS://
YOUTU.BE/KGSHQZD6SLM