关于在本地LAN上实现服务的一些建议。 WCF与.Net Remoting

时间:2009-05-19 10:32:46

标签: .net wcf remoting

我正在设计一个资源访问层,它将位于由5个工作站和7个服务器组成的LAN上的数据库服务器上。我对资源访问层的意图是将一组定义良好的C#方法暴露给LAN上的任何C#(。Net 3.5)客户端,并允许客户端访问存储在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消息传递,如果数据要遍历互联网并被多个平台访问,这正是您想要的,但这可能会对我的需求有点过分。 LAN上的所有平台都是windows vista或windows server 2008,都安装了.net 3.5。没有必要将数据序列化为XML,因为所有数据都是可能需要访问它的平台的原生数据。我的另一个问题是速度。该层需要尽可能快,如果需要将数据转码为XML,则会产生开销。

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

对于长期问题道歉,欢迎任何建议。

感谢您的时间,

詹姆斯

3 个答案:

答案 0 :(得分:2)

WCF非常快,对于正确设计的用法,它通常比.NET远程处理更快。 Adinochestva发布的第一篇文章讨论了序列化.NET DataSet的性能,这是最糟糕的情况。

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

接近结尾处有各种绑定及其使用的序列化方法的描述。

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

希望您会发现WCF的好处超过其限制。

答案 1 :(得分:0)

您可以看到比较here或微软制作的比较here 但如果选择使用wcf,请确保您没有为每个请求创建ChannelFactory

答案 2 :(得分:0)

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