zac*_*ary 0 apache-flex architecture flash silverlight ria
在RIA应用程序中,您应该在RIA层(flash/silverlight等)之外放置尽可能多的业务逻辑.这背后的原因是什么?进入表示层的任何逻辑都可以更快地执行...
这是因为RIA技术很可能需要改头换面,你将不得不重写所有业务逻辑吗?
我不确定我同意你的前提,你"应该"把业务逻辑放在客户端之外.你是应该推动业务逻辑UI层外,但通常还是离开你打后端的Web服务之前,一对夫妇的客户端层.例如,典型的Silverlight应用程序基于MVVM模型,该模型规定了没有业务逻辑的View,具有相当大的验证和业务逻辑块的ViewModel,以及具有其余部分的模型.所有这一切都在客户端.
另一方面,您确实需要服务器上的业务逻辑层.您不能依赖客户端应用程序来过滤掉所有不良数据:有人可能正在运行旧版本的客户端,或者完全不同的客户端,或者可能正在尝试破解您的系统.
换句话说,理想情况下,您应该在客户端和服务器上执行业务逻辑和验证:在客户端上,因为您需要响应,并且在服务器上,因为您需要安全性.问题是如何得到这个,并没有任何完美的答案.
Silverlight应用程序中常用的一种方法(我不太熟悉Flash)是使用WCF RIA服务,它允许您在客户端和服务器上执行的一个位置创建验证.即使您没有使用WCF RIA Services框架,通过链接到客户端和Web服务上的验证/业务逻辑类的源代码,您仍然可以获得更多相同的效果 - 这是更多的工作,但仍然可能比编写两次验证并手动保持同步的工作量少.