【问题标题】:Business Logic location in WCF RIA ServiceWCF RIA 服务中的业务逻辑位置
【发布时间】:2011-09-21 10:53:29
【问题描述】:

我只是在学习如何使用 WCF RIA 服务编写应用程序。大多数关于该主题的教程都涉及从数据库中获取数据并将其显示在客户端中。我不清楚我应该把我的业务逻辑放在哪里。我基本上需要从客户端获取输入,对数据库执行一些查询,然后对其执行一些计算并在客户端上显示计算结果。我是否从数据库中检索数据到客户端并在那里执行操作,我是否在服务器的域类中执行操作并返回结果或其他内容?

感谢任何帮助

【问题讨论】:

    标签: silverlight wcf-ria-services


    【解决方案1】:

    您可以在服务器或客户端上执行此操作,但在客户端上执行此操作允许您使用客户端机器/处理器来执行计算。如果有大量用户,将工作推送到客户端会对服务器性能产生很大影响。

    【讨论】:

      【解决方案2】:

      性能是一个考虑因素,但您还必须考虑您的 IP。请记住,Silverlight 应用程序交付给客户端,客户端上的所有 .Net 代码都可以重新设计。是的,您可以隐藏(sp!)代码,但这是部署中的一个额外步骤。无论如何,如果您的 IP 很有价值,我建议在客户端上完成数据收集和验证(无论如何,这只是一种很好的做法)。工作返回服务器后,您可以注入/拦截 WCF RIA 服务请求并执行“附加”工作。我在这里问了一个类似的问题:ChangeSet Complete

      【讨论】:

        【解决方案3】:

        WCF RIA 服务背后的理念是您的业务逻辑可以在客户端和服务器之间共享。显然你不能建立复杂的计算,但是你所有的关于业务类的验证和规则都应该在object metadata 中,以便它自动显示在客户端和服务器上。

        在进行这些类型的计算时要记住的最重要的一点是:

        1) 您发送给客户端的任何代码都可以被客户端查看。 2) 在客户端上进行的任何计算都可能(可能)由客户端更改。

        因此,如果您有订单服务并且仅在客户端计算订单总额,恶意用户可能会向您发送总额计算错误的订单。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-07-22
          • 2012-01-13
          • 1970-01-01
          • 1970-01-01
          • 2011-07-21
          • 2018-08-02
          • 2010-12-22
          • 2011-01-20
          相关资源
          最近更新 更多