我已经被要求将MVP ASP.NET应用程序转换为Silverlight。这将是我的第一个Silverlight应用程序,我正在努力确定如何最好地组织架构。
该应用程序非常标准的CRUD LOB应用程序。我也将使用GIS组件,但我不认为这会对一般架构产生影响(请纠正我,如果有的话)。我将使用Subsonic作为DAL,但我不认为这会对我的架构产生影响。
原始应用程序相当大,所以如果可能的话,我希望尽可能多地重用模型和视图。
在网上阅读它对于Silverlight 3 LOB应用程序架构的“最佳实践”有点混乱。微软似乎正在推动这个RIA框架 - 但它仅在预览中......是否已准备好生产?我得到的印象是微软正在推动使用Silverlight 3的不同架构指南,但我很难找到这些架构究竟是什么!
还有Prism和Caliburn项目。
Luckliy我在这里有一个非常灵活的截止日期,所以我希望尽可能接近最佳实践,即使它在开始时意味着一点学习曲线。
我非常感谢在正确的方向上进行友好的推动。
编辑以回复目前为止的答案
该解决方案将是100%全屏Silverlight应用程序。我对混合的Silverlight-Asp.net前端不感兴趣。
考虑到这一点 - 我想最大限度地重用模型并查看代码库的一部分,但只有在没有对新架构做出重大牺牲的情况下才有可能。
解决方案需要来自Microsoft或至少得到很好的支持。
如果RIA在发布前有可能发生变化,则完全没有争议。
第二次修改
感谢大家的出色答案。我对所有人都赞不绝口,但答案必须归结为史蒂夫,因为他的回答实际上是我应该问自己的一系列问题。
一旦我仔细研究了Prism和CSLA,我就会更新线程。
我爱你们所有人。
答案 0 :(得分:2)
这么多选择:-)您的选择可能取决于几个因素:
RIA服务可能是一个不错的选择,因为它可以让您至少重复使用您的模型和验证(如果您正在使用数据注释),但它有一些方法可能会在发布前更改。
另一个选项是一个开创性的Silverlight应用程序,我建议你看看PRISM和MVVM来构建它(如果只是为了保持初始有效负载!)。您可能可以重用您的模型,并且在Silverlight中支持数据注释,但您不会远重新创建新应用程序。
第三种选择,也就是您可能喜欢或讨厌的选择,就是在您的网站区域为SL构建具有丰富功能的“孤岛”。您可以使用现有的MVC应用程序,并且可能让ActionMethods返回您的SL区域可以使用和呈现的JSON(或XML,如果您愿意)。您可以重复使用代码,并且可以单独增强网站的区域。
开放式问题的开放式答案: - )
编辑 :根据您的回答判断,如果是我,我会创建一个PRISM应用。如果它当前是一个Web应用程序,它应该与区域模型“相当”(尽管您实际上不会重用任何视图代码),如果您想要一个全屏应用程序,动态XAP加载将有助于您的初始有效负载。如果它是基于CRUD的应用程序,那么您可能需要查看XAML Power Toys以快速将数据表单放在一起。
Datawise你可以重用你的模型并通过WCF或ADO.Net数据服务公开它,等待RIA服务稳定(取决于你的时间尺度)或者仍然使用MVC操作方法但是为SL应用程序返回它们的JSON消费。
答案 1 :(得分:1)
你可能想看看CSLA框架,虽然并不适合所有人,但它是一个不错的,易于使用且功能强大的框架。
作者Rockford Lhotka还为Silverlight编写了一个版本,并提供了一个关于如何使用CSLA和Silverlight创建应用程序的视频系列,以帮助开发人员快速上手。
您可以查看一些链接:
答案 2 :(得分:1)
我个人会为一个相当大的应用程序投票支持棱镜,RIA确实有“上线”许可证,但我还是相信它。记住你可以混合搭配。
答案 3 :(得分:1)
我们已经走了几个月了。我们正在使用Prism和RIA服务。我认为有一点学习曲线,但我喜欢Prism并且在网上有一些支持。
RIA服务有点不确定,但我认为值得使用。我们在7月预览版之后很快就开始尝试使用它,并且没有太多的在线文档可供查看。过去几个月过去了,我们已经成功实现了我们想要的目标,并且有更多的在线示例和解决方案可以提供帮助。微软正在推动它,我认为它们最终会实现。