У нас есть некоторые вещи ASP.NET (они недостаточно четко обозначены, чтобы называть его компонентом), которые мы хотели бы очистить и обернуть некоторые границы, чтобы мы могли использовать их повторно. На самом деле это четыре части, некоторая разметка, немного кода C #, некоторый javascript, выполняемый в браузере, и метод веб-сервиса, который вызывается javascript.
Один из способов очистки этого состоит в том, чтобы переместить разметку в пользовательский элемент управления, C # - в методы code-behind пользовательского элемента управления, javascript - в файл, который будет включен в страницу code-behind. метод и веб-сервис в статический метод в коде позади. (Конечно, при условии, что я могу пометить статический метод в пользовательском элементе управления как WebMethod и заставить его работать, что я еще не пробовал.)
В любом случае, вышесказанное не будет работать для нас, потому что мы хотим создать компонент, который мы можем включить в несколько проектов. А это означает, что нам нужен компонент, который мы можем включить в DLL, а это означает, что вместо пользовательского элемента управления используется элемент управления сервером.
Контроль сервера, конечно, означает отсутствие разметки. HTML должен быть введен в страницу с помощью C #. Это не проблема, мы сделали это раньше. Включение javascript в качестве ресурса и вставка элемента управления сервером на страницу не кажется слишком сложным. Я еще этого не сделал, но я вижу множество примеров того, как это сделать, поэтому я уверен, что смогу это выяснить.
Но часть этого, я не уверен, что понимаю, все же, это веб-сервис. Этот элемент управления будет включать JavaScript, который будет выполнять обратные вызовы веб-сервису. Веб-сервис будет взаимодействовать только с серверным элементом управления, но ему нужно будет общаться с той же базой данных, с которой взаимодействует веб-приложение, включающее серверный элемент управления. То есть, это не та ситуация, когда мы можем настроить отдельный автономный веб-сервис, с которым будут взаимодействовать все экземпляры серверного элемента управления, нам нужен отдельный веб-сервис, включенный в каждое веб-приложение, которое включает в себя серверный элемент управления.
Дело в том, что, поскольку серверный элемент управления включен в DLL, мы бы хотели, чтобы код этой веб-службы также был включен в DLL. Прямо сейчас все, о чем я могу думать, это определить класс внутри DLL, который выполняет всю работу, которая требуется веб-сервису, который затем может быть вызван веб-сервисом, который мы определяем в веб-приложении. Но я не очень доволен этим. В моем идеальном мире простое включение элемента управления сервером в веб-приложение автоматически включало бы и настраивало веб-сервис, с которым ему нужно было общаться. Но я не знаю, как это сделать, и я не уверен, что это возможно.
Итак, я ищу возможности приблизиться к этому в ASP.NET 3.5.
Идеи