Your SlideShare is downloading. ×

DLR Hosting

1,600

Published on

Slides from 10 meeting of spb alt.net group

Slides from 10 meeting of spb alt.net group

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,600
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Движение впередИзучение новогоПоддержание компетенций и конкурентноспособностиНа гребне волны
  • Так что же за зверь такой, этот ваш DLR?Почему я должен знать об этом?
  • Ок, всё отлично, DLR – это круто, как я могу его использовать?
  • Известные науке способы применения DLR хостинга
  • DLR Hosting Spec26.01.2008ScriptRuntime– стартовая точка хостингаScriptScope– область исполнения, хранение переменныхScriptEngines– имплементация языка, работают со скопом. Один движок на зяык в рантайме.ScriptSource– исходный код, мн-во вариантов исполнения и компиляции, вид кода: выражения, утвержденияCompiledCode– компиленный код, для многократного использования, исполнять в скопе для свежих данныхObjectOperations– операции над объектами из движков
  • Все любят поиграться?
  • Отлично, для всех есть решения!
  • А что же нужно функциям?
  • Функции высших порядков
  • Transcript

    • 1. DLR
      hosting
      VitalyBaum
      Alt.NetSpb Group
      butaji.ru
      spbalt.net
    • 2. «Единственное счастье в жизни —
      это постоянное стремление вперед.»
      ЭмильЗоля
    • 3. DLR – WTF?
      DLR – Что это?
    • 4. DLR - что это?
      Среда
      Исполнения
      Динамических
      Языков
    • 5. DLR - что это?
      Первое упоминание состоялось на Mix’07
      1 мая 2007 года
    • 6. DLR - что это?
    • 7. DLR - что это?
      Позволяет реализовать динамические языки на .NET
      Предоставляет динамические возможности для статических языков
    • 8. DLR - что это?
      http://msmvps.com/blogs/jon_skeet/archive/2009/06/19/os-jam-at-google-london-c-4-and-the-dlr.aspx
    • 9. DLR - что это?
      Возможности для имплементированных языков при развитии .NET:
      Garbage collector (GC)
      Just-in-time compiler (JIT)
      Sandbox Security Model («Песочница»)
      Tools (Visual Studio, SQL Server)
    • 10. DLR - что это?
      Все библиотеки, реализованные для .NET доступны нам в динамических языках.
      http://blogs.msdn.com/blogfiles/codeplex/WindowsLiveWriter/CodePlexinDenmarkandSweden_C442/DSC03124.jpg
    • 11. DLR - что это?
      http://github.com
      Все библиотеки, реализованные на динамических языках доступны нам также.
    • 12. DLR - что это?
      В текущее время Microsoft поддерживает двереализации на DLR:
      IronPythonдоступен вopen source наwww.codeplex.com/ironpython.
      IronRubyдоступен в open source наhttp://rubyforge.org/projects/ironruby.
    • 13. DLR - что это?
      May 22 2009
      v0.91
      http://dlr.codeplex.com/
    • 14. DLR - что это?
    • 15. DLR - что это?
      Введения в CLR для взаимодействия с динамическими языками:
      Expression trees(семантика языка)
      Call site caching(ускорение операций)
      Dynamic object interoperability(точка взаимодействия)
    • 16. DLR - что это?
      The One True Object
      http://blogs.msdn.com/hugunin/archive/2007/05/02/the-one-true-object-part-1.aspx
    • 17. DLR - что это?
      The One True Object
      http://blogs.msdn.com/hugunin/archive/2007/05/02/the-one-true-object-part-1.aspx
    • 18. DLR - что это?
      http://msdn.microsoft.com/en-us/library/dd233052(VS.100).aspx
    • 19. DLR hosting
      Хостинг DLR в .NET приложениях
      http://farm3.static.flickr.com/2017/2047711131_d4ce321ca9.jpg
    • 20. DLRHosting
      Исполнение фрагментов кода
      Исполнение кода из файлов
      Компиляция кода
      Области исполнения и переменные
    • 21. DLRHosting
      В вашем браузере с помощью SilverLight
      На сервере MerlinWeb
      Интерактивные консоли, причём ScriptRuntime может быть в другом приложении
      Средства редактирования с подсветкой кода, кодкомплитом и справкой (могут работать только на live объектах в 1ой версии)
      PowerShell, C#, и VB.NET используют динамические объекты и работаютс ними в том же домене
    • 22.
    • 23. DLRHosting
    • 24. DLRHosting
    • 25. DLRHosting
    • 26. DLRHosting
    • 27. DLRHosting
      Виды хостинга:
      Активный
      Пассивный
      Дуплексный
    • 28. DLRHosting
      Активный
      app.close
    • 29. DLRHosting
      Пассивный
      pyfunc(x)
    • 30. DLRHosting
      Дуплексный
      x
      y =func(x)
      y
    • 31. DLRHosting
    • 32. DLRHosting
      REPL 
      Read-eval-print loop
    • 33. DLRHosting
      http://www.iunknown.com/2009/05/dynamic-languages-at-teched-2009.html
    • 34. DLRHosting
      Проблема:
      Не получается использовать Extension Methods, следовательно и LINQ.
    • 35. DLRHosting
      Решение:
      Свой код
      Унаследованный код
    • 36. DLRHosting
      Adapt
      your code
    • 37. DLRHosting
      public class ClassToBeExtended {}
      public static class DemoExtensionClass
      {
      public static string Foo(thisClassToBeExtended c)
      {
      return"Bar";
      }
      }
      http://blogs.msdn.com/saveenr/archive/2008/11/14/consuming-extension-methods-in-ironpython.aspx
    • 38. DLRHosting
      >>> c1 = ClassToBeExtended() >>> c1.Foo() Traceback (most recent call last):   File "<stdin>", line 1, in <module> AttributeError: 'ClassToBeExtended' object has no attribute 'Foo' 
    • 39. DLRHosting
      usingMicrosoft.Scripting;
      [assembly: Microsoft.Scripting.Runtime.ExtensionType(     typeof(ClassToBeExtended),     typeof(DemoExtensionClass)
      )]
    • 40. DLRHosting
      >>> c1 = ClassToBeExtended() >>> c1.Foo() 'Bar' 
    • 41. DLRHosting
      Legacy code
    • 42. DLRHosting
      Создаём Proxy, и действуем по
      «правилам своего кода»
    • 43. Linq 2 Object vsPython
      [myFunc(i) for i in numbers if i >3]
      from i in numbers
      where i > 3
      selectmyFunc(i)
    • 44. Linq 2 Object vsPython
      Funcs
      need that
    • 45. Linq 2 Object vsPython
      SelectWhereAggregate
      mapfilterreduce
    • 46. Linq 2 Object vsPython
      map(myFunc,
      filter(lambdax: x >3, numbers))
    • 47. Linq 2 Object vsPython
      Queryable.Select(
      Queryable.Where(numbers, x => x > 3),
      myFunc)
    • 48. Linq 2 XML vs Python
      head =soup.contents[0].contents[0] head.parent.name
      # u'html'
      soup.findAll('p', align="center")
      # [<p id="firstpara" align="center">This is paragraph <b>one</b>. </p>]
      Beautiful Soup
      http://www.crummy.com/software/BeautifulSoup/
    • 49. IronPythonClass != .NET Class
      class Calculator(object):defadd(self, a, b):    returna + b
      http://stackoverflow.com/questions/579272/instantiating-a-python-class-in-c
    • 50. IronPythonClass != .NET Class
      ScriptEngine engine = Python.CreateEngine();ScriptSource source =engine.CreateScriptSourceFromFile(
      "Calculator.py");ScriptScope scope = engine.CreateScope();ObjectOperationsop = engine.Operations;
    • 51. IronPythonClass != .NET Class
      // создается класс
      source.Execute(scope); // получаем класс
      object calculator = scope.GetVariable("Calculator");
      // создаём экземплярobject instance = op.Invoke(calculator);
      // получаем методobject method = op.GetMember(instance, "add");
      // вызываем метод
      intresult = (int)op.Call(method, 4, 5);
    • 52. IronPythonClass != .NET Class
      ScriptRuntimepy = Python.CreateRuntime();
      dynamichelloworld = py.UseFile("helloworld.py");
      helloworld.Calculator().Add(1, 10)
      .NET 4.0
    • 53. DLR + sharepoint
      Расширяем c помощью DLR приложение на SharePoint
    • 54. IPy 4 SPD
      SharePoint Designer позволяет производить настройку
      Не является инструментом разработчика
      3-х этапный рабочий процесс – существует по-умолчанию
      Почему бы не сделать его расширяемым?
    • 55. IPy 4 SPD
      Задача:
      Предоставить системному администратору возможность создавать рабочие процессы и расширять их с помощью Python-сценариев
    • 56. IPy 4 SPD
    • 57. IPy 4 SPD
      __actprops__ (свойства раб. процесса)__site__ (текущийSPSite)__web__ (текущий SPWeb)__list__ (текущий SPList)__item__ (текущаяSPListItem)
    • 58. IPy 4 SPD
      defFindManager(userName, ldapPath):
      importclr
      clr.AddReference("System.DirectoryServices")
      importSystem.DirectoryServices as ds
      adFolder = ds.DirectoryEntry(ldapPath)
      adSearcher = ds.DirectorySearcher(adFolder)
      adSearcher.SearchScope = ds.SearchScope.Subtree
      adSearcher.Filter = "(&(objectClass=user)(samaccountname=" + userName + "))"
      adResult = ds.SearchResult
      try:
      adResult = adSearcher.FindOne()
      returnadResult.Properties["Manager"][0].Split(",")[0].Substring(3)
      except:
      return
      # the ldapPath structure may vary for you.
      mgr = FindManager("yourusername","LDAP://yourdomaincontroller/DC=yourdomain,DC=com")
    • 59. IPy 4 SPD
      Решение:
      Расширяем инструмент
      Обрабатываем и исполняем скрипты
    • 60. IPy 4 SPD
      Ответ:
      Демо
    • 61. twimilar
      Моё приложение с использованием анализа данных
    • 62. Twimilar
      Задача:
      Необходимо писать большое количество формул, которым требуется выразительная форма представления (псевдокод).
    • 63. Twimilar
      Решение:
      Создаём точку расширения
      Пишем функции на Python
    • 64. Twimilar
      Ответ:
      Демо
    • 65. Gestalt - DIY
      Создаём Gestalt сами
    • 66. Gestalt
      Клиентскую часть в веб-приложениях принято создавать на Javascript
      Большинство веб-разработчиков с огромным удовольствием бы отошли от этого правила и воспользовались своим любимым server-side языком.
    • 67. Gestalt
    • 68. Gestalt
      Задача:
      Сделать, чтобы заработало следующее:
      <script type="python">
      deffunc():
          HtmlPage.Window.Alert("Hello world!")
        
      func()
      </script>
    • 69. Gestalt
      Решение:
      Читаем скрипт из Html
      Создаем Script Runtime
      Исполняем скриптв Silverlight
    • 70. Gestalt
      Ответ:
      Демо
    • 71. Real-life dlR hosting
      Примеры существующих приложений с DLR хостингом
    • 72. Real-life DLR hosting
    • 73. Real-life DLR hosting
    • 74. Real-life DLR hosting
    • 75. Работа на IronPythonсо всеми основными технологиями Microsoft
      IronPython in Action
    • 76. Materials
      http://dlr.codeplex.com/
      http://blogs.msdn.com/seshadripv/default.aspx
      http://blogs.msdn.com/mmaly/default.aspx
      http://ironpython-urls.blogspot.com/
      http://blogs.msdn.com/hugunin/
    • 77. Вопросы
      и
      Ответы

    ×