如何构建业务层或wcf ria服务

时间:2011-03-01 20:32:45

标签: silverlight wcf architecture ria

我们正在从头开始构建一个新系统,并决定使用SL4,WCF RIA服务和EF4。

因此,我将WCF RIA服务视为SL客户端的业务逻辑,但它可以用作通用业务逻辑层,可以由应用程序的其他部分使用。例如,WCF RIA服务将实现安全性(例如允许谁对哪些对象执行操作)。但是这种安全实现也应该由系统的其他部分实现,而不仅仅是SL客户端。

为避免重复此逻辑,我的想法是将WCF RIA服务用作一般业务层,这意味着如果系统的其他部分需要访问数据层,则需要通过该层。

但这是否适合使用WCF RIA?

由于

2 个答案:

答案 0 :(得分:0)

您所描述的是标准的WCF RIA模式,以及WCF RIA团队如何设计系统的工作方式。

WCF RIA将允许您获得对EF4实体的端到端访问,并隐藏RIA服务界面背后的业务逻辑。您可以在类级别(服务合同中的所有方法)或方法级别将身份验证和授权属性应用于服务定义(域服务类)中的实体,以实现更精细的控制。

我在您的计划中看到的唯一主要缺陷是“系统的其他部分需要访问他们需要通过该层的数据层”。 WCF RIA在这个阶段只适用于Silverlight(也许是ASP.NET MVC?我不确定)。微软最终打算将RIA服务扩展到任何类型的.NET应用程序,但在这个阶段它只是一个Silverlight专用的东西。这意味着您将错过许多与您的其他非Silverlight应用程序的WCF RIA好东西。但是我相信您仍然可以将WCF RIA服务公开为普通的WCF服务,包括身份验证/授权层。您将错过自动代理,代码生成等。

但是,仍然有几种方法可以从Silverlight外部使用此服务层。您可以使用OData端点或SOAP / REST服务公开EF4实体。有关详细信息,请查看this article

答案 1 :(得分:0)

在大型RIA项目中,我们通常拥有如此多的模块(业务模块,许可,授权,审计模块等),显然有些模块需要跨其他模块访问,还有一些模块需要跨SL客户端访问。因此,我相信您关注的是如何在大型应用程序中正确分发这一点。与任何.NET项目一样,您可以将其模块化到不同的库项目中。这意味着您可以适当地制作一些RIA Service Class Library项目或其他典型的可重用.net库(例如,Logging library)