在ASP.NET-WCF应用程序中,我想在客户端和服务器之间共享域类和业务规则,而不是重写它们,就像在Silverlight RIA Services中一样。在一个程序集中收集这些并从客户端和服务器引用它可以解决问题,但是如何:通过向客户端添加服务refence将在客户端代理中生成这些类,而不需要任何行为(方法)。我怎么能得到这个?
注意:不会使用RIA服务。
编辑:经过一些谷歌搜索后,我遇到了CSLA.NET。它可以解决这个问题吗?答案 0 :(得分:4)
好的就是我是如何做到的:正如blowdart所说,我把所有想要在服务器和客户端之间共享的域代码放到一个单独的程序集中。然后我让服务器和客户端都引用了这个共享程序集。然后添加了对客户端的服务引用,但有一个例外:在添加服务引用对话框中,有一个“高级”按钮。我在已引用的程序集中检查了重用类型。这样我就可以为我生成所有代理好东西,异步方法调用等。
答案 1 :(得分:3)
您完全避免使用客户端代理。
首先,将合同类放入共享程序集中,并在服务器和客户端程序中添加对项目的引用。在客户端中,您可以使用ChannelFactory创建与WCF服务的连接并交换数据;
之类的东西ChannelFactory<IServiceContract> factory;
factory = new ChannelFactory<IServiceContract>("");
IServiceContract proxy = factory.CreateChannel();
using(proxy as IDisposable)
{
proxy.MyMethod();
}