Robust orch – long running transactions with well defined persistance
The main layers: UI, BizTalk and Services (banking and Luup costom made) Separation between Core and PGW in BizTalk PGW is the typical way of using BT Core is about orchestrating the services in the platform
With traditional .Net C# background our team have probably more focus on automation of tests than many others have. Have a culture where refactoring is the norm.
Questions so far?
BizTalk used as an application server for user interfaces Also batch processing Core/BPM vs. PartnerGateway MessageBox for communication
Complext workflows: Enrichment, limits, quotes, user profiles, booking, call external partners Low latency: < 1 sec response time preferred for web and mobile app frontends SMS response times can be longer Performance tuning: - «Test -> Change -> Retest» cycle needed for each changed parameter - Time consuming
This was how we estimated latency before we started the development and it influenced our design decitions
- When using WebRequest: Default limit of 2 outgoing connections to one host (configurable)
Tacoma Narrows Bridge breaking up
Web service calls require idempotent services Can resubmit previously sent requests Requests from UI applications are volatile The user may close the browser or app Transaction will be processed and shown on the transaction history Each partner integration is different Partner Gateway responsible for handling the partners API
Web service calls require idempotent services Can resubmit previously sent requests Requests from UI applications are volatile The user may close the browser or app Transaction will be processed and shown on the transaction history Each partner integration is different Partner Gateway responsible for handling the partners API
How to make the system look less like spaghetti
Duplicated code Too verbose Would be a better option to use .Net code
Hide external details example: Web service request with over 200 optional fields, where we only use about 30 of the fields Separation of concerns Simplifies testing of a components/orchestrations
Zoomin to a part of the system where we use internal contracts
Contracts creating clear bundaries between different parts of the system Internal contracts and reusable orchestration hides compex external webservices Makes it possible to ”hot deploy” new Partner Gateway applications without redeploying the existing applications
http://dosequis.com/
Enabled in the project’s property page
Microsoft.BizTalk.TestTools.dll must be deployed to test servers and to production You want to execute automated tests on the same code which is deployed to production
Could have used BizUnit for testing maps, but the XML format used for defining tests in version 3 of BizUnit was not appealing to use
Create an instance of the mapping class Create an instance of the target schema, which is used when validating the output. The target schema is embedded into this class. Validate mapped fields
A separate BizTalk test application is reading input message from disk and storing result message to disk
Important with quick feedback to the developers Mitigate slowdowns when someone checks in errors by quickly detecting the error Important when many team members work on the same code base
Binaries from a build is always tested by automated tests on the build servers and in our test environments before they are deployed to Production.
BTDF: BizTalk Deployment Framework
Our developers don’t deploy to test environments and production, and don’t have any access rights to the production environment.