Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Интерфейс сервиса анализа паттернов проектирования
- interface IPatternAnalyzer
- {
- DesignPatterns AnalyzePatterns(string url);
- }
- // Прокси класс, инкапсулирующий в себе особенности работы
- // с WCF инфраструктурой
- class PatternAnalyzerProxy : IPatternAnalyzer
- {
- class PatternAnalyzerClient : ClientBase<IPatternAnalyzer>
- {
- public IPatternAnalyzer ChannelAnalyzer
- {
- get { return Channel; }
- }
- }
- public DesignPatterns AnalyzePatterns(string url)
- {
- return UseProxyClient(pa => pa.AnalyzePatterns(url));
- }
- private T UseProxyClient<T>(Func<IPatternAnalyzer, T> accessor)
- {
- var client = new PatternAnalyzerClient();
- try
- {
- var result = accessor(client.ChannelAnalyzer);
- client.Close();
- return result;
- }
- catch (CommunicationException e)
- {
- client.Abort();
- throw new OperationFailedException(e);
- }
- }
- }
- namespace patterns.TemplateMethod
- {
- class WCF_Template_Method
- {
- public static void Main()
- {
- PatternAnalyzerProxy _p = new PatternAnalyzerProxy();
- _p.AnalyzePatterns("www.yandex.ru");
- }
- }
- class DesignPatterns
- {
- }
- // Интерфейс сервиса анализа паттернов проектирования
- interface IPatternAnalyzer
- {
- DesignPatterns AnalyzePatterns(string url);
- }
- // Прокси класс, инкапсулирующий в себе особенности работы
- // с WCF инфраструктурой
- class PatternAnalyzerProxy : IPatternAnalyzer
- {
- class PatternAnalyzerClient: IPatternAnalyzer
- {
- public IPatternAnalyzer ChannelAnalyzer
- {
- get { return new PatternAnalyzerProxy(); }
- }
- public DesignPatterns AnalyzePatterns(string url)
- {
- throw new NotImplementedException();
- }
- }
- public DesignPatterns AnalyzePatterns(string url)
- {
- return UseProxyClient(pa => pa.AnalyzePatterns(url));
- }
- private T UseProxyClient<T>(Func<IPatternAnalyzer, T> accessor)
- {
- var client = new PatternAnalyzerClient();
- var result = accessor(client.ChannelAnalyzer);
- return result;
- }
- }
- }
- return UseProxyClient(pa => pa.AnalyzePatterns(url));
Add Comment
Please, Sign In to add comment