背景:我正在使用.NET WinForms应用程序(C#),其中包含数据层的ADO.net数据库。
问题:我现在如何开发这个,以便很容易迁移到通过HTTP Web服务或REST接口抽象数据层的模型?
例如,只使用带有Factory的标准C#接口来获得使用ADO.net的接口的具体实现是最好的吗?
感谢
答案 0 :(得分:2)
实际上,您要做的是将您的2层应用程序(应用程序< - >数据库)更改为n层系统(应用程序< - > App Server< - >数据库)。
这是复杂更改,因为您必须考虑安全性,业务逻辑和所有内容。
一个想法可能是使用像DataAbstract这样的第三方库。这是一个完整的n层框架,仍然允许LINQ等功能到远程数据源,并使n层开发变得非常简单。它还提供了一个Web服务界面,可以从任何来源轻松访问应用程序层中的业务逻辑。更进一步,它为您提供了iPhone和Windows Mobile的客户端库,它们允许您更快地(因为二进制)访问该层。您只需要在没有DataAbstract的平台上使用Web服务接口。
答案 1 :(得分:1)
你已经击中了头 - 它是关于抽象的。现在就从业务逻辑中抽象出特定于存储的语义开始。开发一个干净的,面向对象的DAL并通过它完成所有CRUD / Query操作,而您的对象模型(或域模型,如果您想识别两者之间的差异)可以使用具体类,则应定义DAL操作在一个界面中。您是否使用工厂取决于您的特定用例,但如果您正在开发这种抽象,那么采用控制容器的反转并通过依赖注入处理这种连接是有意义的。 There are lots to choose from。
答案 2 :(得分:1)
您永远不会想要使用REST接口抽象DAL。 REST接口是您直接向“用户代理”公开的内容。您永远不会希望业务层通过REST使用数据。
唯一的例外是,如果您的主要目标是将原始数据公开给某个远程第三方。