我有一个ASP.NET 3.5电子商务网站,它有一个管理部分。我想换掉基于ASP.NET的管理部分并在Silverlight 2中重写它.Silverlight需要异步调用,所以我不能只从新的SL2应用程序调用我现有的DAL。
做这样的事情的最佳做法是什么?我应该创建一个WCF服务并通过它调用我现有的DAL,还是应该将所有内容移植到WCF,或者我应该只将异步调用添加到现有的非WCF DAL中。寻找关于做这样事情的最佳方式的建议。
编辑:所以我正在阅读的是,最好的方法是利用我现有的DAL并创建一个简单的WCF服务,该服务引用该DAL并包装调用。 WCF服务只是作为中间人来进入我的DAL,而是将其公开给Silverlight。如果你从头开始怎么办?您是否应该将DAL构建为WCF服务,并从WPF客户端,ASP.NET客户端,Silverlight客户端,任何其他消费者等开始使用该服务。
答案 0 :(得分:8)
您通常希望避免将数据访问代码放入Silverlight应用程序中,因为用户可以轻松地对代码进行反向工程。事实上,出于这个原因,Silverlight运行时不包含任何数据库通信框架类。
建议的最佳做法是使用WCF服务包装数据访问层,并从Silverlight调用WCF服务。有一篇关于这样做的好文章here。
答案 1 :(得分:6)
如果您需要在多个地方使用DAL,我建议您将其包装在WCF服务层中。
这将取决于您的DAL,但请尽量将现有代码包装在服务层中,而不是将所有重写为服务。这将为您提供最大的测试灵活性和未来的可扩展性。
答案 2 :(得分:0)
当然,如果您从头开始创建DAL,WCF服务是可用的不错选择。但我认为现在.NET RIA服务在这种情况下会是更好的选择。 .Net RIA服务仅适用于WCF服务。但允许更好的功能。
答案 3 :(得分:0)
RIA服务是现在最好的选择。另一种非WCF方式(在Silverlight中的大规模LOB应用程序中很难维护WCF数据访问)可能是在服务器和客户端之间交换数据的RESTful方式。
答案 4 :(得分:0)
我们是否可以拥有一个WCF托管层,并通过反射和T4代码生成访问已经实现的DAL组件。
使用现有DAL作为wcf服务公开的最佳做法是什么?