Silverlight客户端和业务逻辑之间的WCF Ria服务?

时间:2012-07-24 15:09:14

标签: wcf silverlight wcf-ria-services silverlight-5.0

我的问题与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服务从客户端调用服务器上的功能,例如计算一些东西?

1 个答案:

答案 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();
    }
}