WCF MVC вызывает хранимые процедуры - PullRequest
0 голосов
/ 25 января 2012

Я разрабатываю приложение MVC3 для университетского проекта. Я надеюсь использовать WCF в качестве веб-службы, чтобы иметь возможность подключаться к удаленной базе данных, используя хранимые процедуры. У меня сейчас нет времени изучать Entity Framework.

Мой вопрос: где хранить имена хранимых процедур? Должна ли модель MVC передавать имена хранимых процедур службе WCF вместе со значениями и т. Д. Или модель должна просто вызывать метод в службе WCF, который будет хранить имя хранимой процедуры и обрабатывать этот аспект?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 25 января 2012

Мой вопрос: где хранить имена хранимых процедур?

На уровне доступа к данным, который находится в вашем сервисном проекте WCF.Приложение ASP.NET MVC 3 только вызывает метод для этой службы.Помните, что приложение ASP.NET MVC не знает, что такое база данных, и тем более, что такое хранимая процедура.Приложение ASP.NET MVC работает только с моделями, контроллерами и представлениями.

Таким образом, в вашем сервисном проекте WCF у вас будет контракт на обслуживание:

[ServiceContract]
public interface IMyService
{
    SomeModel Get(int id);
}

, тогда вы можете иметь реализацию вслужба WCF, которая будет отправлять и извлекать данные, где бы они ни хранились (в вашем случае это будет база данных SQL, а способ извлечения этих данных - это вызов хранимой процедуры):

public class MyService: IMyService
{
    public SomeModel Get(int id)
    {
        // here you can call the stored procedure and return the corresopnding model
        ...
    }
}

Очевидно, этобудет тесно связывать ваш уровень обслуживания с данной технологией доступа к данным.Чтобы отделить его, вы могли бы установить другой уровень абстракции между службой и фактическим доступом к данным:

public class MyService: IMyService
{
    private readonly IMyRepository _repository;
    public MyService(IMyRepository repository)
    {
        _repository = repository;
    }

    public SomeModel Get(int id)
    {
        // you could do additional things in the service method
        // like validating the arguments, call data access methods, ...
        return _repository.Get(id);
    }
}

, и фактический вызов хранимой процедуры будет выполняться в конкретной реализации SQL репозитория, которая будетвнедряется в вашу службу вашей DI-инфраструктурой.

В приложении ASP.NET MVC вы будете использовать службу WCF только из строго типизированного клиентского прокси-сервера, сгенерированного для вас при добавлении ссылки на службу.

0 голосов
/ 25 января 2012

Имена хранимых процедур должны храниться в слое / библиотеке доступа к данным, которая находится между вашей службой WCF и вашей реальной базой данных. То есть в классах, чьи методы вы вызываете в службе WCF для получения данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...