Пересилання двійкових даних в Visual C # (Sharp)

За великим рахунком, при роботі з консоллю ми будемо пересилати текстові даие від одного процесу іншому або з одного файлу в іншій файл Але при разротке додатків в NET працювати з текстом не завжди є кращим підходом Більш ефективно було б зберігати дані в двійковому форматі

Рис 108 Двійкове вміст файлу в текстовому редакторі

Легше все зрозуміти різницю між текстовими та двійковими даними, якщо відкрити файл з двійковими даними в текстовому редакторі (рис 108)

Все, що ми бачимо на рис 108, – це купа крякозябри з вкрапленнями читаного тексту Двійковий файл відрізняється від текстового файлу тим, що формат містить, прочитаного програмою, сприймається двійковими даними Преімеством використання двійкових даних є те, що вони дозволяють створення складних структур А недоліком – те, що вміст двійкового файлу знає тільки розробник програми для його запису і читання

Двійкові файли не завжди меншого розміру, але вони більш ефективні, т к їх дані не вимагають синтаксичного розбору і обробки Наприклад, модуль чтія текстового потоку даних лотерейних квитків повинен розбити текстовий файл на рядки, а потім розбити кожну рядок в окремі потоки, які в свою чергу перетворюються в цілі числа і присвоюються змінним З двчнимі даними нам потрібно тільки створити двійковий тип, а потім зчитувати або записувати цей тип

У цьому розділі ми продовжимо розгляд прикладу передбачення лотерейних номерів Але на цей раз ми втілимо його у вигляді консольного додатку, який перетворює текстовий потік даних в двійковий і навпаки Ми побачимо, як песилать дані з одного потоку в інший, від однієї програми іншому Метою даної програми є можливість обробити наступну консольну команду:

type lottotxt | TextProcessorexe | Text2Binaryexe | Binary2Textexe

Командний рядок починається з команди type, яка генерує потік текстових даних Цей потік пересилається додатком TextProcessorexe, яке генер впорядкований потік даних Далі потік пересилається додатком Text2Binaryexe, яке перетворює його в двійковий потік Нарешті, двійковий потік даних пересилається додатком Binary2Textexe, яке виводить дані на консоль

У той час як архітектура додатку TextProcessor з його реалізацією інтеейса IProcessor і загальний підхід захоплення файлу або вхідного / вихідного потоку консолі працюють належним чином, інтерфейс IProcessor не можна використовувати для обробки двійкових потоків Тому нам потрібно реалізувати новий іерфейс і нову архітектуру

ПРИМІТКА

Дале е ілюструється дуже поширена ситуація, коли архітектура Работте повинні м чином і її концепції можна застосувати в іншому контексті Але в новому контексті реалізація первісної архітектури не працює Модифікування е працюючої архітектури під новий контекст може здатися спокусливим вирішенням цієї проблеми Але наскільки привабливим це б не виглядало, не слід піддаватися цій спокусі У більшості випадків создаваеми е дл я цього абстракції ускладнять архітектуру і зроблять кінцевий код більш заплутаним У данно м випадку проблемою є визначення, коли узагальнять ь архітектуру, а коли залишити ідеї старої архітектури, але створити нову реалізацію Спосоость робити таке визначення приходить по мірі накопичення робочого досвіду

Джерело: Гросс К С # 2008: Пер з англ – СПб: БХВ-Петербург, 2009 – 576 е: ил – (Самовчитель)

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*