2011-05-24 72 views
3


我有一个windows窗体应用程序(c#)和一个asp.NET web应用程序,它们都访问Sql Server数据库。我想集中数据库访问。我应该遵循哪些术语?这个问题的通用方法是什么?来自多个应用程序的数据库访问

  • 写入DAL和模型库并在两个应用程序中使用它们?
  • 编写包含DAL模型的WCF服务,并将这个服务与这两个应用程序一起使用?
  • 以上都不是?

你能告诉我任何想法吗?
谢谢。

回答

0

我认为使用SOA做法真是再好不过了(WCFWeb服务有DAL层),因为这样你就不需要与Windows发布DAL dll窗体exe。然后,您的数据模型的所有更改将自动发生在您的两个UI客户端上。

请记住,这可能会导致其自身的问题:

  • 关注安全,使您的服务不能直接通过URL访问,让别人来运行你的方法。

  • 关注维护,因为只需要影响一个接口的数据层更改将更难以控制,并且需要在创建特定的intercace特有的新方法之前进行更好的规划。

  • 性能下降,因为HTTP访问总是比直接与dll通信成本更高。

  • 与服务器缺乏沟通的风险,这是ASP.NET所期望的,但在这些情况下需要Windows窗体客户端的额外关注才能正常运行。

+0

谢谢埃里克。使用SOA方法似乎更专业,但我应该考虑性能和安全性。 – Fer 2011-05-24 13:57:13

0

选项1似乎更简单,我也会这样做。
使用WCF的选项2将为您的产品添加额外的代码,从而维护。这也意味着一个额外的层。

2

我会用WCF的方法。请记住,如果(不是如果,何时)必须对一个应用程序进行更改,而不是其他应用程序,则必须在通用层中进行说明,因此使用界面可能会使您的生活变为现实更容易一点。

0

公司程序员喜欢第二个选项(包括DAL的WCF服务)。

1

最简洁的方法是用WCF服务包装数据库。

如果您一次不写大量数据,则可以使用WCF数据服务;这直接封装了实体框架模型,您可以通过各种方式配置对表和方法的访问。

你想要的是在一个地方访问数据库,这样如果出现问题,你可以在一个地方修复它。例如,如果要将所有调用记录到特定的表中,唯一的办法就是将所有对数据库的调用集中到这种方式,而不允许任何人直接访问数据库。

包装服务,然后保持连接字符串的秘密。

+0

嗨,罗伊。我将详细搜索WCF数据服务。它可能是有用的。 – Fer 2011-05-24 13:59:46

相关问题