Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];

Вниз

TStream   Найти похожие ветки 

 
Suntechnic   (2001-12-24 04:54) [8]

>Sour © (23.12.01 22:49)
>Сохранение чего-либо не большого, много меньшего 2 Gb, в файл, целесообразно реализация потоком?

Понимаешь в чём вся суть... написать можно чего угодно и как угодно... например структурный поход в программировании работает иногда даже быстрее ООП, но почему то все стараются его избежать... дело абсолютно не в размерах, дело в подходе. Если ты хочешь написать что то действительно гибкое и расширяемое то тебе надо мыслить именно этими мерками... Приведу тебе тогда другой пример использования потока, где размер не играет никакой роли.
Представь себе ты решаешь задачу обмена данными через сокеты(чат например). Имеется объект сообщение, который помимо текстовой информации может нести в себе ещё и ID отсылаемого и ID получателя, а также картинки и т.д. и т.п. На самом деле размер такого сообщения редко когда превысит 1Kb. Так вот один из подходов предполагает написание ф-ции которая будет принимать параметрами информацию о сокете и об объекте и посылать эту информацию адресату. Вроде всё красиво. Но завтра приходит заказчик и говорит я хочу эти сообщения ещё и в файл писать... а после завтра говорит я ещё хочу пересылать эти сообщения между процессами на одной машине... в итоге появляется 3 ф-ции: SendMessageToSocket, SaveMessageToFile, SendMessageToProcess в каждой из них будут происходить одни и те же действия: объект будет "раскладываться" по-байтно и отсылаться. А ещё через день придёт опять заказчик и скажет я хочу переслать ещё "пару байт" и ты вынужден будешь переписать все эти методы по отсылке(и столько же по приёму объекта)... Но возможно другое архитектурное решение. Где все необходимые "объекты передачи"(сокет, файл и т.д.) будут "уметь" работать с одним базовым объектом "Поток". Ведь всё равно всё придёт к необходимости отсылки цепочки байт. Поэтому пишем у нашего объекта "Message" два метода "SaveToStream", "LoadFromStream". Проще говоря объект сам знает как себя записать и как себя считать из потока. В результате если тебя кто-нибудь попросит пререслать ещё пару "лишних" байт ты просто переписываешь два метода "SaveToStream", "LoadFromStream" вместо 6. Более того ты можешь присвоить "версию" потоку. Грубо говоря один поток умеет пересылать картинки, а другой нет. И анализ опять же будет происходить в методах "SaveToStream", "LoadFromStream".

...вообщем много я тут наговорил. Повторяю ещё раз: написать можно и так и так. В результате конечный пользователь всё равно ничего не увидит :). Но дело в подходе. Если ты присмотришься поблжиже к VCL, она именно так и устроена и мне этот подход ближе, а ты сам выбирай...



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.005 c
1-42508
nikols
2001-12-26 10:47
2002.01.14
Как русифицировать QuickReport?


4-42619
YUS
2001-11-14 20:08
2002.01.14
ListView_GetItemCount , ListView_GetItemText


3-42343
Alexsandr
2001-12-10 04:33
2002.01.14
вопрос


1-42512
ZEE
2001-12-26 02:11
2002.01.14
Фиксированная ширина Label


1-42407
Dmitry_O
2001-12-23 19:49
2002.01.14
изменение языка





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский