Я узнаю о веб-службах WCF и обеспокоен всеми связями, которые вижу. На мой взгляд, я должен быть в состоянии написать компонент и затем использовать его где угодно - внутри процесса, через интрасеть или со страницы ASP.NET, и нужно всего лишь изменить способ его размещения.
Как только вы начинаете работать с System.ServiceModel.Web, вы начинаете украшать свои ServiceOperations такими вещами, как:
[OperationContract]
[WebGet]
string EchoWithGet(string s);
Правильно, связь метода с сетью. Можете ли вы использовать подобный контракт в сервисе, который будет размещен в proc?
И в некоторых примерах, которые я смотрю, я также вижу код:
public class FavoriteMovieService : IFavoriteMovie
{
MyFavoriteMovie item = new MyFavoriteMovie();
public MyFavoriteMovie GetItem()
{
if(item == null)
throw new WebProtocolException(HttpStatusCode.NotFound, "Not found.", null);
return item;
}
}
Вы бы не хотели создавать исключение, подобное этому, в коде вашего сервиса, если вы размещали in-proc, верно ??
Есть ли еще хорошие способы написания веб-сервисов WCF, и, надеюсь, RESTful, которые не требуют такой тесной связи с сетью? Кажется, что победить всю цель WCF.
Я понимаю, что, возможно, просто неправильно что-то понимаю, так как я новичок в предоставлении такого рода услуг WCF, но мне любопытно.
Пожалуйста, просветите меня. :)