Tools for Creating Message Schemas
Updated: November 27, 2015
In the previous topics, we saw that rich messaging endpoints provide connectivity to different protocols and applications (see Using the BizTalk Adapter Service (BAS)), and provide message-processing capabilities such as validation, transformation, extraction, and enrichment on the cloud (see What are Bridges?). However, neither of these can be used in isolation and ‘tie up’ with other Service Bus entities on the cloud (like topics, queues, and so on) to provide an end-to-end message flow. For example, you could have a scenario where the a client sends a request message that needs to be processed on the cloud, routed to a queue, and then eventually inserted into a SQL Server database. To configure this scenario, you need to use an XML bridge, a Service Bus queue, followed by BizTalk Adapter Service in a sequence. This presents a need for a design area where you could stitch different components of a message flow together. BizTalk Services provides a design surface called BizTalk Service project that helps you achieve this. The BizTalk Service project design surface is available as a Visual Studio project type and is installed with BizTalk Services SDK. For more information about the BizTalk Service project and to set up a BizTalk Service project, see Get started with a Visual Studio project.
In the current Service Bus security model, access to the Service Bus entities is controlled via Access Control Service (http://go.microsoft.com/fwlink/p/?LinkId=225149). A valid Access Control token must be presented in order to create and manage entities on the Service Bus. In most cases, a client sending a message to a Service Bus entity must also present a valid Access Control token which is then used for authentication, the only known exception being relay endpoints that allow a client to be unauthenticated and handle the authentication and authorization on their own, typically using message security. Also, the Service Bus does not propagate either the Access Control token or the claims received on the messages.
A BizTalk Service project spanning multiple Service Bus entities is a message-mediation intermediary that sits between the clients and the services. As such, a BizTalk Service project may be employed either by the service (in which case it mediates the receipt of messages sent by clients) or by a client (to mediate the messages before they are sent to service). In either case, effectively, the systems or applications employing the Service Bus tend to be distributed with one of the parts being on the Service Bus and others being outside the Service Bus, either on cloud or on premises. Hence, the distributed nature of these applications has implications on how authentication and authorization happens in various parts of the system in different scenarios.
For the current milestone, all the entities that are part of a BizTalk Service project must belong to the same Service Bus namespace. Hence, the authentication of a message flow happens only at the entry point of the flow and all entities in a message flow are considered to be within the same security and trust boundary. While deploying a message flow, you only need to provide the credentials (Issuer Name and Issuer Key) for the Service Bus namespace. For instructions on how to use a Bridge Configuration to configure rich messaging endpoints, see Create the project in Visual Studio.
BizTalk Services provides the following tools that help in developing BizTalk Service projects:
Schema Editor runs within the Microsoft Visual Studio environment. You can use it to easily create, edit, and manage XML and flat-file schemas for use with your application. Schema Editor uses its own graphical system of hierarchical records and fields to represent the structure of instance messages, and uses the XML Schema definition (XSD) language to store the schemas that it defines. This is true regardless of the format in which instance messages are exchanged: XML or flat-files.
Creating Schemas Using the Schema Editor
Working with Schema Editor is similar to working with Editor in BizTalk Server. To use the Schema Editor, you can use the steps at Using BizTalk Editor.
Unlike the BizTalk Server Editor, the BizTalk Services Schema Editor does not enable you to generate an instance from a schema and test an instance against a schema.
Testing Schemas Using the Schema Editor
After you create your schema, you may want to validate that the schema describes the message structure you intend it to describe. Schema validation includes:
Validating the schema
Generating an instance of the schema
Validating the instance against the schema
For more information on how to test the schema, see http://msdn.microsoft.com/library/aa547850.
You can use bridges to send messages to external WCF service endpoints. If the incoming message to the bridge is of a schema different from the one expected by the external service endpoints, you must use transforms to map the incoming message schema to the message schema expected by the service. In turn, the transforms require that the schema of the message expected by the service be added to your BizTalk Service project. To enable users to generate/add such schemas to the project, BizTalk Services provides the Service Consuming Wizard.
When you use the BizTalk Service project to route a message from a bridge to an external WCF service, you must have the schema of the service added to your project as well. The Service Consuming Wizard enables you to generate the schema of a WCF service and add it to your BizTalk Service project. Once the schema is available as part of the project, you can use a transform to map the schema of the incoming message to the schema of the message expected by the service.
The Service Consuming Wizard in BizTalk Services is similar to the BizTalk WCF Service Consuming Wizard in BizTalk Server. To use the wizard, you can use the steps at Use the BizTalk WCF Service Consuming Wizard to Consume a WCF Service.
The only difference is that the BizTalk Services wizard creates an XSD schema file after a successful run. The BizTalk Server wizard creates other output files that are not relevant for BizTalk Services.