我的问题与this one非常相似。
在服务器上运行现有软件(数据和业务层),我想向其添加Silverlight GUI客户端。通信目前通过WCF服务工作,但我想使用WCF RIA服务。
我的架构看起来像这样:
Database - DAL - BL - WCF Services - Silverlight client
所有业务逻辑都在服务器上,Silverlight客户端主要是数据查看器。
问题:
1)用WCF RIA服务替换WCF服务(用于客户端和服务器之间的通信)是否有意义?
2)是否可以让WCF服务与WCF RIA服务通信?像这样:
Database - DAL - BL - WCF Services - WCF RIA Service - Silverlight client
或
Database - DAL - BL - WCF Services - Translator - WCF RIA Service - Silverlight client
或
Database - DAL - BL - WCF RIA Service - Silverlight client
RIA服务的所有示例和教程似乎都使用它们来直接访问数据库,但是如果我想访问业务层呢?我如何表示业务层上的“数据对象”?我如何使用RIA服务从客户端调用服务器上的功能,例如计算一些东西?
答案 0 :(得分:2)
1)我会倾向于使用WCF RIA来获得使用工具保持Silverlight代码最新的所有好处。使用服务引用会增加WCF服务和Silverlight实现不同步的几率。
2)我将使用WCF RIA服务包装WCF服务,如例#1:
Database - DAL - BL - WCF Services - WCF RIA Service - Silverlight client
您的WCF RIA DomainService应该采用WCF服务的实例并仅包装它。
[EnableClientAccess]
public class FooDomainService : DomainService
{
FooWcfService _fooWcfService;
public FooDomainService(FooWcfService fooWcfService)
{
_fooWcfService = fooWcfService;
}
public IQueryable<Bar> GetBars()
{
return _fooWcfService.GetBars().AsQueryable();
}
}