DLR Hosting

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Notes on slide 1

    Движение впередИзучение новогоПоддержание компетенций и конкурентноспособностиНа гребне волны

    Так что же за зверь такой, этот ваш DLR?Почему я должен знать об этом?

    Ок, всё отлично, DLR – это круто, как я могу его использовать?

    Известные науке способы применения DLR хостинга

    DLR Hosting Spec26.01.2008ScriptRuntime– стартовая точка хостингаScriptScope– область исполнения, хранение переменныхScriptEngines– имплементация языка, работают со скопом. Один движок на зяык в рантайме.ScriptSource– исходный код, мн-во вариантов исполнения и компиляции, вид кода: выражения, утвержденияCompiledCode– компиленный код, для многократного использования, исполнять в скопе для свежих данныхObjectOperations– операции над объектами из движков

    Все любят поиграться?

    Отлично, для всех есть решения!

    А что же нужно функциям?

    Функции высших порядков

    Favorites, Groups & Events

    DLR Hosting - Presentation 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. DLRHosting
    23. DLRHosting
    24. DLRHosting
    25. DLRHosting
    26. DLRHosting
      Виды хостинга:
      Активный
      Пассивный
      Дуплексный
    27. DLRHosting
      Активный
      app.close
    28. DLRHosting
      Пассивный
      pyfunc(x)
    29. DLRHosting
      Дуплексный
      x
      y =func(x)
      y
    30. DLRHosting
    31. DLRHosting
      REPL 
      Read-eval-print loop
    32. DLRHosting
      http://www.iunknown.com/2009/05/dynamic-languages-at-teched-2009.html
    33. DLRHosting
      Проблема:
      Не получается использовать Extension Methods, следовательно и LINQ.
    34. DLRHosting
      Решение:
      Свой код
      Унаследованный код
    35. DLRHosting
      Adapt
      your code
    36. 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
    37. DLRHosting
      >>> c1 = ClassToBeExtended() >>> c1.Foo() Traceback (most recent call last):   File "<stdin>", line 1, in <module> AttributeError: 'ClassToBeExtended' object has no attribute 'Foo' 
    38. DLRHosting
      usingMicrosoft.Scripting;
      [assembly: Microsoft.Scripting.Runtime.ExtensionType(     typeof(ClassToBeExtended),     typeof(DemoExtensionClass)
      )]
    39. DLRHosting
      >>> c1 = ClassToBeExtended() >>> c1.Foo() 'Bar' 
    40. DLRHosting
      Legacy code
    41. DLRHosting
      Создаём Proxy, и действуем по
      «правилам своего кода»
    42. Linq 2 Object vsPython
      [myFunc(i) for i in numbers if i >3]
      from i in numbers
      where i > 3
      selectmyFunc(i)
    43. Linq 2 Object vsPython
      Funcs
      need that
    44. Linq 2 Object vsPython
      SelectWhereAggregate
      mapfilterreduce
    45. Linq 2 Object vsPython
      map(myFunc,
      filter(lambdax: x >3, numbers))
    46. Linq 2 Object vsPython
      Queryable.Select(
      Queryable.Where(numbers, x => x > 3),
      myFunc)
    47. 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/
    48. IronPythonClass != .NET Class
      class Calculator(object):defadd(self, a, b):    returna + b
      http://stackoverflow.com/questions/579272/instantiating-a-python-class-in-c
    49. IronPythonClass != .NET Class
      ScriptEngine engine = Python.CreateEngine();ScriptSource source =engine.CreateScriptSourceFromFile(
      "Calculator.py");ScriptScope scope = engine.CreateScope();ObjectOperationsop = engine.Operations;
    50. 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);
    51. IronPythonClass != .NET Class
      ScriptRuntimepy = Python.CreateRuntime();
      dynamichelloworld = py.UseFile("helloworld.py");
      helloworld.Calculator().Add(1, 10)
      .NET 4.0
    52. DLR + sharepoint
      Расширяем c помощью DLR приложение на SharePoint
    53. IPy 4 SPD
      SharePoint Designer позволяет производить настройку
      Не является инструментом разработчика
      3-х этапный рабочий процесс – существует по-умолчанию
      Почему бы не сделать его расширяемым?
    54. IPy 4 SPD
      Задача:
      Предоставить системному администратору возможность создавать рабочие процессы и расширять их с помощью Python-сценариев
    55. IPy 4 SPD
    56. IPy 4 SPD
      __actprops__ (свойства раб. процесса)__site__ (текущийSPSite)__web__ (текущий SPWeb)__list__ (текущий SPList)__item__ (текущаяSPListItem)
    57. 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")
    58. IPy 4 SPD
      Решение:
      Расширяем инструмент
      Обрабатываем и исполняем скрипты
    59. IPy 4 SPD
      Ответ:
      Демо
    60. twimilar
      Моё приложение с использованием анализа данных
    61. Twimilar
      Задача:
      Необходимо писать большое количество формул, которым требуется выразительная форма представления (псевдокод).
    62. Twimilar
      Решение:
      Создаём точку расширения
      Пишем функции на Python
    63. Twimilar
      Ответ:
      Демо
    64. Gestalt - DIY
      Создаём Gestalt сами
    65. Gestalt
      Клиентскую часть в веб-приложениях принято создавать на Javascript
      Большинство веб-разработчиков с огромным удовольствием бы отошли от этого правила и воспользовались своим любимым server-side языком.
    66. Gestalt
    67. Gestalt
      Задача:
      Сделать, чтобы заработало следующее:
      <script type="python">
      deffunc():
          HtmlPage.Window.Alert("Hello world!")
        
      func()
      </script>
    68. Gestalt
      Решение:
      Читаем скрипт из Html
      Создаем Script Runtime
      Исполняем скриптв Silverlight
    69. Gestalt
      Ответ:
      Демо
    70. Real-life dlR hosting
      Примеры существующих приложений с DLR хостингом
    71. Real-life DLR hosting
    72. Real-life DLR hosting
    73. Real-life DLR hosting
    74. Работа на IronPythonсо всеми основными технологиями Microsoft
      IronPython in Action
    75. 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/
    76. Вопросы
      и
      Ответы

    + Vitaly BaumVitaly Baum, 3 months ago

    custom

    329 views, 0 favs, 0 embeds more stats

    Slides from 10 meeting of spb alt.net group

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 329
      • 329 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 2
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories