Я разрабатываю слой доступа к ресурсам, который будет располагаться на сервере базы данных в локальной сети, состоящей из 5 рабочих станций и 7 серверов. Мое намерение для уровня доступа к ресурсам состоит в том, чтобы предоставить набор четко определенных методов C # любому клиенту C # (.Net 3.5) в локальной сети и позволить клиенту получать доступ к данным, хранящимся в СУБД, не зная, как эти данные доступ к Это в основном упражнение в простой абстракции.
До сих пор я настроил объектный реляционный преобразователь для извлечения данных как объектов из СУБД (MS SQL Server 2008). Затем я написал простой класс доступа к данным, который использует эти объекты для извлечения и вставки данных. Примеры методов включают GetUser (Int ID) и SetUser (Int ID, имя пользователя String, пароль String). Все методы принимают и возвращают нативные типы, а не объекты-сущности или аналогичные оболочки.
Я хочу сделать этот класс удаленно доступным в локальной сети, чтобы любой клиентский код C # мог использовать один и тот же одноэлементный класс для доступа к данным в простом формате. Во времена .Net 2.0 очевидным выбором было бы использование удаленного взаимодействия .Net и объявление класса для наследования MarshalByRefObject. Однако с появлением .Net 3.5 и WCF появилось много других возможностей.
До сих пор я неохотно использовал WCF для уровня доступа к ресурсам. Насколько я понимаю, все данные передаются в виде сообщений SOAP, и это именно то, что вам нужно, если данные будут проходить через Интернет и быть доступными для нескольких платформ, но это может быть слишком сложным для моих нужд. Все платформы в локальной сети - либо Windows Vista, либо Windows Server 2008, на всех установлен .net 3.5. Нет реальной необходимости сериализации данных в формате XML, поскольку все данные являются родными для платформ, которым может потребоваться доступ к ним. Другое беспокойство у меня есть скорость. Этот уровень должен быть максимально быстрым, если данные должны быть перекодированы в XML, будут созданы накладные расходы.
Я ищу любые советы по лучшим технологиям .Net для использования в этой ситуации. Возможно, я упустил из виду существенную выгоду, которую может предложить WCF, или может быть способ настроить WCF для использования самых основных полезных нагрузок. Однако, если мои проблемы хорошо обоснованы, я буду использовать .Net remoting вместо него.
Извините за длинный вопрос, любой совет будет приветствоваться.
Спасибо за ваше время,
Джеймс