Service Generation Outcome
This article is relevant to entity models that utilize the deprecated Visual Studio integration of Telerik Data Access. The current documentation of the Data Access framework is available here.
Service Wizard of Telerik Data Access can generate ServiceStack services for the persistent classes in your model. This topic will provide you with additional information about the changes Service Wizard makes in your solution:
New DTO Class Library
Service Wizard generates a new class library in your solution, which holds the DTOs that correspond to the persistent classes, the request and response message classes for the DTOs, and the IQueryRequest interface used for the filtering, ordering, and paging functionality. The name of this library follows the pattern <ModelName>ServicesDTOs.
By design, the navigational properties of the persistent classes are not exposed in the generated DTOs.
NuGet Packages Installed In The DTO Class Library
- ServiceStack.Interfaces
Files Generated In the DTO Class Library
- <PersistentEntityName>DTO.cs(.vb) - these files hold the DTO classes for the persistent entities you selected on the Service Configuration dialog. Each DTO contains all the properties of the respective persistent class excluding the navigational ones.
- <PersistentEntityName>ServiceMessages.cs(.vb) - these files hold the service messages used in each of the service operations.
- IQueryRequest.cs(.vb) - this file holds the interface implemented by the request message passed to the queryable endpoint. It provides the support for filtering, ordering, and paging.
Service Messages Details
Conceptually, in order to execute a CRUD operation in ServiceStack, you are sending a message to a ServiceStack instance, and you are receiving a response message, which holds the result if a reading operation was executed, or holds no explicit result, if the request was successfully accepted. Let's look at an example with the Category entity:
HTTP Verb and Action |
Request Message |
Response Message |
Service Method* |
Relative URL** |
GET Get a list of all categories. |
QueryCategories | QueryBase<CategoryDTO> | QueryResponse<CategoryDTO> Get(QueryCategories request) | /Categories |
GET Get category by Id. |
GetCategoryById | GetCategoryByIdResponse | GetCategoryByIdResponse Get(GetCategoryById request) | /Categories/{CategoryID} |
POST Add a new category. |
AddCategory | HttpResult Post(AddCategory request) |
/Categories | |
PUT Update a category. |
UpdateCategory | void Put(UpdateCategory request) |
/Categories/{CategoryID} | |
DELETE Delete a category. |
DeleteCategory | void Delete(DeleteCategory request) |
/Categories/{CategoryID}/delete |
*The definition and the implementation of the service methods would be placed in the CategoryService.cs(.vb) file. This file would reside in the project which holds the code base of the service layer.
**The relative URLs would be built in the AppHost class in the hosting web application.
Changes In The Hosting Web Application
Service Wizard performs the following changes on the web application that hosts the ServiceStack services:
NuGet Packages Installed In The Hosting Web Application
- ServiceStack
- ServiceStack.Interfaces
- System.Linq.Dynamic
References Added In The Hosting Web Application
- <ModelName>ServicesDTOs
- Telerik.OpenAccess
- Telerik.OpenAccess.35.Extensions
- <Your Telerik Data Access Model Project>
Files Generated In The Hosting Web Application
- AppHost.cs(.vb) - this is the ServiceStack host class. It contains the default routes configuration and the Inversion of Control (IoC) configuration.
- BaseRepository.cs(.vb) - this file contains the IBaseRepository interface and the BaseRepository class. Together, they provide the support of the CRUD operations executed by Telerik Data Access on the persistent entities. Their implementation follows the Repository pattern.
- DynamicQueryInfo.cs(.vb) - this class is used by the repositories to convert the query requests to queries for Dynamic Linq.
- EntitySpecificRepositories.cs(.vb) - this file contains the repositories for the persistent classes selected on the Service Configuration dialog.
- <PersistentEntityName>Service.cs(.vb) - these files contain the actual implementation of the services for each persistent class you selected on the Service Configuration dialog.
Modified Files In The Hosting Web Application
- Global.asax.cs(.vb) - Service Wizard inserts the code which initializes the ServiceStack service host.
- Web.config - Service Wizard takes care to copy the appropriate connection string, and to register the HttpHandlers required by ServiceStack. The handlers are added to both the IIS7 (and higher) configuration and the IIS6 configuration.