WCF DAL КОМПОНЕНТ - PullRequest
       1

WCF DAL КОМПОНЕНТ

2 голосов
/ 11 августа 2010

У меня есть DAL, который реплицируется между несколькими приложениями (я знаю, что это плохой дизайн, но пока игнорирую это), что я хочу сделать, это ...

Создать компонент DAL WCF, который будетдоступ ко всем приложениям для настольных компьютеров. Может ли кто-нибудь поделиться своими мыслями о том, как выполнить следующие действия?

  1. Я намереваюсь использовать привязку TCP
  2. Каковы будут издержки с точки зрения производительности (поскольку1 компонент DAL будет потребляться через несколько приложений) ???
  3. Поскольку привязка TCP может быть размещена только на IIS-7.0, это будет дополнительным расходом с точки зрения аппаратного обеспечения + ш / б (или возможно связывание HTTP сверху и TCP снизу, чтобы я могиспользовать IIS версии 5 или 6) ???
  4. Могу ли я иметь несколько конечных точек для нескольких приложений, и это хорошо с точки зрения производительности, так как это поможет нам создавать разные потоки для разных клиентских приложений и может иметь разностные контракты в будущем, так что одно приложение останется неизменнымИз-за изменений в DAL ..
  5. Какой режим Instancing предпочтителен в этом случае (мы ожидаем трафик 100 одновременных пользователей в день), и DAL уже обрабатывает это, используя шаблон проектирования SINGLETON.

Дайте мне знать ваши мысли по всем вышеупомянутым пунктам, а также, если вы могли бы дать мне более глубокое понимание этого ... будет b gr8.

Заранее спасибо ...

1 Ответ

3 голосов
/ 11 августа 2010

Позвольте мне ответить на несколько вопросов:

1) netTcpBinding - это отличное связывание - очень быстрое, очень хорошее по производительности - обязательно с этим!

3) Либо хост в IIS 7.0, либо самовывоз - напишите немного службы Windows NT и сами управляйте хостингом. Предоставляет вам больше контроля и возможность вручную запускать и останавливать службу DAL. Я бы даже не стал пытаться заставить NetTcp работать на IIS5 / 6 с какой-то хитростью / хаком - трата времени.

4) Несколько конечных точек одной и той же привязки бесполезны и не помогают с производительностью.

5) Я бы всегда использовал «Per-Call». Каждый запрос на обслуживание получает свой экземпляр службы, вызов обрабатывается, и тогда все готово. Это делает программирование реализации службы WCF несложным - если вы идете в одиночку, чтобы иметь какую-либо производительность, вам нужно беспокоиться о многопоточном и поточно-ориентированном программировании - беспорядок, действительно. Не делай этого. НЕТ, просто не делай этого.

DAL всегда должен быть без сохранения состояния и должен работать с шаблоном «откройте соединение с базой данных как можно раньше, выполните работу и закройте соединение как можно скорее», который идеально подходит для экземпляра для каждого вызова Режим. Когда приходит ваш запрос на обслуживание, соединение открывается (они все равно объединяются в пул соединений в ADO.NET на стороне сервера), работа завершается, и соединение снова закрывается.

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