A little known fact of BDC is, its support of web-service through GACed proxy. Typically BDC generates web-service proxy at runtime from the WsdlFetchUrl property specified in the metadata. Instead of using WsdlFetchUrl property if
WebServiceProxyType property is used, BDC loads the proxy from GAC. The property WebServiceProxyType is specified at the LOBSystem level.
Sample
In this sample, an entity Employee will be displayed in the Business Data List where the entity is is fetched from local assembly ( GACed assembly ).
Figure 1: Employee Business Data List
Employee entity contains the following fields as described below
Employee
Id - int
LoginId - string
FirstName - string
LastName - string
Title - string
AdventureWorks class (data fetched from AdventureWorks sample database) defines finder and specific finder (namely GetEmployees and GetEmployee methods).
public class AdventureWorks : HttpWebClientProtocol
{
public IListGetEmployees(string filterName){ ... }
public Employee GetEmployee(int id){ ... }
}
The point to note is AdventureWorks is a subclass of HttpWebClientProtocol. Once the assembly is created with AdventureWorks class and Employee class and GACed, its time to hook Employee entity with BDC.
Assuming the namespace of the AdventureWorks and Employee class to "Beyond" and FullName of the assembly is "BeyondAdvWorks, Version=1.0.0.0, Culture=neutral, PublicKeyToken=22c970e70e320837".
The following metadata defines a LobSystem of type WebService and registers Beyond.AdventureWorks class as the proxy for the webservice using WebServiceProxyType property.
Click on the following figure to see the LobSystem definition.
Entity Employee is defined in the metadata, with identity "Id" of type int ( see following figure ).
Finally the two methods are modeled in the metadata ( the figure contains Finder method, download the sample for complete metadata ).
In the methods, fully qualified name is used to define the TypeDescriptor for Employee class.
After hooking the Employee entity with Business Data List, the following figure shows the individual Employee.
Figure 5 : Individual entity page
See the previous post for how to hook finder and specific finder methods to the Business Data List.
Source Code
Sample with complete source code can be downloaded from here.
As-is
The source code/software is provided "as-is". No claim of suitability, guarantee, or any warranty whatsoever is provided. Source Code and executable files can not be used in commercial applications.
No comments:
Post a Comment