【发布时间】:2011-07-20 07:28:41
【问题描述】:
提前对文字墙表示歉意!
场景:
我们正在研究为需要支持“独立”模型(在台式机上运行的前端 + 后端)和本地服务器模式(安装在本地服务器上的后端)的 LOB 应用选择什么技术,以及通过 Internet 提供的软件即服务(后端安装在托管服务器上)。
我们希望最大限度地减少开发工作,这就是我们选择 Silverlight 前端的原因。我们打算为所有 3 个模型重复使用相同的代码库。
LOB 应用需要大量的数据输入,并且会在后端进行一些数学运算。我们会有大量的意见。我们将拥有一个包含 80 多个表的数据库。我们目前拥有自己的 DAL,使我们能够将 MSSQL、MySQL 和 Oracle 用作 DBMS。
当前的愿景是使用 Agile TDD Silverlight 4.0 MVVM 应用程序作为 C# 中的前端和 Caliburn 框架。并将 WCF(RIA?)服务作为后端(非 Silverlight,纯 .NET 4.0)。这很适合不同的模型,因为这只是后端安装位置的问题。对于 SAAS 模型,我们在 Internet 上有一个服务器可以驻留后端。
问题:
这听起来完全可行,还是认为我们可以为不同的模型拥有相同的代码库?
关于后端,我们正在研究 WCF RIA 服务,但希望拥有“消息安全”,这在 WCF 的 Silverlight 实现中似乎是不可能的。 WCF RIA 是一个有效的选择吗?还是说普通 WCF 在安全方面“更好”?
关于我们需要支持的不同 DBMS。这对 WCF RIA 服务可行吗?还是我们最好创建自己的 BLL/DAL 并通过普通 WCF 公开它?
有没有人使用过不使用内联 SQL,只使用存储过程的多 DBMS 设置的经验?原始应用程序大量使用内联 SQL,但我们想知道仅使用不同 DBMS 中的存储过程,该应用程序的可维护性如何。
最后一个问题,关于 MVVM 和安全性,出于安全/代码保护的原因,我们希望在后端“隐藏”尽可能多的逻辑。对此做什么是合乎逻辑的?我们需要做 TDD,所以我们需要能够模拟模型,这意味着它需要在前端可用。但是我们需要将所有逻辑都放在后端。我们是否应该在前端使用“包装器”来“链接”后端的“真实模型”?一种与后端模型一对一匹配的虚拟模型。或者有没有“更好”的方法来做到这一点?
提前感谢您在这些主题中为我们提供的任何帮助!
休伦。
【问题讨论】:
-
没有使用最新版本,但建议您看看 Rockford Lhotka 的 CSLA 框架。
-
我确实看过 CSLA Rikalus,但我从未“相信”它是我们可以/应该使用的东西。既然你在这里再次提到它,也许我应该重新考虑一下。会把它放在我的待办事项清单上:)
标签: silverlight mvvm wcf-security caliburn