Guest User

Untitled

a guest
Oct 19th, 2017
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.57 KB | None | 0 0
  1. // Интерфейс сервиса анализа паттернов проектирования
  2. interface IPatternAnalyzer
  3. {
  4. DesignPatterns AnalyzePatterns(string url);
  5. }
  6.  
  7. // Прокси класс, инкапсулирующий в себе особенности работы
  8. // с WCF инфраструктурой
  9. class PatternAnalyzerProxy : IPatternAnalyzer
  10. {
  11. class PatternAnalyzerClient : ClientBase<IPatternAnalyzer>
  12. {
  13. public IPatternAnalyzer ChannelAnalyzer
  14. {
  15. get { return Channel; }
  16. }
  17. }
  18.  
  19. public DesignPatterns AnalyzePatterns(string url)
  20. {
  21. return UseProxyClient(pa => pa.AnalyzePatterns(url));
  22. }
  23.  
  24. private T UseProxyClient<T>(Func<IPatternAnalyzer, T> accessor)
  25. {
  26. var client = new PatternAnalyzerClient();
  27.  
  28. try
  29. {
  30. var result = accessor(client.ChannelAnalyzer);
  31. client.Close();
  32. return result;
  33. }
  34. catch (CommunicationException e)
  35. {
  36. client.Abort();
  37. throw new OperationFailedException(e);
  38. }
  39. }
  40. }
  41.  
  42. namespace patterns.TemplateMethod
  43. {
  44. class WCF_Template_Method
  45. {
  46. public static void Main()
  47. {
  48. PatternAnalyzerProxy _p = new PatternAnalyzerProxy();
  49. _p.AnalyzePatterns("www.yandex.ru");
  50. }
  51. }
  52.  
  53. class DesignPatterns
  54. {
  55.  
  56. }
  57. // Интерфейс сервиса анализа паттернов проектирования
  58. interface IPatternAnalyzer
  59. {
  60. DesignPatterns AnalyzePatterns(string url);
  61. }
  62.  
  63. // Прокси класс, инкапсулирующий в себе особенности работы
  64. // с WCF инфраструктурой
  65. class PatternAnalyzerProxy : IPatternAnalyzer
  66. {
  67. class PatternAnalyzerClient: IPatternAnalyzer
  68. {
  69. public IPatternAnalyzer ChannelAnalyzer
  70. {
  71. get { return new PatternAnalyzerProxy(); }
  72. }
  73.  
  74. public DesignPatterns AnalyzePatterns(string url)
  75. {
  76. throw new NotImplementedException();
  77. }
  78. }
  79. public DesignPatterns AnalyzePatterns(string url)
  80. {
  81. return UseProxyClient(pa => pa.AnalyzePatterns(url));
  82. }
  83. private T UseProxyClient<T>(Func<IPatternAnalyzer, T> accessor)
  84. {
  85. var client = new PatternAnalyzerClient();
  86. var result = accessor(client.ChannelAnalyzer);
  87. return result;
  88. }
  89. }
  90. }
  91.  
  92. return UseProxyClient(pa => pa.AnalyzePatterns(url));
Add Comment
Please, Sign In to add comment