Справочная информация. Мне нужно выпустить простой проект, который будет использоваться для транспортировки данных из моего хранилища в другое место (другие разработчики, которые будут использовать мой WCF. WCF будет использоваться для транспортировки данных (To . защиты БД и так далее) я использовал лук архитектуру в моем проекте (базовые части)Как использовать DomainModel Into WCF
--------------------------------------
| WCF |
| ---------------------------------- |
| | Interfaces for working with DB | |
| | ------------- | |
| | |DomainModel| | |
| | ------------- | |
| -----------------------------------|
--------------------------------------
я показать мои problen на простом примере:.
у меня DomainModel так:
[DataContract]
public class User
{
private string _name;
private List<Text> _texts;
public User(string name, List<Text> texts)
{
_name = name;
_texts = texts;
}
[DataMember]
public string Name { get { return _name; } }
[DataMember]
public List<Text> Texts { get { return _texts; } }
}
[DataContract]
public class Text
{
private string _name;
public Text(string name)
{
_name = name;
}
[DataMember]
public string Name { get { return _name; } }
}
службы WCF есть этот метод:
public DomainModel.User ReturnUser()
{
User user = new User("Texts",
new List<Text>()
{
new Text("TextOne"),
new Text("TextTwo")
});
return user;
}
Но когда я вызываю метод
static void Main(string[] args)
{
try
{
ServiceRomanClient client = new ServiceRomanClient();
User user = client.ReturnUser();
Console.WriteLine(user.Name);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
Я получаю это исключение: Это может быть связано с сервисной конечной точки связывания не с использованием протокола HTTP. Это также может быть связано с тем, что контекст HTTP-запроса прерывается сервером (возможно, из-за отключения службы). Подробнее см. Журналы сервера.
Если изменить Propertis в DomainModel на этом (я добавил набор)
[DataContract]
public class User
{
private string _name;
private List<Text> _texts;
public User(string name, List<Text> texts)
{
_name = name;
_texts = texts;
}
[DataMember]
public string Name { get { return _name; } set{ _name = value; } }
[DataMember]
public List<Text> Texts { get { return _texts; } set { _texts = value; } }
}
[DataContract]
public class Text
{
private string _name;
public Text(string name)
{
_name = name;
}
[DataMember]
public string Name { get { return _name; } set{ _name = value;} }
}
Я не не имеют execption, но я нарушу S.O.L.I.D principels.
Я хочу не добавлять набор в DomainModel, я предлагаю, чтобы лучший способ решить эту проблему - создать транспортный уровень между DomainModel и WCF.
Буду признателен, если вы сможете дать мне свои мысли из своего опыта.
Такое четкое и простое решение. Большое спасибо. Я добавил частный набор {_name = value; } –