As you learned in Chapter 1, "Microsoft CRM 3.0 Introduction and Architecture," Microsoft CRM uses a metadata and server platform layer to abstract the application and extensibility points from the Microsoft SQL Server database tier. The platform layer also controls security, event management, and extensibility points (such as callouts and workflow) while enforcing the proper constraints for interacting with the underlying schema of the database. By providing a supported API, Microsoft CRM allows developers to customize the application and continue to use those customizations after future upgrades.
Figure 9-1 shows a graphical representation of the Microsoft CRM architecture.
Figure 9-1: Microsoft CRM technical architecture
![]() |
Microsoft CRM has always allowed system developers to interact with the software. Although the APIs of Microsoft CRM versions 1.0 and 1.2 were adequate for a wide range of customizations, the Microsoft CRM 3.0 APIs provide even more functionality with a drastically simplified programming model. The Microsoft CRM 3.0 APIs reduce the overall number of methods and offer a strongly typed, WSDL-compliant Web service approach.
More Info | The Web Services Description Language (WSDL) is an XML format published for describing Web services. People typically pronounce WSDL as "wiz-dull." |
Table 9-1 outlines a few of the key differences between the Microsoft CRM 3.0 SDK and the Microsoft CRM 1.2 SDK.
Microsoft CRM 3.0 SDK | Microsoft CRM 1.2 SDK |
---|---|
Microsoft .NET Web services with a dynamically generated WSDL | Pre-compiled proxy DLLs and C++ Active Template Library (ATL)—based .srf files |
Strongly typed objects and attributes | XML strings used for all entities, parameters, and so on |
IntelliSense available within Visual Studio .NET, including custom entities and attributes | No SDK integration with Visual Studio .NET |
Unnecessary to pass user authentication for each method call | User authentication is a required parameter for all methods |
QueryExpression available as a fast, ad hoc way to retrieve data | Only the string-based FetchXml available |
Metadata Web service available for querying details about the data structure | No APIs available to retrieve system metadata |
This table clearly illustrates that, in addition to providing a more robust programming interface than Microsoft CRM 1.2, the Microsoft CRM 3.0 SDK also provides several significant improvements designed to increase developer productivity so that customizations are easier to write, test, and deploy.
![]() |
Microsoft CRM uses a service-oriented approach for its APIs, making use of two WSDL-compliant Web services (CrmService and MetadataService). As you can see from Figure 9-2, Microsoft CRM controls data access for the application interfaces, reports, and extensibility through the use of these two Web services. As you learned in Chapter 7, "Reporting and Analysis," Microsoft CRM also allows for direct and secure retrieval of data from SQL Server through the use of filtered views. Filtered views provide read-only access of data directly to the database layer, but they still honor the security privileges of the calling user.
Figure 9-2: Microsoft CRM extensibility architecture
The shaded, rounded rectangles in Figure 9-2 denote the business logic extension areas available to you.
This chapter will focus on the server-side API services and server-based customization points available to you for custom integration and application development in Microsoft CRM.