我有一个包含多个项目的大型MVC解决方案。我打算用WCF服务创建一个单独的解决方案,并移动一些资源匮乏的项目。想法是MVC应用程序将与WCF通信以满足任何计算要求。
问题是我不知道如何调用已经具有服务接口的现有类和接口。我的班级/界面:
public interface IHelloWorld
{
string SayHello(string name);
}
public class HelloWorld : IHelloWorld
{
public string SayHello(string name)
{
return string.Format("Hello, {0}", name);
}
}
班上有100种方法。并非所有人都只接触到WCF中的一部分。
现在我必须在新创建的WCF服务中调用此类。我不确定:
我有点困惑应该是最好的方法。我不想修改现有的类,但想添加一个新的服务,我可以从那里连接和调用。新的svc.cs文件是:
[ServiceContract]
public interface IHelloWorldService
{
[OperationContract]
string SayHello(string name);
}
public class HelloWorldService : IHelloWorldService
{
private IHelloWorld helloWorld = new HelloWorld();
public string SayHello(string name)
{
return helloWorld.SayHello(name);
}
}
这个当前的设计似乎在重复现有的类/接口。不确定这是否正确。请帮忙。
答案 0 :(得分:1)
我是否已修改现有类以转换为svc.cs(service),或者我可以创建单独的服务文件并在那里调用现有方法?
不,因为你说不是所有的方法都需要暴露。
这个当前的设计似乎在重复现有的类/接口。不确定这是否正确。请帮忙。
是的,如果您正在执行问题中显示的代码,那么它会重复。 您可以像这样编写服务代码;
[ServiceContract]
public interface IHelloWorldService
{
[OperationContract]
string SayHello(string name);
}
public class HelloWorldService : IHelloWorldService
{
private IHelloWorld helloWorld = new HelloWorld();
public string SayHello(string name)
{
return helloWorld.SayHello(name);
}
}
通过在服务上使用IHelloWorld
合同,您不会复制逻辑,只需要通过HelloWorldService合约公开所需的方法。