Повышение производительности запуска ASP.NET MVC

Я пытаюсь улучшить скорость запуска моего приложения MVC2.

Я сделал первый раунд выборки производительности, и оказалось, что

MvcAreaRegistration.RegisterAllAreas

занимает большую часть времени запуска.

Я читал здесь , что вы также можете вручную зарегистрировать область, и я хотел бы чтобы попробовать это, @property (assign) BOOL touchable; @end // basic ...

Допустим, у меня определены следующие протоколы:

// основной протокол для объекта пользовательского интерфейса:

@protocol UIObjectProtocol 
@property (assign) BOOL touchable;
@end

// основной протокол для объекта пользовательского интерфейса, который хранится объект держатель :

@protocol UIHeldObjectProtocol 
@property (readonly) id holder;
@end

И следующая иерархия классов:

// базовый класс для объекта пользовательского интерфейса, который синтезирует свойство touch ]

@interface UIObject : NSObject  {
   BOOL _touchable;
}
@end

@implementation UIObject
@synthesize touchable=_touchable;
@end

На этом этапе, все ок. Затем я создаю подкласс UIObject с именем UIPlayingCard . По сути, UIPlayingCard соответствует UIObjectProtocol , так как его суперкласс тоже делает это.

Теперь предположим, что я хочу, чтобы UIPlayingCard соответствовала UIHeldObject42]. , поэтому я делаю следующее:

@interface UIPlayingCard : UIObject  {
}
@end

@implementation UIPlayingCard
-(id)holder { return Nil; }
@end

Обратите внимание, что UIPlayingCard соответствует UIHeldObjectProtocol , который транзитивно соответствует UIObjectProtocol . Однако я получаю предупреждения компилятора в UIPlayingCard такие, что:

предупреждение: для свойства 'touchable' требуется метод '-доступный' подлежит определению - используйте @synthesize, @dynamic или предоставьте реализация метода

, что означает, что соответствие суперкласса UIPlayingCard UIObjectProtocol не было унаследовано (возможно, потому, что директива @synthesize была объявлена ​​в ] Область реализации UIObject ).

Обязан ли я повторно объявить директиву @synthesize в реализации UIPlayingCard ?

@implementation UIPlayingCard
@synthesize touchable=_touchable; // _touchable now must be a protected attribute
-(id)holder { return Nil; }
@end

Или есть другой способ избавиться предупреждения компилятора? Будет ли это результатом плохого дизайна?

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

10
задан Eduardo Coelho 2 March 2011 в 14:49
поделиться