(NET) NET (2014)

Класіфікація засобів роботи з даними.

На цієї сторінці, друзі, я хотів поділитися своїм баченням єволюції застосування засобів моделювання та маніпулювання даними та підкреслити особливості та умови використання тієї чи іншої технології. Це детальне пояснення правого верхньго варінта на моєї загальної діаграмі варіантів ASP.NET стека - Variants of ASP NET Technology stack.


Такоє існує безліч окремих ВІЗУАЛЬНИХ інструментів, які дуже добре інтегровані у Visual Studio, мають десятки окремих форм дня налаштування різноманітних аспектів доступу до даних, почніть будь ласчка читати з оційє заметки - 10 ORM and Data Tier Management Tools for Visual Studio, але все, що пов'язано з мікрософтом постійно змінюєтья та знікає із інету, тому я на всяк випадок перерахую тут дещо:

Існує і безліч інших, ніяк не інтегрованих у студію, окремих, але дуже корисних інструментів, таких як LINQPad.


Щоб якось розібратися у цьому, я пропоную свою класіфікацію, яка побудована на тому, як я особисто поступово освоював одну технологію за іншою, ніяк не залишаючи остаточно жодну з них (ну наприклад як можливо залишити SQL-Сервер?). Найбільш важливо, ще раз підкреслюю - вибрати найбільш правильну технологію. Ось наприклад стандартний CheckList для виконання вибіру між двома ORM (коли вже рішення про застосування ORM порівняно з іншими варіантами доступу до даних прийнято).


1. Моделювання та маніпуляція даними у межах SQL-Серверу


MS SQL Server це не разу не табли, як це вважають деякі програмісти, що зрозуміти це - подивиться будь ласка на цей перелік спеціфічних об'ектів, яких немає у інших SQL-серверах: Aggregate, Application Role, Assembly, Asymmetric Key, Broker Priority, Certificate, Check Constraint, CLR Database Trigger, CLR Instead Of Trigger, CLR Procedure, CLR Scalar Function, CLR Server Trigger, CLR Table Function, CLR Trigger, ColumnStore Index, Contract, Credential, Cryptographic Provider, Custom Message, Database Audit Specification, Database Encryption Key, Database Role, Database Scoped Credential, Database Trigger, Default Constraint, Default, Endpoint (ServiceBroker over TCP), Endpoint (SOAP over HTTP), Event Notification, Event Session, Extended Property, External Data Source, External File Format, External Table, File, FileGroup MemOpt, FileGroup With Filestream, FileGroup, FileTable, Foreign Key, Full Text Stoplist, Fulltext Catalog, Fulltext Index, Index, Inline Function, Instead Of Trigger, Linked Server Login, Linked Server, Log File, Login SqlServer, Login, Master Key, Message Type, Partition Function, Partition Scheme, Primary Key, Procedure NativeComp, Procedure, Queue, Remote Service Binding, Route, Rule, Scalar Function, Schema, Script Build, Script, Search Property List, Security Policy, Selective XML Index, Sequence, Server Audit Specification, Server Audit, Server Role, Server Trigger, Service, Signature, Spatial Index, Statistics, Svr Role Membership, Symmetric Key, Synonym, Table Function, Table MemOpt with Filegroup, Table MemOpt, Table SysVersioned, Table, Trigger, Type, Unique Key, User Defined Table Type MemOpt, User Defined Table Type, User with Password, User, User-defined Type, View, XML Index, XML Schema Collection (xsd).vstemplate, XML Schema Collection. І це лише деякі додаткові нові об'єкти нової версії MS SQL, а існує тисячі інших, які підтримуються це з SQL 7, у мене є перелік тісячі спеціфічних обьектів SQL 2000 - Transact-SQL Reference for SQL 2000.

Мені подобається працювати у середовищі MS SQL і сьогодні я могу зробити будь який важкий проєкт у MS SQL, ось наприклад запис моєї реальної роботи у 2017-му році - My project for refactoring huge database to prepare using it in Entity Framework.

Я веду на своєму сайті окремий розділ, присвячений програмуванню inside SQL - Программирование в SQL SERVER, такоє на безлічі інших сторінок ви можете побачити ті чи інші рішення, стосовно використання спеціфічних запросів у SQL. Все перерахувати неможливо, бо я веду цей сайт на протязі, мабуть, років 15-ти, почните читати про програмування SQL-процедур з цих чотирох сторінок:

MS SQL Server має можливість поширення власними функціями у будь-якому напрямку, наприклад звичайно ці функції ходять по таймеру у інет, щось так скачують, парсять, кудись зберігають результати. У мене є деякі описи моїх власних поширень MS SQL server:


2. Отримання даних за допомогою DAO


Це засіб був поширений у класічному ASP та VB6. У мене майже не зберіглося будь-яких описів з тих часів часу, є лише окремі сторінки - ось тут наприклад перераховані деякі мої проєкти на VB6 з описами, які я виконував ще до 2005 року. Взагалі, коли я блище познайомився з NET Framework у 2002-2003 роках (ось тут історичні скріни 2002-го року, та мої перші ємоцій тих часів), то я спочатку трохи здивувався, потім з'явилося незадоволення можливостями VB6, а потім я став використовувати більш нові технології замість DAO.


3. Отримання даних за допомогою ADO.NET (SqlCommand/SqlDataReader)


Це дуже простий та корисний засіб використання рекввестів до даних SQL-серверу. У мене є багато проєктів, описаних саме на цьому фреймовці, наприклад :


4. Отримання даних за допомогою SqlDataSource (через декларації ASP.NET або власним кодом)


Мені подобається використовувати цей зручний засіб. Ви можете подивитися, як я це роблю.


5. Отримання даних за допомогою TableAdapter and SqlDataAdapter, Typed and Untyped DataSet


Інколи я використовую цей засіб роботи з даними. Починалося це все з NET 1.1 e 2002-році ADO .NET, ADO .NET. Потім я написав багато програм з використанням цьго засоба роботи з даними, у мене зберіглися декілька описів тих старих програм і навіть у мене є описи Extension-функцій до цього фреймфорку:


Я і зараз активно використовую цю технологію у десктопних програмах. Також ця технологія активно використовується у деяких інших випадках, наприклад у DataTable імпортуються Excel-файли.


6. Отримання даних за допомогою ORM Linq-to-SQL


Якщо ви користуєтесь лише MS SQL та не плануєте його змінювати на протязі життя проєкту, то жодного сенсу немає використовувати Entity Framework. Щоб там не казав мікрософт. З іншого боку, якщо ви маєте доступ до SQL-сервера, теж немає жодного сенса використовувати Entity Framework, набагато зручніше виконувати тести не за допомогою специфічних технологій Unit-тести для ASP.NET MVC, а безпосередньо за допомогою тестових даних у SQL-сервері.

Якщо ви працюєте як фрілансер і вашою метою є найшвидчий результат, або ви працюєте у проекті один, то на мій погляд - це найкращий фреймворк. Я почав використовувати цей фреймворк у 2010-му році - Мой первый сайт на MVC 3 Razor, Извлекаем пользу из LINQ і з того часу всі мої проекти за окремими винятками, описаних у розділах Программирование в NET Framework, Программирование на ASP NET, Программирование на ASP NET MVC зроблені переважно на Linq-to-SQL, наприклад

Я маю також декілька власних поширень Linq-to-SQL, подивиться будь ласка ось цю сторінку 2013 року - Five amazing Linq-to-SQL extension на англійскій мові, та Мої поширення Linq-to-SQL на українській мові. Та ось цю сторінку від 2017-го року Amazing extension function CopyLinqDataMembersByName to expand Linq-to-SQL на англійскій мові.

Цікаво, що я спочатку не дуже добре сприймав цю технологію, зараз я лише дивуюсь свойому крітичному погляду від 2010-го року.


7. Отримання даних за допомогою ORM Entity Framework


Якщо спробувати сказати щось глобальне про цей фреймворк, то він дозволяє робити те ж саме, що й Linq-to-SQL, але з трьома головними додатками:

  • Ви можете змінювати двигун бази на протязі життевого ціклу своєї програми, тобто крім MS SQL ви модете використовувати будь-яке діскове сховище даних, починаючи від MongoDB - noSQL-database for irregular JSON data. Зрозуміло, що при такому погляді на дані, нічого спеціфічного з SQL-серверу ви використовувати не можете, ну наприклад Assembly, бо їх немає в жодної іншої технології зберігання даних, крім Оракла.
  • Інша дуже важлива особливість цбго фреймворку - його пристосованність до Unit-тестів. Це важливо для великих проєктів, коли хтось один робить код, інший робить з ним тести і робить релізи.
  • Цей фремворк пітримує методіку проєктування Code First. Це коли базу прогрумує хто-небудь іншій у іншій країні, ви взагалі про це нічого не знаєте, але вам необхідно проєктувати сайт окремо, взагалі без бази, лише на теоретичних моделях-классах, з яких потім Entity Framework буде створювати SQL-структуру. Все це зроблено для підтримки технології Global Outsource.
  • Наразі я маю повний опис усіх можливостей Entity Framework на своєму сайті, а також деілька моїх власних описів лише декілька окремих топіков.



    Comments ( )
    <00>  <01>  <02>  <03>  <04>  <05>  <06>  <07>  <08>  <09>  <10>  <11>  <12>  <13>  <14>  <15>  <16>  <17
    Link to this page: http://www.vb-net.com/DataAccessReview/index.htm
    <SITEMAP>  <MVC>  <ASP>  <NET>  <DATA>  <KIOSK>  <FLEX>  <SQL>  <NOTES>  <LINUX>  <MONO>  <FREEWARE>  <DOCS>  <ENG>  <MAIL ME>  <ABOUT ME>  < THANKS ME>