Мажордомо отзывы. Дополнительные услуги и возможности хостинг-провайдера Majordomo

Уже довольно много времени прошло с тех пор, как я пообещал рассказать о работе с данными в формате XML при разработке.NET-приложений. Обещания надо выполнять. Прошу только учесть, что эта статья ориентирована не на профессиональных.NET-разработчиков, а на тех, кто ещё не имеет существенного опыта создания.NET-приложений.


Зачем нам работать с XML?

Если вы ещё не очень хорошо представляете себе, что такое XML, то рекомендую прочитать статью "XML - это всерьёз и надолго" в "КВ" № за 2007-й год. Чтобы сэкономить место для более важных вещей, здесь сам формат XML разбираться не будет.

Перед тем, как начинать знакомиться с программным кодом, нужно ответить на один принципиальный вопрос: зачем вообще включать поддержку XML в своё приложение? Думаю, что многие задавали себе этот вопрос относительно многих технологий, и не все после ответа были включены в приложения. Впрочем, с XML дело обстоит несколько иначе, и существуют реальные поводы использовать этот формат во многих ситуациях.

Главное преимущество XML в том, что, будучи по природе текстовым форматом, он, тем не менее, прекрасно позволяет хранить и передавать любые данные. Поскольку этот формат текстовый, то сама собой решается проблема его кросс-платформенности, и точно так же легко решается проблема передачи XML-данных (как это, например, сделано в SOAP). Кроме того, можно без проблем изменять формат передачи или хранения данных, добавляя новые атрибуты и не сильно беспокоясь о совместимости с предыдущими версиями формата, поскольку приложения, использующие старую версию, смогут прочитать то, что им надо, не обращая внимания на новые теги или атрибуты. Многие приложения используют основанные на XML файловые форматы, многие протоколы передачи данных тоже основаны на XML, и списки тех и других продолжают расти.

Конечно, с другой стороны, XML не очень экономичен, потому что, как когда-то верно заметил один из посетителей форума "Компьютерных вестей", часто XML-документы состоят на 10% из данных и на 90% из тегов. Впрочем, это уже в значительной степени зависит от того, какие вы сами выберете теги. Можно написать ул. Мельникайте, 2, а можно . Хотя, если честно, мне кажется, что с нынешними винчестерами и толстыми каналами нет смысла особенно ужиматься.

Так что в умелых руках XML - вещь мощная и удобная, а из-за повсеместной распространённости этого формата от него и вовсе никуда не денешься. Поэтому давайте перейдём уже к написанию программного кода.

Для программирования мы будем использовать основной язык платформы.NET - C#. Для того, чтобы как можно больше читателей могли сами поупражняться с приведенным программным кодом, я буду использовать первую версию C# и.NET Framework"а.


Запись данных

Сначала поговорим о записи данных, поскольку, сами понимаете, чтобы что-то откуда-то считывать, нужно сначала что-то куда-то и записать. А коль скоро мы с вами занялись программированием, то создавать XML-данные "ручками" нам с вами не пристало. Поэтому давайте сначала займёмся записью данных в XML.

Для начала создайте новый проект в Visual Studio, #Develop"е или C# Builder"е, и в список импортируемых namespace"ов добавьте System.Xml.

За запись XML-данных в.NET Framework"е отвечает специальный класс XmlTextWriter, который позволяет записывать XML-данные в произвольный поток. То есть, мы, вообще говоря, можем записать их с его помощью и в файл, и в базу данных, и отправить кому-то через Интернет, однако сейчас мы будем писать всё именно в файл. Вы можете перенаправить вывод, изменив конструктор объекта (т.е. передав при инициализации не имя файла и его кодировку, а объект, являющийся потоком данных). Впрочем, я, кажется, уже стал забегать немного вперёд. Давайте сначала познакомимся с кодом, ответственным за запись данных в наш с вами XML-файл.

String FileName = "c:\\demo.xml"; XmlTextWriter xml = new XmlTextWriter(FileName, System.Text.Encoding.Unicode); xml.Formatting = Formatting.Indented; xml.WriteStartDocument(); xml.WriteStartElement("rootelement"); for (int i = 0; i < 10; i++) { xml.WriteStartElement("subelement"); xml.WriteAttributeString("attrib1", "value1"); xml.WriteAttributeString("attrib2", i.ToString()); for (int j = 0; j < 10; j++){ xml.WriteStartElement("subsubelement"); xml.WriteAttributeString("attr", j.ToString()); xml.WriteEndElement(); } xml.WriteEndElement(); } xml.WriteEndElement(); xml.WriteEndDocument(); xml.Close();

Первая строка, думаю, вполне ясна - это просто запись имени файла, в который мы будем сохранять данные. Дальше мы создаём объект типа XmlTextWriter (он называется, как видите, xml), и именно с ним мы будем производить все дальнейшие операции. Заметьте, что при конструировании объекта мы указываем и кодировку, в которой будет записываться XML: в нашем примере это Unicode. Следующая строчка, вообще говоря, не обязательна, однако она сделает наш XML-документ, что называется, human readable, то есть добавит нужные отступы и разобьёт его на строки. Без этого весь документ был бы записан одной строкой, что, хотя и экономит место, но делает его практически непригодным для ручного редактирования.

Начинается запись документа с вызова метода WriteStartDocument() нашего объекта xml. Следующая за ней строчка добавляет корневой элемент "rootelement" в наш XML-документ (напомню, для XML-документов корневой элемент должен присутствовать в единственном экземпляре). Далее мы в цикле добавляем ещё десять не несущих никакой смысловой нагрузки элементов в наш с вами XML-документ, для каждого из которых устанавливаем два атрибута и ещё по десять подэлементов. Обратите внимание, что мы можем добавлять к строке число без явной конвертации данных, а вот если число должно целиком образовывать строку, то его нужно преобразовывать явно методом ToString(). Также обратите внимание, что мы должны явно закрывать каждый из элементов нашего XML-документа, а также потом и весь документ целиком.

Теперь, когда наш XML-документ успешно записан, давайте посмотрим, каким образом можно считать из него данные.


Чтение данных

Добавьте на форму вашего приложения (если, конечно, оно у вас не консольное) компонент listBox для того, чтобы можно было следить за результатом чтения XML-файла. Ну а если ваша программа консольная , то вы с лёгкостью сможете перенаправить вывод на консоль.

Как обычно, сначала ознакомимся с кодом программы, а потом уже будем смотреть, что именно этот код делает.

XmlTextReader xml = new XmlTextReader(FileName); xml.WhitespaceHandling = WhitespaceHandling.None; int i = 0; while (xml.Read()){ if ((xml.NodeType == XmlNodeType.Element) & (xml.Name == "subelement")) { listBox1.Items.Add("subelement " + i + " found"); i++; listBox1.Items.Add(" " + xml.GetAttribute("attrib1")); listBox1.Items.Add(" " + xml.GetAttribute("attrib2")); while (xml.Read()&(xml.Name == "subsubelement")){ listBox1.Items.Add(" " + xml.GetAttribute("attr")); } } } xml.Close();

Для чтения, как вы могли заметить, мы используем уже другой класс, а именно - XmlTextReader. Он находится в том же пространстве имён, что и класс, который мы использовали для записи данных. В первой строчке мы создаём экземпляр XmlTextReader"а, имеющий имя xml (здесь мы предполагаем, что переменная FileName уже определена нами ранее). Чтобы пропускать пустые строки, ежели такие неким непостижимым образом возникнут в нашем только что созданном XML-файле, мы используем следующую строку в приведенном фрагменте кода. Переменная i используется для подсчёта количества найденных элементов "subelement" в XML-файле, из которого производится считывание данных.

Дальше идёт цикл непосредственного чтения данных из файла. Метод Read() считывает следующий элемент XML-документа, и после его считывания мы проверяем, что именно мы считали. Если это действительно элемент "subelement", то мы добавляем информацию о считанном элементе в listBox1, инкрементируем переменную, содержащую количество считанных элементов, а затем считываем атрибуты элемента. После чтения атрибутов мы организуем отдельный цикл для чтения подэлементов "subsubelement" (обратите внимание, что для этого нам не требуется отдельного XmlTextReader"а) и атрибутов этих подэлементов. Как и ранее, все считанные сведения мы заносим в listBox1, чтобы контролировать правильность чтения.

При чтении XML-файлов, точно так же, как и при их записи, при конструировании XmlTextReader"а можно указать в качестве параметра поток, из которого будет производиться чтение, и тогда читать можно будет не только из файлов, но также и из других источников, примеры которых я уже приводил выше. Следует отметить одну полезную особенность класса XmlTextReader: при чтении он не загружает в память весь читаемый XML-документ, поэтому с его помощью удобно проводить разбор больших XML-документов (например, XML баз данных).


За кадром

В общем-то, пример, который мы с вами только что разобрали, чересчур прост для реальных проектов. В наше время при чтении XML-документов, как правило, применяется их валидация с помощью DTD, XML Schema или Relax NG. Валидация - это проверка соответствия разметки XML-документа некоторому стандарту, описываемому во внешнем файле. Валидация нужна для того, чтобы проверка документа не была жёстко зашита в алгоритм программы, а могла изменяться произвольным образом при изменении в формате данных без обновления считывающего или записывающего данные программного кода. К сожалению, сейчас мы с вами уже разобрать валидацию не успеем, поскольку, как вы сами понимаете, объём газетной статьи имеет определённые ограничения.

Ещё один интересный и полезный практический момент, касающийся работы с XML-данными, - это XSL-преобразование данных. Это преобразование применяется к данным при их отображении на HTML-страницах и, фактически, просто является применением определённого шаблона web-страницы к XML-файлу с какими-либо данными. Поскольку львиная доля теперешнего использования XML-данных так или иначе приходится на World Wide Web, то и XSL-преобразования рассмотреть было бы очень и очень неплохо.

Так что, думаю, у этой статьи будет продолжение - но, конечно, только в том случае, если вы сами (то есть читатели "Компьютерных вестей") об этом попросите на форуме или в письме на мой электронный почтовый адрес. Пока же об использовании XML в.NET-приложениях, пожалуй, всё. Надеюсь, что эта информация будет полезной для вас.

Пользуюсь хостингом месяц, и уже ОЧЕНЬ сожалею что выбрал услуги этой конторы, не знаю как от них уехать...
Все началось с регистрации домена в среде.RU Зарегистрировал, деньги естественно взяли за регистрацию, в течении часа, двух - сайт не работает...
думал просто так долго регистрируется... на следующий день пишу с службу поддержки о проблеме, в ответ - вам нужно подтвердить номер телефона и поставить домен на делегирование. При регистрации домена речь об этом не шла вообще... Хоть и не имел желания писать свой телефон, но все таки подтвердил его... поставил сайт на делегирование, ну вроди можно жить - работает...
Но не тут то было... Через два дня сайт опять не работает... опять у меня те же вопросы - оказывается им уже надо сканкопии паспорта, что бы сайт работал...
Но тут тоже не так все просто, при регистрации я вводил абсолютню любые данные, по скольку никакого предупреждения НЕ БЫЛО, что бы вводить реальные паспортные данные,
потому что придется пройти проверку. И сейчас предоставивши свои реальные данные паспортные - все равно получил отказ в делегировании, в связи с несовпадением данных при регистрации... Решил немедленно уйти из этой канторы, но тут тоже не так все просто, оказывается деньги они возвращают ТОЛЬКО на пластиковую карту или сберкнижку, вернуть их обратно на вебмани откуда и получили оплату за весь год они не могут =) Цирк а не хостинг...
Я в безвыходной ситуации - заплатил 1700 рублей + 150 за домен, и остался ни с чем реально ни с чем... Сайт не работает и не будет работать, перенести его к нормальному хостеру не возможно, ну и удалить не возможно. Выходит заплатил за все, а предоставить услуги то уже не их проблемы) для них это нормально.

Вот переписка со службой по доменам:

Долныгин Илья (13:47:04 16.04.2012)
Ваш домен был зарегистрирован на "вымышленные" данные, при выборочной проверке регистратором была запущена проверка указанных данных (запрошены подтверждающие документы). Документы на "вымышленные" данные не могут быть предоставлены. К сожалению, в этом случае сложилась такая ситуация, что какие-либо действия с доменом теперь невозможны. Следовало указать существующие данные (или хотя бы часть данных), тогда можно было бы откорректировать неверные. Когда все данные неверные, сделать ничего нельзя.

breerd (13:47:47 16.04.2012)
тоесть что теперь вы взяли деньги а сайт работать не будет?

Долныгин Илья (13:49:15 16.04.2012)
Средства за регистрацию домена не подлежат возврату, так как владелец домена приобрел на него право администрирования (регистрация доменов не является обратимой процедурой).
В случае с доменом в зоне.ru, к сожалению, он не может быть нормально использован.
Сожалею, но таковы правила регистрации доменов RU и РФ (ООО "Регистрант" обязан их соблюдать).

Одним словом не желаю никому попасть в такую ситуацию и такую кантору.

В сегодняшнем обзоре речь пойдет о хостинг-провайдере Majordomo . Мы постараемся объективно разобраться в его ключевых особенностях, преимуществах и недостатках. Ведь идеального хостинга не бывает. Или все-таки бывает?

О Majordomo

О виртуальном хостинге от Majordomo

Так как виртуальный хостинг является наиболее востребованной и массовой услугой у любого провайдера – поговорим о нем более подробно. Что нам может предложить Majordomo ?

Стоимость виртуального хостинга от Majordomo варьируется от 99 до 749 рублей в месяц (при оплате за год ).


При этом посмотрев на изображение, приведенное выше, вы быстро поймете, что «безлимитный » виртуальный хостинг доступен только на тарифах «Безлимитный » и «Безлимитный+ », а на самом дешевом тарифе «Старт » некоторые ограничения все-таки присутствуют. Однако для большинства начинающих вебмастеров и пользователей виртуального хостинга они станут вполне допустимыми.

Приятные бонусы от хостинг-провайдера Majordomo

Перед тем как перечислить приятные «плюшки » предоставляемые пользователям хостинг-провайдера Majordomo стоит оговориться, что некоторые из них недоступны на тарифе «Старт ».

Итак, о бонусах:

  • При единовременной оплате трех месяцев обслуживания на тарифных планах «Безлимитный » или «Безлимитный + » любой пользователь Majordomo получает в подарок домен в зоне .ru или .рф (на выбор ).
  • Бесплатная почта для домена от «Mail.ru для бизнеса ».
  • Автоматическая установка таких популярных CMS-систем как WordPress и Joomla (на тарифах «Безлимитный» или «Безлимитный +» ).
  • Бесплатный SSL-сертификат .
  • Предоставление промокода Google AdWords на сумму 2000 рублей (на всех тарифах ).
  • Бесплатный перенос сайта от другого провайдера плюс три месяца хостинга в подарок (не распространяется на тарифный план «Старт» ).
  • Специальные корпоративные тарифные планы «Бизнес » и «Бизнес + ». При стоимости в 599 и 749 рублей в месяц соответственно, они включают в себя приоритетную техническую поддержку, оперативную юридическую консультацию, профессиональную помощь в настройке сайтов и, что самое главное — размещение на отдельных выделенных серверах.


Дополнительные услуги и возможности хостинг-провайдера Majordomo

  • Поддержка полного спектра SSL-сертификатов Comodo и возможность их приобретения.
  • Возможность проведения всестороннего SEO-аудита сайта.
  • Обеспечение защиты сайта от взлома и лечение сайтов от вирусов (в партнерстве с компанией Revisium ).
  • Комплексная услуга «Сайт под наблюдением », включающая в себя своевременное лечение зараженного сайта, его защиту от взлома хакерами и ботами, а также круглосуточный мониторинг веб-угроз и контроль за доступом. Услуга предоставляется в партнерстве с компанией Revisium .
  • Возможность обеспечения дополнительной защиты от спама и почтовых вирусов.
  • Базовая или премиальная настройка контекстной рекламы в Яндекс.Директ и Google AdWords .

Вместо заключения

Подводя итог можно сказать, что если вы ищите хостинг, то Majordomo действительно заслуживает вашего пристального внимания. Обязательно воспользуйтесь 14-дневным периодом бесплатного тестирования, ведь этот хостинг обладает множеством достоинств, а среди недостатков можно отметить лишь некоторые ограничения, присутствующие в тарифном плане «Старт ».



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: