上一篇介绍了ViewModel,下面介绍一下结构中RiaService。
在.net 4.0中,为我们提供了一个新的Ria服务:Domain Service,主要用于处理SilverLight与服务端的通信问题。以往我们在处理这方面的问题时,首先想到的是用WCF、Web Service等方式来实现,所以在处理过程中还需要去考虑通信方面的问题。但有了Domain Service后,我们不用再去关心这方面的问题,它会自动帮我们生成相应的通信协议与代码,将我们所提供的服务曝露给Silverlight客户端。
DtoModels,用于存放于View相对应的视图模型类;
TesstDomainService,用于实现RiaService的Domain Service类
代码如下:
[EnableClientAccess()]
public class TestDomainService : DomainService // LinqToEntitiesDomainService<TestEntities>
{
// TODO: Consider
// 1. Adding parameters to this method and constraining returned results, and/or
// 2. Adding query methods taking different parameters.
private IProduction _iProduction;
public TestDomainService()
{
_iProduction = new Production();
}
public IQueryable<ProductionDataDto> GetProductionData()
{
List<ProductionData> viewModel = _iProduction.GetProductionData();
IEnumerable<ProductionDataDto> viewModelDto = (from table in viewModel select new ProductionDataDto())
return viewModelDto.AsQueryable();
}
}
这里,我们继承自DomainService,这样就可以实现WCF的功能。同时定义了一个IProduction接口,通过它来实现数据服务功能,我们可以通过Ado.net entity data或者Linq to database等方式来与数据库进行交互。ProductionDataDto为与ProductionData相对应的视图模型类,在从数据服务层返回数据实体模型ProductionData后,需要转换为页面所需要的视图模型。