Как я могу иметь службу WCF с несколькими классами?
Я хочу что-то подобное
Service1.svc.cs
namespace MyService
{
public class User : IUser
{
ExternalLibrary.User externalUser = new ExternalLibrary.User();
public string GetName()
{
return externalUser.GetName();
}
public bool SetName(string name)
{
return externalUser.SetName(name);
}
}
public class Device : IDevice
{
ExternalLibrary.Device externalDevice = new ExternalLibrary.Device();
public string GetDeviceName()
{
return externalDevice.GetDeviceName();
}
public bool SetDeviceName(string name)
{
return externalDevice.SetDeviceName(name);
}
}
}
Теперь я пытаюсь найти способ реализовать эти классы на интерфейсе WCF. Я пытался это не работает не работает:
namespace MyService
{
[ServiceContract]
public interface IMyService : IUser, IDevices
{
// nothing here
}
public interface IUSer
{
string GetName();
bool SetName(string name);
}
public interface IDevice
{
string GetDeviceName();
bool SetDeviceName(string name);
}
}
Причина, по которой я пытаюсь сделать это, заключается в том, что у меня слишком много внешних классов, и я не хочу создавать объекты для всех них каждый раз, когда я вызываю службу, просто чтобы получить имена пользователей. Любое предложение?
1 ответ
Решение
Если вы хотите их по одному контракту на обслуживание, я думаю, что вы можете сделать
namespace MyService
{
[ServiceContract]
public interface IMyService : IUSer, IDevice
{
[OperationContract]
string GetName();
[OperationContract]
bool SetName(string name);
[OperationContract]
string GetDeviceName();
[OperationContract]
bool SetDeviceName(string name);
}
public interface IUSer
{
string GetName();
bool SetName(string name);
}
public interface IDevice
{
string GetDeviceName();
bool SetDeviceName(string name);
}
}
Затем объявите две частичные версии класса MyService
каждый из которых реализует соответствующий интерфейс, например
namespace MyService
{
public partial class MyService : IUser
{
ExternalLibrary.User externalUser = new ExternalLibrary.User();
public string GetName()
{
return externalUser.GetName();
}
public bool SetName(string name)
{
return externalUser.SetName(name);
}
}
public partial class MyService : IDevice
{
ExternalLibrary.Device externalDevice = new ExternalLibrary.Device();
public string GetDeviceName()
{
return externalDevice.GetDeviceName();
}
public bool SetDeviceName(string name)
{
return externalDevice.SetDeviceName(name);
}
}
}