Веб-службы ActionScript и веб-метод класса вызвать


Я пытаюсь изолировать веб-сервиса в своем классе, и я планирую добавить отдельные классы для каждого атрибутом webmethod есть в веб-службе. Что у меня до сих пор работает, но у меня такое чувство щекотки, что я что-то пропустил (за исключением невидимой объявления переменных сюда, я не хочу засорять страницу).

Класса WebService экземпляра и его обработчика ошибок:

 public class CfdWS
        {

            [Bindable] 
            private var model:ModelLocator = ModelLocator.getInstance();

            public function loadWebService():WebService{
                var webService : WebService = new WebService();
                webService.wsdl = model.configXML.cfdwsWSDL;
                webService.addEventListener(FaultEvent.FAULT, onWebServiceFault);
                webService.loadWSDL();
                return webService;
            }

            private function onWebServiceFault(event:FaultEvent):void{
                var fault: Fault = event.fault;
                var message:String = "\ncodigo: " + fault.faultCode;
                message += "\nDetalle: " + fault.faultDetail;
                Alert.show("Error de webservice:" + message);
            }
        }
    }

Ниже приведен мой метод WebService класс звонок. Я написал только то, что я думаю, является основным код для вопрос.

public class GeneratePDF extends CfdWS{

    public function generatePDF():void{
                webService = loadWebService();
                webService.addEventListener(LoadEvent.LOAD, doGeneratePDF);
            }
            private function doGeneratePDF(event:LoadEvent):void{
                webService.generatePDF.addEventListener(ResultEvent.RESULT, generatePDFResultHandler);
                webService.generatePDF(pdfData);
            }
            private function generatePDFResultHandler (event:ResultEvent):void{
                // After getting what I want, I remove the event listeners here.
            }
}

Я пытаюсь переписать приложение, которое уже находится в производстве, пока на стадии тестирования (тестирование следующей версии я имею в виду).



474
5
задан 23 сентября 2011 в 04:09 Источник Поделиться
Комментарии
1 ответ

Я не понимаю, зачем вы помещаете каждый метод сервиса в отдельный класс. "Метод" - это функция класса. Я думаю, что вы хотели отделить код, но делать это таким образом вы заставите много накладных расходов:


  • служба создается для каждого "метод" называется, а потом, надеюсь, мусора (как вы удалить прослушиватели событий и больше нет обращений к сервису слева)

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

  • CfdWS - не описательное имя; Ваш способ разделения кода заставит вас сделать три или даже в пять раз больше занятий, чем вы это обычно, поэтому я ожидаю, что ад на файл-именования уровне

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

Я думаю, вы уже поняли выгоду из хорошей реализацией MVC, то попробуйте Robotlegs, очень облегчает жизнь:
http://www.robotlegs.org/

5
ответ дан 15 сентября 2012 в 07:09 Источник Поделиться