【问题标题】:Some advice on implementing services on a local LAN. WCF vs .Net Remoting关于在本地 LAN 上实施服务的一些建议。 WCF 与 .Net 远程处理
【发布时间】:2009-05-19 10:32:45
【问题描述】:

我正在设计一个资源访问层,它将位于由 5 个工作站和 7 个服务器组成的 LAN 上的数据库服务器上。我对资源访问层的意图是向 LAN 上的任何 C# (.Net 3.5) 客户端公开一组定义良好的 C# 方法,并允许客户端访问存储在 DBMS 中的数据,而无需了解数据是如何存储的被访问。这基本上是一个简单抽象的练习。

到目前为止,我已经配置了一个对象关系映射器来从 DBMS (MS SQL Server 2008) 中检索作为实体的数据。然后我编写了一个简单的数据访问类,它使用这些实体来检索和插入数据。示例方法包括 GetUser(Int ID) 和 SetUser(Int ID, String username, String password)。所有方法都采用和返回本机类型,而不是实体对象或类似的包装器。

我想让这个类在 LAN 上远程访问,这样任何 C# 客户端代码都可以使用相同的单例类来访问简单格式的数据。在 .Net 2.0 时代,显而易见的选择是使用 .Net 远程处理并声明类以继承 MarshalByRefObject。然而,随着 .Net 3.5 和 WCF 的到来,有更多的选择。

到目前为止,我一直不愿意将 WCF 用于资源访问层。据我了解,所有数据都作为 SOAP 消息传递,如果数据要遍历 Internet 并被多个平台访问,这正是您想要的,但这对于我的需求来说可能有点过头了。 LAN 上的所有平台都是 windows vista 或 windows server 2008,都安装了 .net 3.5。没有真正需要将数据序列化为 XML,因为所有数据都是可能需要访问它的平台的本机数据。我担心的另一个问题是速度。该层需要尽可能快,如果需要将数据转码为 XML,则会产生开销。

我正在寻找有关在这种情况下使用的最佳 .Net 技术的任何建议。我可能忽略了 WCF 可以为我提供的一个重要好处,或者可能有一种方法可以配置 WCF 以使用非常基本的有效负载。但是,如果我的担忧是有根据的,那么我将使用 .Net 远程处理来代替它。

抱歉,问题很长,欢迎提出任何建议。

感谢您的宝贵时间,

詹姆斯

【问题讨论】:

    标签: .net wcf remoting


    【解决方案1】:

    WCF 速度非常快,而且对于正确设计的使用,它通常比 .NET 远程处理更快。 Adinochestva 发布的第一篇文章讨论了序列化 .NET 数据集的性能,这是最坏的情况。

    为了帮助您决定将哪种绑定与 WCF 一起用于您的目的,请查看 CoDe 杂志上的这篇文章。顶部的流程图非常有用: http://www.code-magazine.com/article.aspx?quickid=0605051&page=3

    在结尾处有对各种绑定和它们使用的序列化方法的描述。

    使用 .NET 远程处理,您还需要在客户端和服务上共享二进制依赖项,这不是 WCF 的要求。通过这种方式,您可以获得远程处理无法获得的版本控制支持。远程处理也是 Microsoft 不再投资的一项技术……不过,他们正在大力投资 WCF。

    希望您会发现 WCF 的好处大于其局限性。

    【讨论】:

      【解决方案2】:

      你可以看到一个比较 here 或微软所做的比较 here 但是如果选择使用 wcf ,请确保不要为每个请求创建 ChannelFactory

      【讨论】:

        【解决方案3】:

        使用 WCF,您可以使用非常快的 TCP/IP 绑定,但只能在 Windows 平台上工作(在您的情况下可以)。它就像任何网络服务一样工作,除了它使用 net.tcp://

        而不是绑定到 http://

        【讨论】:

          猜你喜欢
          • 2011-05-22
          • 2011-12-24
          • 2010-10-11
          • 2016-08-13
          • 1970-01-01
          • 2019-03-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多