我有一個包含多個項目的大型MVC解決方案。我打算用WCF服務創建一個單獨的解決方案,並移動一些高度資源匱乏的項目。想法是,MVC應用程序將與WCF通信以滿足任何計算需求。如何將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(服務)或我可以創建一個單獨的服務文件,並調用現有的方法呢?
- 服務類還需要一個將在web.config(端點合同)中定義的接口。我是否必須創建一個單獨的接口,只需要公開的方法,或者我必須使用類庫中的現有接口?如果我使用類接口,那麼我必須在web.config中提及相同的內容。
我有點困惑什麼應該是最好的方式來做到這一點。我不想修改現有的類,但想添加一個新的服務,我可以從那裏連接和調用。新的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);
}
}
這個目前的設計似乎我重複現有的類/接口。不知道這是否是正確的方法。請幫忙。
是的,這是我的錯誤。感謝指出它,我也更新了我的帖子。無論如何,我想知道這是否是最好的方式。 – sarojanand
另外我想知道我的類「HelloWorld」是否有15個屬性,是否需要在具有'[DataMember]'屬性的'HelloWorldService'類中添加所有這些屬性? – sarojanand
@sarojanand - 是的,您需要包含DataMember屬性,否則該屬性將不可用於通過服務公開的類型。 –