Много Сервис Арендатора API для Предприятий и Бизнес-логики

У нас есть приложение, где мы хотим выставить большое количество объектов базы данных и некоторой бизнес-логики. Каждый объект потребует способности Читать, Добавить, и Обновление. в этой точке мы не ожидаем позволять удаление.

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

Мы хотим смочь минимизировать количество конечных точек, которые должны сохраняться. В данный момент существует только 3 таблицы быть выставленными, поскольку WCF соединяет интерфейсом с каждым с 6 приложенными методами. это управляемо, но если операция имеет 50 баз данных, который внезапно становится 150 конечными точками. хуже, если у нас есть 50 таблиц, выставил, который становится 2 500 конечными точками.

Делает у любого есть предложение о том, как мы могли разработать систему, что у нас все еще есть простая модель объекта Job.add (var1) или iList заданий = Job. GetSelected ("sql вводят чтение").

без всех этих конечных точек

7
задан John Saunders 25 January 2010 в 12:41
поделиться

5 ответов

Похоже, вы могли бы передать «удостоверение личности» к каждому запросу и принять это во внимание. Это означало бы, что каждая запись на вашем таблице «Работа» должна будет иметь ссылку на владельцу «Идентичность», но это не должно быть проблемой.

Просто убедитесь, что каждый запрос подтверждает «идентичность», и вы должны быть в порядке.

0
ответ дан 7 December 2019 в 20:37
поделиться

Если я правильно понимаю ваш вопрос, я думаю, вам нужны уникальные конечные точки, но вы можете иметь одно сервисное поведение, которое ваши конечные точки ссылки.

Создайте конечную точку по умолчанию:

<behaviors>
  <serviceBehaviors>
    <behavior name="MyService.DefaultBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>

Установите привязку по умолчанию:

<bindings>
  <wsHttpBinding>

    <binding name="DefaultBinding">
      <security mode="None">
        <transport clientCredentialType="None"/>
      </security>
    </binding>

  </wsHttpBinding>
</bindings>

У всех ссылочных ссылок на службу к поведению и привязке по умолчанию:

<service behaviorConfiguration="MyService.DefaultBehavior"
           name="MyService.Customer">
    <endpoint address="" binding="wsHttpBinding" bindingConfiguration="DefaultBinding"
              contract="MyService.ICustomer">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
  </service>

каждый раз, когда вы добавляете сервис, его простую запись конфигурации.

0
ответ дан 7 December 2019 в 20:37
поделиться

, обеспечивающие многоцендую, без конечных точек Bazillion

в один способ Перейти с WCF в стиле отдыха WCF , которые могут использовать имя пользователя / пароли для различения того, с какого клиента вы работаете, и, таким образом, сможете выбрать внутренне, какую БД для подключения к. WCF дает вам URITemplate , который позволяет вам отображать часть URL-адреса на параметрах в ваших веб-методах:

Вы можете добавить другие шаблоны URI для получения дополнительных задач, таких как следующее:

Используя мой сервис?

, требуя клиентов для предоставления имени пользователя и пароля, вы можете сопоставить это на определенную БД. И используя мочеиспускание / {tableName} / {rapue} / {params ...} Вы можете использовать код в вашей веб-сервисе, чтобы выполнить процедуры БД, приведенные таблицу, эксплуатацию и параметры.

Удаление его

Ваша веб-конфигурация не понадобится даже не изменено. В следующую серию веб-статьи - отличное место для изучения веб-сервисов в стиле отдыха, которые, как я полагаю, соответствует тому, что вам нужно: http://www.robbagby.com/rest/rest-in-wcf-blog-series -index /

0
ответ дан 7 December 2019 в 20:37
поделиться

с Apache Вы можете использовать довольно простой набор правил перезаписи URL-адреса для отображения произвольного набора таблиц таблиц БД и соответствующих конечных точек на одну конечную точку с параметром.

Например, для отображения $ root / table_name / column_name до $ root / index.php? Tn = table_name & cn = column_name, вы можете добавить правило, подобное $ root / .htaccess:

RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/?$ index.php?tn=$1&cn=$2 [QSA,L]

, тогда вам нужно только Сохранить $ root / index.php (что, конечно, может генерировать соответствующие коды состояния HTTP для несуществующих таблиц и / или столбцов).

0
ответ дан 7 December 2019 в 20:37
поделиться

Услуги данных WCF Позволяет восстановить ваши данные восстановленным образом с помощью открытых данных протокальных (ODATA). Это было формально названо службами данных ADO.NET и до этой Астории. Любая коллекция IQueryable может быть выставлена. Как показано в большинстве примеров, состоит в том, чтобы использовать структуру объекта, однако существуют примеры, показывающие использование NHIBERNATE и другими технологиями доступа к данным. Odata - это я, описывающий API на основе атома-паба с некоторыми настраивающими расширениями. Благодаря минимальному количеству кода вы можете разоблачить вашу базу данных в четко определенном формате. Это легкая часть.

Чтобы реализовать многоцендую, вы можете создавать перехватчики запроса в приложении WCF Data Services для реализации этой логики. Количество перехватчиков и сложность кода, который вы пишете, будут зависеть от модели безопасности и требований вашей безопасности. Глядя на что-то вроде шаблонов T4 или CODESMITH, чтобы генерировать методы перехватчика, основанные на вашей схеме базы данных, могут быть способом предотвращения повторных руководств по эксплуатации.

Ссылка I предоставлена, имеет много информации и учебных пособий по службам данных WCF и предоставит хорошее место для начала посмотреть, будет ли оно удовлетворить ваши потребности. Я смотрел на услуги по данным WCF для аналогичной проблемы (многоранминат), и хотел бы услышать, как вы нарекаете свое решение.

1
ответ дан 7 December 2019 в 20:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: