WCF DAL组件

时间:2010-08-11 04:54:14

标签: wcf

我有一个在多个应用程序中复制的DAL(我知道它设计不好但现在忽略它),我想要做的就是这个...

创建一个将通过所有桌面应用程序访问的WCF DAL组件。任何人都可以分享他们对以下内容的看法吗?

  1. 我打算使用TCP Binding
  2. 性能方面的开销是多少(因为1个DAL组件将通过多个应用程序消耗)?
  3. 由于TCP绑定只能在IIS-7.0上托管,这将是硬件+ s / w的另一个开销(或者可以在顶部使用HTTP绑定,在其下面使用TCP,以便我可以使用IIS版本5或6)???
  4. 我可以为多个应用程序提供多个端点,并且从性能的角度来看是好的,因为它将帮助我们为不同的客户端应用程序创建不同的线程,并且将来也可以有diff合同,以便一个应用程序不受影响DAL ..
  5. 在这种情况下首选实例化模式(我们预计每天有100个并发用户的流量),DAL已使用SINGLETON设计模式处理此问题。
  6. 让我知道你对上述各点的看法,以及你是否能为我提供更多的见解......将是b gr8。

    提前致谢...

1 个答案:

答案 0 :(得分:3)

我来回答一下:

1)netTcpBinding是一个很棒的绑定 - 非常快,非常好的性能 - 绝对适合那个!

3)在IIS 7.0中主机,或者然后是自主机 - 编写一个小的Windows NT服务并自己处理主机。为您提供更多控制,以及手动启动和停止DAL服务的能力。我甚至不愿意尝试让NetTcp在IIS5 / 6上运行某种技巧/黑客 - 浪费时间。

4)同一个绑定的多个端点既没有用,也没有帮助提高性能。

5)我总是使用“Per-Call”。每个服务请求都获得自己的服务实例,处理调用,然后就完成了。这使得对WCF服务实现的编程变得轻而易举 - 如果你单独使用,要有任何性能,你需要担心多线程和线程安全的编程 - 真是一团糟。不要这样做。不,只是不要这样做。

DAL应该始终是无状态的,并且应该在“尽可能晚地打开数据库连接,完成工作,并尽快关闭连接”上再次运行模式,这非常适合每个呼叫实例模式。当您的服务请求进入时,将打开连接(无论如何,这些都连接在ADO.NET中的连接池中,服务器端),工作已完成,连接再次关闭。