2013-04-29 11 views
1

У меня есть вопрос дизайна. Я строю портал, который потребляет сторонние сервисы.нужны инструкции с WCF и MVC 4 desgin

Я поставил эту услугу в DLL и при инициализации одного класса DLL я передать адрес службы для одной службы (и так далее до остальных услуг - некоторые из них с другим адресом)

public LogonService (string address) 
     { 
      EndpointAddress epA = new EndpointAddress (address); 
      proxyClient = new LogonServicePortTypeClient ("LogonServicePort" , epA); 
      //added this InspectorBehavior for logging and errrors 
      proxyClient.Endpoint.EndpointBehaviors.Add (new InspectorBehavior()); 

     } 

это мой конструктор. , то, в частности, у меня есть все возможности LogonService (вход, выход из системы, обновление и т. Д.), Это один пример одной службы, их немного).

Эта DLL используется в интернет-приложении MVC 4. Я думал, что добавить папку BusinessLogic для хранения класса на класс DLL, который будет инициировать службу, как показано, и передать результат контроллерам таким образом, чтобы контроллер мог понять. (это моя идея дизайна)

if (again IF) этот дизайн в приятной форме я хотел бы знать, где и как будет наилучшая практика инициализации этих классов DLL, хранения их для повторного использования и т. Д.

, чтобы подвести итог моему длинному вопросу:
1. Является ли это действующим проектом?
2. Где в процессе применения я должен инициализировать эти классы Dll?
3. Как я могу хранить эти экземпляры службы (уважение производительности)?
4. последний, если этот дизайн нелогичен, что тогда будет рекомендованный дизайн?

Благодаря Гилад

ответ

2

Первая вещь, которую я рекомендовал бы пойти на рамки DI, как замок или Unity. Это уберет большую головную боль для инициализации класса и сделает ваши классы более проверенными.

Кроме того, внешняя настройка конечной точки в xml (в разделе system.serviceModel). Я чувствую, что плавная конфигурация конечной точки довольно отвлекает.

+0

thanks.i теперь проверит рамки Unity. я не могу поместить адрес в файл конфигурации, потому что он может быть изменен, поскольку сторонняя служба также является «продуктом», который может продаваться многим различным клиентам, которые будут его реализовывать (таким образом, каждый раз он будет иметь другой адрес) – gilad

+0

это не полный ответ, через несколько дней я обнаружил, что Unity - отличный способ «сортировать» вещи или из ... Спасибо за указание на Unity для меня – gilad

0

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

Я больше отношусь к вашему 3) вопросу. В итоге я создал экземпляр службы для каждого WS-вызова (поскольку только несколько пользователей использовали веб-приложение, и действительно не часто, я не заботился о производительности). Однако меня очень заинтересовало бы мнение кого-то по этому поводу.

Я также согласен с комментарием aquaraga. Вы должны использовать столько, сколько можете для файла конфигурации. Я вошел во многие проблемы, когда разработчики жестко закодировали часть конфигурации в своем приложении.

+0

спасибо за ответ. причина, по которой я не использую конфигурационный файл, - дать пользователю возможность выбрать своего провайдера.предоставляя возможность вводить данные провайдера на странице входа. Это делает сайт более универсальным и проверяемым из многих сред - не только одного жесткого кода в файле конфигурации. – gilad