Business Data Connectivity Service (BDC) Overview
Applies to: SharePoint Foundation 2010
Business Data Connectivity (BDC) service is the new version of the Business Data Catalog that was provided in Microsoft Office SharePoint Server 2007. It is now provided in Microsoft SharePoint Foundation 2010. BDC is implemented as a shared service in SharePoint Foundation 2010, and it still relies on the Metadata Store. The BDC Service enables you to declaratively model external systems so that you can expose external data in SharePoint Server 2010 (and, with Business Connectivity Services Rich Client Components, in Microsoft Office 2010 applications also). BDC bridges the gap between SharePoint sites and your business applications, and enables you to bring key data from various external systems into SharePoint lists (via the new external lists feature and external data columns), Web Parts, search, user profiles, and custom applications.
The core function of the BDC is to provide connectivity to various kinds of external systems, and it has built-in support for connecting to the following kinds of data sources:
Windows Communication Foundation (WCF) and Web services
Microsoft .NET Framework assemblies
Custom data sources; BDC provides a pluggable Connector Framework which developers can use to plug in connectors for new external system types to enable access to these new data source types via BDC
Figure 1 is a high-level diagram of the BDC.
Figure 1. High-level view of BDC
A major design goal for BDC is to enable you to expose business data from various external systems declaratively, with very little coding. To achieve this goal, BDC provides homogeneous access to the underlying data sources through a metadata model that provides a consistent and simplified client object model.
The BDC provides, through its central metadata store, a mechanism to store descriptions of the programmatic interfaces of external systems by using:
Data structures such as Method, Parameter, TypeDescriptor, LobSystem objects, and LobSystemInstance objects.
Information about the external system such as the server name, connection string, and authentication methods.
Methods are contained in an abstraction (entity) that represents an external data type (such as Customer or Order). These methods abstract complex details about an external system's interfaces, and bring business application development into the realm of information workers. BDC then transforms the external system interface definitions into normalized, stereotypical operations against entities, such as "Create-An-Entity-Instance", "Read-Entity-Instances", and "Check-Entity-Instance-Permissions", by annotating the actual line-of-business (LOB) system interface descriptions with the annotations described by data structures such as MethodInstance, Identifier, FilterDescriptor, and Association. These data structures, collectively named MetadataObjects, compose the BDC metadata model, a component of BDC. These MetadataObjects are grouped into related collections named models that describe one or more external systems. Models are stored in a metadata store. After a store of models is made available, any solution can access that store by using the BDC Runtime object model, another component of BDC. The BDC Runtime object model provides programming interfaces that make the experience of programming against varied back-end systems uniform. It does this by programmatically converting method calls into stereotypical, normalized operations that are requested by an application into an external system-specific invocation.
The diagram in Figure 1 shows the programming model of BDC.
Figure 1. BDC programming model
BDC is the foundation of Business Connectivity Services, and the foundation of BDC is the entity model that defines entities, methods, relationships, and so on. After these are defined, the BDC Runtime object model is populated with data and provides a uniform stereotypical operational experience on the data, such as Create, Update, and Finder methods. Assuming that the underlying external system does expose create, read, update, delete, and query (CRUDQ) interfaces, the BDC Runtime object model will provide capabilities to perform these operations without requiring details about the underlying system.