我有一个XBap系统设计为3层应用程序。 XBap客户端使用netTcpBinding通过WCF服务消耗逻辑。
为了便于数据绑定并且能够重新使用内置我的业务对象的数据验证,我选择从xBap客户端引用业务对象库,而不是生成代理。
除了拥有基本数据验证之外,这些对象不实现任何逻辑。真正的业务逻辑是在我的WCF服务中实现的。
现在我面临着巨大的挑战。我需要将xBap移植到silverlight,所以我需要我的silverlight应用程序。使用相同的业务逻辑(winforms LOB应用程序也使用它)。
出现的一些问题:
1)无法从silverlight客户端应用程序引用业务对象库,因为它被编译为常规dll而不是silverlight。
2)无法将其编译为silverlight库,因为我失去了很多功能,但显然不是一个好主意。如果将来出现一个新的.net平台,我不保证修改后的(silverlight)dll会起作用。
当我发现RIAServices时,我有了一些希望。我在某处读到了我可以实现服务并使用任何类型的DAL。 (我有一个自定义的)但我没有找到如何将RIAServices放在现有业务层之上的示例。值得一提的是,我们不使用(我们不打算)LINQ。我发现的每个例子都开始使用RIAServices并使用LINQ从头开始编写业务逻辑。
RIAServices生成数据绑定就绪客户端代码,但我觉得我必须更改整个业务层,这将非常昂贵。
所以,解决方案似乎是继续使用WCF,特别是现在Silverlight 3.0支持新的二进制绑定,并且使用代理而不是实际的业务对象。 问题是这些代理不包括数据验证,属性更改通知和变更跟踪,这是我的业务部门所执行的三个方面。
RIAServices解决了这些和其他方面,但它需要与silverlight proyects一起使用。 WCF(SVCUtil.exe)生成代理但它们不是“完整”的,以满足我们的需求。因此,我似乎必须开发自己的实用程序来生成以业务对象作为输入的代理。
在我开始这样做之前,我想知道是否有人已经遇到过这个问题,并且能够以一种方便无痛的方式解决它。
提前致谢,
的Gonzalo
答案 0 :(得分:1)
查看此博文和示例 - Business Apps Example for Silverlight 3 RTM and .NET RIA Services July Update: Part 8: WCF Based Data Source。
它显示了使用.NET RIA Services编写DomainService,它将操作和模型公开给Silverlight客户端,然后对WCF服务起作用。
您不应该更改业务逻辑。作为一个层的DomainService将重用它,如果您不能将您的业务逻辑/ WCF服务公开给Silverlight客户端,那将是有意义的......
希望有所帮助。