【问题标题】:WCF Ria Service between Silverlight Client and Business Logic?Silverlight 客户端和业务逻辑之间的 WCF Ria 服务?
【发布时间】:2012-07-22 22:43:32
【问题描述】:

我有一个与this one 非常相似的问题。

有一个现有软件(数据和业务层)在服务器上运行,我想向它添加一个 Silverlight GUI 客户端。目前通过 WCF 服务进行通信,但我想改用 WCF RIA 服务。

我的架构如下所示:

Database - DAL - BL - WCF Services - Silverlight client

所有业务逻辑都在服务器上,Silverlight 客户端主要是一个数据查看器。

问题:

1) 将 WCF 服务(用于客户端和服务器之间的通信)替换为 WCF RIA 服务是否有意义?

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 服务从客户端调用服务器上的函数,例如计算什么?

【问题讨论】:

  • 你有能力修改 WCF 服务使用的对象吗?您可能需要添加/更改/删除属性以满足 WCF RIA。另外,Silverlight 客户端是只读的吗?
  • 对象由另一个团队管理,该团队必须进行更改,但这是可能的。客户端不是只读的,会有“向服务器发送一个int”之类的小操作。

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


【解决方案1】:

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

【讨论】:

  • 感谢 Ed,我认为这就是我将为初学者做的事情,然后与服务器团队合作将所有内容切换到 WCF RIA。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-13
  • 1970-01-01
  • 2016-09-26
  • 2011-10-13
相关资源
最近更新 更多