2011-03-01 53 views
1

我们正在从零开始构建一个新系统,并决定使用SL4,WCF RIA Services和EF4。如何架构业务层或wcf ria服务

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

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

但是这是WCF RIA的好用吗?

感谢

+0

我们已决定仅将RIA服务层用作Silverlight客户端的服务层。系统的其他部分必须通过另一个业务层访问数据层。这将允许我们为SL客户端提供一些自定义业务规则。 – kimtiede 2011-03-05 20:03:18

回答

0

什么你所描述的是标准的WCF RIA模式,是怎样的WCF RIA团队设计了系统的正常工作。

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

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

但是,仍然有几种使用Silverlight之外的服务层的方法。您可以使用OData端点或SOAP/REST服务公开您的EF4实体。欲了解更多详情,请查看this article

0

在大RIA项目中,我们通常有很多模块(业务模块,授权,授权,审计模块等),显然还有一些模块需要跨越其他模块以及跨SL客户端访问。所以我相信你的担心是一个典型的体系结构方面,你如何使它在一个大的应用程序中正确分发。与任何.NET项目一样,您可以将它模块化为不同的库项目。这意味着您可以适当地制作一些作为RIA Service Class Library项目或其他典型的可重用.net库(例如,日志库)