Architecture overview of the BizTalk Adapter for Oracle Database
Describes the architecture for the Microsoft BizTalk Adapter for Oracle Database.
An understanding of the Oracle Database adapter architecture can help you:
Understand the relationship between the Oracle Database adapter and the Microsoft Windows Communication Foundation (WCF) Line of Business (LOB) Adapter SDK.
Understand security boundaries, so that you can better secure data in your solution.
Understand the Oracle Database adapter binding properties.
Troubleshoot installation issues.
This topic describes the architecture of end-to-end solutions that use the Oracle Database adapter to operate on an Oracle database, and also described the internal architecture of the Oracle Database adapter.
Adapter architecture overview
The Microsoft BizTalk Adapter for Oracle Database is a Windows Communication Foundation (WCF) custom binding. This binding contains a single custom transport binding element that enables communication with an Oracle database. The Oracle Database adapter is wrapped by the Microsoft Windows Communication Foundation (WCF) Line of Business (LOB) Adapter SDK runtime, and is exposed to applications through the WCF channel architecture. The Oracle Database adapter communicates with the Oracle database through the Oracle Data Provider for .NET (ODP.NET) and the Oracle client, which are part of the Oracle Data Access Components (ODAC) for Windows.
The following figure shows the end-to-end architecture for solutions that are developed by using the Oracle Database adapter.
Consuming the adapter
The Oracle Database adapter exposes the Oracle database as a WCF service to client applications. To perform operations and access data on the Oracle database, client applications exchange SOAP messages with the Oracle Database adapter through WCF channels. The previous figure shows four ways in which the Oracle Database adapter can be consumed. They are:
Through a WCFchannel model application. A WCF channel model application performs operations on the Oracle database by using the WCF channel model to exchange SOAP messages directly with the Oracle Database adapter. For more information about developing solutions for the Oracle Database adapter by using the WCF channel model, see Developing Oracle Database application using the WCF Channel Model.
Through a WCF service model application. A WCF service model application calls methods on a WCF client to perform operations on the Oracle database. A WCF client models the operations exposed by the Oracle Database adapter as .NET methods. You can use the Microsoft Windows Communication Foundation (WCF) Line of Business (LOB) Adapter SDK or the WCF ServiceModel Metadata Utility Tool (svcutil.exe) to create a WCF client class from metadata exposed by the Oracle Database adapter. For more information about the WCF service model and the Oracle Database adapter, see Develop Oracle Database Applications using the WCF Service model.
Through a BizTalk receive location or send port that is configured to use the Microsoft BizTalk WCF-Custom adapter. The WCF-Custom adapter enables the use of WCF extensibility features. By using the WCF-Custom adapter you can select and configure the Oracle DB Binding and the behavior for the receive location or send port. For more information about how to use the Oracle Database adapter in BizTalk Server solutions, see Develop your BizTalk applications.
Through an IIS-hosted Web service. In this scenario, a WCF service proxy generated by using the adapter is hosted in IIS using the standard WCF Http Binding. This exposes the service contract as a Web service to external users. IIS automatically hosts the adapter at runtime, which, in turn, communicates with the Oracle database.
The Oracle Database adapter and ODAC are always hosted in-process with the application or service that consumes the adapter.
Oracle Database Adapter and WCF
WCF presents a programming model based on the exchange of SOAP messages over channels between clients and services. These messages are sent between endpoints exposed by a communicating client and service. An endpoint consists of:
An endpoint address, which specifies the location at which messages are received
A binding, which specifies the communication protocols used to exchange messages
A contract,which specifies the operations and data types exposed by the endpoint.
A binding consists of one or more binding elements that stack on top of each other to define how messages are exchanged with the endpoint. At a minimum, a binding must specify the transport and encoding that are used to exchange messages with the endpoint. Message exchange between endpoints occurs over a channel stack that is composed of one or more channels. Each channel is a concrete implementation of one of the binding elements in the binding configured for the endpoint. The WCF documentation includes more details about WCF, and the WCF programming model.
The Microsoft BizTalk Adapter for Oracle Database exposes a WCF custom binding, the Oracle DB Binding (Microsoft.Adapters.OracleDB.OracleDBBinding). By default, this binding contains a single custom transport binding element, the Oracle DB Adapter Binding Element (Microsoft.Adapters.OracleDB.OracleDBAdapter), which enables operations on an Oracle database.
Microsoft.Adapters.OracleDB.OracleDBBinding (the Oracle DB Binding) and Microsoft.Adapters.OracleDB.OracleDBAdapter (the Oracle DB Adapter Binding Element) are public classes and are also exposed to the configuration system. Because the Oracle DB Adapter Binding Element is exposed publicly, you can build your own custom WCF bindings capable of extending the functionality of the Oracle Database adapter. For example, you could implement a custom binding to support Enterprise Single Sign-on (SSO) in a WCF channel or service model solution. The reasons for doing this would be to aggregate database operations into a single multifunction operation or to perform schema transformation between operations implemented by a custom application and operations on the Oracle database.
The Oracle Database adapter is built on top of the Microsoft Windows Communication Foundation (WCF) Line of Business (LOB) Adapter SDK and runs on top of the WCF LOB Adapter SDK runtime. The WCF LOB Adapter SDK provides a software framework and tooling infrastructure that the Oracle Database adapter uses to provide a rich set of features to users and adapter clients.
Oracle Database Adapter and WCF LOB Adapter SDK
The Microsoft BizTalk Adapter for Oracle Database implements a set of core components that leverage functionality provided by the Microsoft Windows Communication Foundation (WCF) Line of Business (LOB) Adapter SDK and provide connectivity to the Oracle database through Oracle Data Provider for .NET (ODP.NET).
The WCF LOB Adapter SDK serves as the software layer through which the Oracle Database adapter interfaces with the Windows Communication Foundation (WCF). ODP.NET serves as the layer through which the Oracle Database adapter interfaces with the Oracle database.
The following figure shows the relationships between the internal components of the Oracle Database adapter, WCF LOB Adapter SDK, and ODP.NET.
ODP.NET
The Oracle Database adapter connects with the Oracle database through the ODP.NET and the Oracle client. Both of these components are part of Oracle Data Access Components (ODAC).
ODP.NET implements a data provider for the Oracle database that is consistent with the ADO.NET interface. The Oracle Database adapter uses the classes exposed by ODP.NET to operate on the Oracle database.
The Oracle client provides connectivity to the Oracle database. You establish a connection to an Oracle database by providing a connection URI to the Oracle Database adapter. You can specify the connection URI in two ways:
Using tnsnames.ora. In this approach, the connection URI provided by the adapter client contains only the net service name specified in the tnsnames.ora file. The adapter extracts the connection parameters such as server name, service name, port number, etc. from the net service name entry in the file. To use this approach, the computer running the Oracle client must be configured to include the net service name for the Oracle database in the tnsnames.ora file.
Without using tnsnames.ora. In this approach, the adapter clients specify the connection parameters directly in the connection URI. This does not require the net service name to be present in the tnsnames.ora file on the client computer. This approach does not even require the tnsnames.ora file to be present on the client computer.
For more information about the connection URI, see Create a connection to the Oracle Database.