2009-04-13 2 views
2

У нас есть несколько проектов в нашей системе, которые хотят использовать один и тот же asmx webservice. Кто-нибудь имеет какие-либо рекомендации/рекомендации по тому, как это сделать.Повторное использование веб-сервисов asmx в нескольких проектах

Проблема заключается в том, что веб-службы постоянно меняются, поэтому я не могу просто добавить веб-ссылку на производство. Также это опасно, потому что при разработке я хочу, чтобы он указывал на мою локальную машину. Должен ли я просто добавлять свои веб-ссылки на localhost?

Также должен ли я иметь специализированные проекты webservices, а не asmx-файлы, разбросанные по нескольким проектам?

Thanks

ответ

2

Одним из основных моментов веб-сервисов является то, что они могут использоваться повторно, поэтому вы можете использовать его везде, где сможете.

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

-Edit-

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

Это должно касаться вашей основной проблемы. У вас есть проект локального веб-сервиса, а также местные проекты, которые его потребляют. Вы развертываете либо, либо оба, эти проекты для производства по мере необходимости.

+0

Не могли бы вы указать мне на то, что рекомендует иметь отдельные проекты веб-сервиса. – Ryu

+0

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

0

Не уверен, что я понимаю ваш вопрос. Если вы публикуете веб-службу в производственной среде, все, что вам нужно сделать, это добавить в нее веб-ссылку в каждом приложении, которое ее требует. Вся предпосылка использования веб-службы заключается в том, что вы делаете ее доступной - если вы используете ее только в своей среде разработки, возможно, вы хотите использовать ее как стандартную DLL C#, которую вы распространяете или оставляете в GAC?

0

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

0

При разработке, просто укажите ссылку в Интернете на локальную машину и запустите веб-службу локально. Я не вижу в этом никаких проблем.

+0

будет ли он работать, когда я переведу его на производство? – Ryu

+0

В процессе производства вы должны установить правильный URL-адрес для его работы. Просто прочитайте URL-адрес из файла конфигурации и установите его во время выполнения. – ibz

0

Если я правильно понял ур, вы хотели бы иметь веб-сервис разработки и веб-сервер производства. Производственный экземпляр - это последняя отлаженная/проверенная сборка. Экземпляр отладки - это текущая сборка, над которой вы работаете.

Мой рекомендуемый метод, чтобы добиться этого, было бы иметь поддомен dev, чтобы вы могли иметь как веб-сервисы, например. http://www.myapp.com/Service.asmx и http://dev.myapp.com/Service.asmx. Оба субдомена будут другим сайтом в IIS. В вашем коде вы привязывали бы веб-ссылки к поддомену dev, поскольку этот домен был бы тем, который вы использовали бы для обновления веб-ссылок (при изменении параметров). Затем вы использовали «#if not debug», чтобы изменить URL-адрес объекта веб-сервиса на сайт www для создания (выпуска) кода.

Таким образом, вы будете строить против службы отладки, пока не будете довольны этим. В этот момент вы можете обновить свое программное обеспечение (если параметры были изменены) и загрузить новую dll на сайт выпуска.

Я бы сохранил веб-службы в отдельном проекте, чтобы упростить развертывание сборки.

0

Вы должны создать проект библиотеки классов и определить свой веб-сервис там. Обратитесь к этому проекту в свое веб-приложение. Затем в файле asmx webservice укажите его в класс webservice.

Смежные вопросы