我正在学习如何使用WCF RIA服务编写应用程序。关于该主题的大多数教程都会从数据库中获取数据并将其显示在客户端中。我不清楚我应该在哪里放置我的业务逻辑。我基本上需要从客户端获取输入,对数据库执行一些查询,然后对其执行一些计算并在客户端上显示计算结果。我是否将数据从数据库检索到客户端并在那里执行操作,我是否在服务器的域类中执行操作并返回结果或其他内容?
感谢任何帮助
答案 0 :(得分:1)
您可以在服务器或客户端上执行此操作,但在客户端上执行此操作允许您使用客户端计算机/处理器执行计算。如果有大量用户,将工作推送到客户端可能会对服务器性能产生重大影响。
答案 1 :(得分:0)
性能是一个考虑因素,但您还必须考虑您的IP。请记住,Silverlight应用程序已交付给客户端,客户端上的所有.Net代码都可以重新设计。是的,您可以观察(sp!)代码,但这是部署中的额外步骤。无论如何,如果您的IP很有价值,我建议您在客户端上完成数据收集和验证(无论如何这都是好的做法)。工作返回服务器后,您可以注入/拦截WCF RIA服务请求并执行“其他”工作。我在这里问了一个类似的问题:ChangeSet Complete
答案 2 :(得分:0)
WCF RIA Services背后的想法是,您的业务逻辑可以在客户端和服务器之间共享。显然,您无法构建复杂的计算,但是围绕业务类的所有验证和规则都应该在object metadata中,以便它自动显示在客户端和服务器上。
进行这些类型的计算时要记住的最重要的事情是:
1)客户端可以查看您向客户端发送的任何代码。 2)客户端可能(可能)更改客户端上进行的任何计算。
因此,如果您有订单服务并仅在客户端计算订单总数,则恶意用户可能会向您发送总计误算错误的订单。