我有一个Windows窗体应用程序(c#)和一个asp.NET Web应用程序,它们都访问Sql Server数据库。我想集中数据库访问。我应该遵循哪些metedologies?这个问题的常见方法是什么?
答案 0 :(得分:2)
我会选择WCF方法。请记住,当(不是在何时)必须进行与一个应用程序相关的更改而不是另一个应用程序的更改时,您将不得不在公共层中考虑到这一点,因此使用接口可能会使您的生活成为现实更容易。
答案 1 :(得分:1)
最干净的方法是使用WCF服务包装数据库。
如果您不是一次性写入大量数据,则可以使用WCF数据服务;这直接包装了一个Entity Framework模型,您可以通过各种方式配置对表和方法的访问。
你想要的是有一个访问数据库的地方,所以如果有问题,你可以在一个地方修复它,例如。
此外,例如,如果要记录对特定表的所有调用,确保完成所有调用的唯一方法是通过这种方式集中对数据库的所有调用,而不允许任何人直接访问数据库。
包装服务,然后保密连接字符串。
答案 2 :(得分:0)
选项1似乎更简单,我也会这样做 带有WCF的选项2将为您的产品添加额外的代码,从而进行维护。这也意味着一个额外的层。
答案 3 :(得分:0)
企业程序员喜欢第二种选择(WCF服务包括DAL)。
答案 4 :(得分:0)
我认为使用SOA
方法确实更好( WCF 或 WebServices 与DAL层),因为这样您就不需要发布使用Windows窗体dll
进行DAL exe
。然后,您的数据模型的所有更改都将自动发生在两个UI客户端上。
请记住,这可能会导致问题:
关注安全性,以便您无法通过网址直接访问服务,从而允许某人运行您的方法。
关注维护,因为需要仅影响一个界面的数据层更改将更难以控制,需要更好地进行规划(通过创建特定于某些间隙的新方法)。
性能下降,因为HTTP访问总是比直接与dll通信更昂贵。
与服务器缺乏通信的风险,这是ASP.NET期望的,但在Windows Forms客户端中需要额外的关注才能在这些情况下正常运行。