Програмиране за платформа .NET

Едносеместриален изборен курс (4+0+0) за студенти от ФМИ

Document version: 1.7

Учебна програма (подробен вариант):

1.           Основни концепции в .NET

1.1. Какво представлява .NET платформата (Framework + Enterprise Servers + Development Tools)

1.2. Архитектура на .NET Framework

1.3. Common Language Runtime (CLR)

1.3.1.  Какво е CLR? Защо е Managed Execution Environment?

1.3.2.  Assemblies and Meta Data

1.3.3.  Intermediate Language (IL)

1.3.4.  Application Domains

1.4. Създаване и инсталиране на .NET компоненти

1.4.1.  Създаване на .NET компоненти и изпълними файлове

1.4.2.  Преносими изпълними файлове (Portable Executables)

1.4.3.  Private and Shared Assemblies

1.4.4.  Версии

1.5. Накратко за основната библиотека Framework Class Library (FCL) – I/O, Collections, Regular Expressions, Internet Classes, Data Access, Reflection

1.6. Типове данни

1.6.1.  Основни типове данни; Common Type System (CTS)

ü      Базов тип System.Object

ü      Value Types и Reference Types. Разлики. Кога се използват

ü      Изброими типове и битови флагове (еnum, Flags)

ü      Характеристики на обектите в .NET Framework. Членове и тяхната достъпност. Константи, полета, свойства. Методи, конструктури

1.6.2.  Работа с типове

ü      System.Object. Равенство на обекти. Метод Equals. Хеш-кодове. Клониране на обекти

ü      Специални конструктори (статични конструктори, частни конструктори)

ü      Предаване на типове по стойност и по адрес

ü      Конвертиране на типовете. Casting

ü      Оператори за работа с типове в C# - is, as, typeof

ü      Boxing and Unboxing

1.6.3.  Низове, масиви и колекции

ü  Низове и методи за обработката им (System.String)

ü  Конструиране на низове (StringBuilder)

ü  Масиви (System.Array). Едномерни масиви, многомерни масиви и масиви от масиви

ü  Колекции (System.Collections) – списъци, речници, хеш-таблици, сортирани списъци

1.6.4.  Интерфейси

1.6.5.  Делегати и събития

1.7. Управление на паметта и ресурсите. Финализация

1.8. Изключения. Управление на грешки и непредвидени ситуации чрез изключения

1.9. Потоци и файлове

1.9.1.  Потоци

ü  Основни операции – четене, писане, позициониране

ü  Буферирани потоци, изпразване (Flush)

1.9.2.  Четци и писачи

ü  BinaryReader/Writer

ü  TextReader/Writer; StreamReader/Writer и StringReader/Writer

ü  Encodings

1.9.3.  Работа с файлове

ü  FileStream

ü  За какво служат класовете File и FileInfo

ü  За какво служат класовете Directory и DirectoryInfo; за какво се използва класът Path

ü  За какво служи класът FileSystemWatcher

ü  Isolated Storage

1.10.  Сериализация на данни

1.11.  Средства за работа в мрежа и Интернет

2.           По-сложни концепции

2.1. Многонишково програмиране и асинхронно изпълнение

2.1.1.  Нишки. System.Threading.Thread.

2.1.2.  Синхронизация

ü      Проста синхронизация. Клас System.Threading.Monitor. Ключова дума lock.

ü      Проблем single-writer and multiple-reader. Клас System.Threading.ReaderWriterLock.

ü      Синхронизационни механизми, използващи реализация от операционната система – Mutex, AutoResetEvent, ManualResetEvent. Клас WaitHandle. Използване на методите WaitHandle.WaitAny и WaitHandle.WaitAll.

ü      Използване на атрибута MethodImplAttribute за синхронизация

ü      Синхронизиран достъп до колекции

2.2. Reflection

2.2.1.  Извличане на метаданните чрез класовете Type, TypeAttributes, MemberInfo, MethodInfo, FieldInfo, EventInfo, PropertyInfo, ConstructorInfo

2.2.2.  Динамично извикване на методи. Метод Invoke

2.2.3.  Динамично създаване на типове и асемблита чрез System.Reflection.Emit

2.3. Remoting

2.3.1.  Канали и форматери

2.3.2.  Активация; Проксита

ü      Server-side активация

ü      Client-side активация

2.3.3.  Живот на обектите

2.3.4.  Маршализация. Видове маршализация

ü      Marshal-by-value

ü      Marshal-by-reference

ü      Not-marshaled обекти

2.3.5.  Работа с remoting

ü      Конфигуриране на remoting – регистрация на обектите на сървъра и на клиента. Конфигуриране чрез конфигурационен файл

ü      Активиране на отдалечени обекти

2.3.6.  Техники за компилиране на клиентското приложение

2.4. Взаимодействие между Managed и Unmanaged код

2.4.1.  Platform Invoke

ü      Извикване на функции, намиращи се в DLL файлове; използване на атрибута DllImport

ü      Маршализация

2.4.2.  Използване на COM обекти от managed код

ü      Runtime callable wrappers; създаване на runtime callable wrapper

ü      Работа с COM threading модели - използване на свойството Thread.ApartmentState; атрибути [STAThread] и [MTAThread]

ü      Съответствие между сигнатурите на COM и .NET методи. Обработка на грешки. Атрибут [PreserveSig].

ü      Маршализация. Атрибут [MarshalAs].

ü      Техники за ускоряване на производителността. Атрибут [SuppressUnmanagedCodeSecurity].

2.4.3.  Използване на .NET обекти от COM клиенти

ü      COM callable wrappers

ü      Експортиране на type library за .NET асембли – интерфейси и класови интерфейси (class interface). Атрибут [InterfaceType]. Атрибут [ClassInterface].

ü      Регистриране на .NET компоненти като COM обекти в системното registry

2.5. Атрибути

3.           Работа с данни

3.1. ADO .NET

3.1.1.  Основни namespace-и и класове в ADO .NET

ü      Connection

ü      Command

ü      DataReader

ü      DataAdapter

3.1.2.  Работа с DataReader

3.1.3.  Работа с DataSet

ü      Updating database with DataSet and directly

ü      Създаване и използване на strongly-typed DataSets (XSD.EXE)

ü      DataSet-ове и XML

3.2. Работа с XML

3.2.1.  XML concepts

3.2.2.  Обработка на XML – XmlDocument, XmlTextReader, XmlValidatingReader, XmlTextWriter

3.2.3.  XPath – XPathDocument, XPathNavigator, XPathNodeIterator

4.           Windows Forms

4.1. Introduction – creating forms, adding controls, handling events

4.2. Windows Forms programming model – основни класове (Component, Control, ScrollableControl, ContainerControl, Form)

4.3. Основни контроли

4.4. DataGrid

5.           ASP.NET

5.1. Основни концепции

5.1.1.  ASP vs. ASP .NET

ü      Само името е общо, иначе си е направено наново

ü      По-висока продуктивност на разработчиците – повече декларативни тагове, за да се избегне писането на много код; по-ясно разделение между интерфейса и кода (codebehind).

ü      По-висока производителност на приложението – output caching, компилиран код

ü      Security improvements; web farm session state; easy deployment; etc.

5.1.2.  web.config

5.2. Web форми и контроли

5.2.1.  Web Form; System.Web.UI.Page

5.2.2.  Web контроли; namespace-ите System.Web.UI.WebControls and System.Web.UI.HtmlControls

5.2.3.  Control Execution Lifecycle (набързо – преглед на цикъла на изпълнение – за да е ясно после кое как става)

ü      Initialize (Init event)

ü      Load view state (LoadViewState method)

ü      Process Postback Data (LoadPostData method)

ü      Load (Load event)

ü      Send postback change notification (RaisePostDataChangedEvent method)

ü      Handle postback events (RaisePostBackEvent method)

ü      Prerender (Prerender event)

ü      Save state (SaveViewState method)

ü      Render (Render method)

ü      Dispose (Dispose method)

ü      Unload (Unload event)

5.2.4.  Съхранение на състоянието

ü      Application state

ü      Session state

ü      View state

5.2.5.  Потребителски контроли

5.2.6.  DataGrid и DataList контроли; Работа с DataGrid; DataView

5.3. Web Services

5.3.1.  Въведение – HTTP, WSDL, SOAP

5.3.2.  Web services vs. remoting

5.3.3.  Създаване на Web service

5.3.4.  Използване на Web service

ü      WSDL.EXE

5.3.5.  UDDI

5.4. ASP .NET security

Authentication models