Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

№38 рассылки '.Net Собеседник':


Информационный Канал Subscribe.Ru

.Net Собеседник #38

Содержание
  1. От автора
  2. Обзор новостей
  3. Mono переживает бурный коммерческий успех
  4. Время кода - Строим страницу ожидания
  5. Форумы .Net на www.sql.ru

От автора

Здравствуйте, коллеги!

Предварительный анонс второго номера журнала "Алгоритм".
  • Интервью с Алекандром Сибилевым, автором проекта http://www.sql.ru/.
  • К.Коцарь «Что нам стоит мост построить?»
    По закону жанра требуется начинать с какой-нибудь банальной фразы, например: мы живем в стремительно изменяющемся мире. Бесспорно, технологии сменяют друг друга с бешеной скоростью, предлагая немыслимые возможности и быстро устаревая, становясь «немодными» и «неперспективными». Одни ярко вспыхивают, подобно болидам в ночном небе, другие долго держатся на плаву, трансформируясь и развиваясь согласно текущим тенденциям. У разработчиков программного обеспечения голова идет кругом — то, что вчера казалось невозможным, сегодня уже обыденная реальность, а завтрашний день обещает быть еще более светлым и радостным. Мы бросаемся в объятия новейших языков и средств разработки, отбрасывая балласт прошлого, и зачастую не замечаем, что проходим мимо чего-то, пусть не всегда самого важного, но заслуживающего внимания. Почему Microsoft продолжает выпуск Visual FoxPro? Почему у «фокса» так много ярых сторонников и не менее ярых противников? Почему нужно продолжать создавать программы на VFP, если платформа .NET предоставляет более широкие возможности? Почему руководитель команды по разработке Visual FoxPro имеет должность Visual Studio Data Product Manager и пропагандирует новые возможности .NET? Почему нет ответа на вопрос «быть или не быть VFP.NET»? И почему, черт возьми, участь писать эту статью досталась мне? Если вы хотите получить ответы на эти или подобные вопросы, то вам, по всей видимости, стоит подыскать другой источник информации или перейти к следующей статье. В этой же статье я попытаюсь рассказать о взаимодействии между .NET и Visual FoxPro и изложить свою, сугубо субъективную точку зрения на совместное сосуществование двух технологий.
  • В.Чужа «Использование пользовательских функций Microsoft SQL Server 2000 в работе с DataGrid ASP.Net»
    Бывают такие случаи, когда необходимо добавить в существующее приложение, использующее для вывода данных DataGrid, дополнительный столбец. И всё бы ничего, если в ходе разговора не оказывается, что этот столбец является суммой неких значений из таблицы, подчинённой данной. Как можно поступить в таком, на первый взгляд непростом, случае? На помощь приходят пользовательские функции Microsoft SQL Server’a.
  • А.Маркелов «Настройка полнотекстового поиска для MS SQL Server 2000»
    Полнотекстовый поиск предоставляет более мощные возможности для поиска, чем стандартные средства SQL наподобие оператора LIKE. В данной статье рассказывается, как настроить полнотекстовый поиск для MS SQL Server 2000. MS SQL Server 2000 должен быть установлен с опцией "full-text search". В версии MSDE 2000 опция "full-text search" недоступна. Необходимые операции в примере будут осуществляться с помощью команд T-SQL. Так же возможно выполнить их с помощью wizard'a или через соответствующие пункты меню. - Д.Хейс, В.Чужа «Mono переживает бурный коммерческий успех», краткая версия есть в рассылке. Полная версия больше рассылочной примерно в два раза, основные дополнения касаются информации о языке Си-Омега, основанного на C#.
На этом всё - желаю интересного чтения.

{К содержанию}

Обзор новостей

  1. Обновился ЖЖ hDrummer'a
    Заходите :)
  2. Microsoft опять задерживает Visual Studio 2005 и SQL Server 2005
    Вчера Microsoft объявила о ценовой и лицензионной стратегии для Visual Studio 2005, в то время как собственно выход новой генерации программной платформы для разработчиков – в том числе сервера Microsoft SQL Server 2005 – откладывается до второй половины 2005 года. Ранее планировалось, что оба продукта появятся в середине 2005 года. Как заявляют в Microsoft, Visual Studio 2005 и SQL Server 2005 будут выпущены одновременно.
    С Visual Studio 2005 связан обширный диапазон различных редакций продукта, каждая из которых нацелена на определенный тип разработчиков. Microsoft также предлагает новый продукт Visual Studio 2005 Team System, предназначенный для управления жизненным циклом приложений и рассчитанный на подписчиков Microsoft Developer Network (MSDN) Premium. Цена нового продукта будет ниже стоимости профессиональной редакции Visual Studio 2005 Professional Edition.
    Visual Studio 2005 Professional Edition будет стоить 799 долл. (549 долл. при модернизации). Остальные продукты семейства Visual Studio 2005 включают Visual Studio 2005 Tools для Microsoft Office System (799 долл.; 549 долл. при модернизации), Visual Studio 2005 Standard Edition (299 долл.; 199 долл. при модернизации) и различные продукты Visual Studio Express, по цене 49 долл. за каждый. Среди продуктов Visual Studio Express будет Visual Basic 2005 Express, Visual C# 2005 Express, Visual C++ 2005 Express, Visual J# 2005 Express и Visual Web Dev 2005 Express. Также будет доступен SQL Server 2005 Express, но этот продукт будет бесплатным и появится после выхода SQL Server 2005.
  3. SQL Tools для очистики объектов БД SQL
    Apex SQL Tools выпустила новую версию Apex SQL Clean, v3.0, инструмента для очистики неиспользуемых объектов в БД SQL. ApexSQL Clean генерирует команды drop для БД SQL с целью очистики неиспользуемых объектов.
  4. Инструмент для БД SQL для генерации кода
    Apex SQL Tools выпустила новую версию инструмента Apex SQL Code – инструмента для автоматического генерирования кода SQL, использования VBScript или JScript для скриптования шаблонов, а также предлагает библиотеки шаблонов для C#, VS, VB, .Net, ASP SQL и т.п.
  5. TierDeveloper полностью интегрирован с Microsoft Visual Studio 2003
    TierDeveloper полностью интегрируется в Visual Studio .NET 2003 IDE таким образом, что разработчик может ускорить разработку N-уровневых приложений.
  6. ComponentArt выпустила Web.UI 2.1
    Добавлены три новых компонента: TabStrip, MultiPage и SiteMap. Кстати, на внешний вид очень приятные компоненты.
  7. Axosoft's OnTime выиграла Jolt Productivity Award за отслеживание дефектов
    В этом году на конференции разработчиков ПО в Санта-Клара, Калифорния, победил Axosoft's OnTime 2004 и получил Jolt Productivity Award в категории ПО, отслеживающего дефекты.
  8. Вышел .netCHARGE 4.3
    .netCHARGE компонент для обработки кредитных карт для ASP.NET, поддерживающий более 40+ процессоров и шлюзов.
  9. Версия 2 бесплатного форума, чата и календаря от Synthigence
    Новая версия популярной бесплатной системы обладает десяткаим новых особенностей: wysiwyg редактирование сообщений HTML, иерархический контроль за привилегиями и т.п.
  10. Вышел Easy Projects .NET 3.1
    Logic Software выпустила Easy Projects .NET v. 3.1 – ПО для управления проектами через веб.
  11. ComponentOne Announces Studio Enterprise Beta Program for Microsoft Visual Studio 2005
    ComponentOne объявила о запуске бета-программы Studio Enterprise для Microsoft Visual Studio 2005. Studio Enterprise для .NET Framework 2.0 начнётся с выпуском Visual Studio .NET 2005 beta 2.

{К содержанию}

Статья номера

Mono переживает бурный коммерческий успех

ЯЗЫК: C#
Автор статьи: Dennis Hayes

ПЕРЕВОД: Чужа В.Ф. ака hDrummer

Вступление

Volcker Informatik AG перешла от использования Microsoft .Net на Mono. Эта компания традиционно покупала и пользовалась продуктами Microsoft, используя VB и C++ для построения продуктов уровня корпорации, служащих для управления пользователями и аутентификации. Но как только город Мюнхен, один из самых больших клиентов, решил перейти на Linux, компании понадобилась технология, которая работала бы в кросс-платформенной среде.

У них был выбор - Java или Mono; они решили переписать всё на C# под Mono.

За 9 месяцев они трансформировали семь миллионов строк кода на VB и C++ code в два миллиона строк на C#, которые работают как под Windows, так и под Linux. Даже для проекта такой сложности и такого размера, компания нашла Mono "очень стабильным и лёгким в изучении." Так удалось сократить время тестирования на 60% и, конечно же, сэкономить на куче серверных лицензий. (Подробнее www.novell.com/success/volcker.html)

Большим шагом вперёд для Mono был выпуск версии 1.1.4. Если вы следили за выпусками Mono, то вы должны были ассоциировать понятие «стабильный» с выпуском версии 1.0.4. Но не теперь. И хотя последние релизы грешили разными ошибками (кроме наличия особенностей .NET 2.0), то теперь они исправлены и команда Mono рекомендует всем перейти на версию 1.1.4.

Некоторые изменения коснулись аспектов безопасности и криптографии, оптимизированы компиляторы JIT и Ahead of Time (AOT); поддержка ASP.NET 2.0 теперь включает мастер-страницы, динамические меню на странице, динамические деревья элементов управления. Больше функций было добавлено в классы консоли. Новая управляемая библиотека System.Windows.Forms (SWF) заменила старую, основанную на WINE, и теперь запускается на OSX. GTK# запускается под Windows, также есть специальный инструмент для конвертирования проектов Visual Studio под Unix, также наличествует и профайлер. А встраивание Mono выглядит более лёгким. (Статус SWF можно посмотреть здесь http://svn.myrealbox.com/mwf/class-status-System.Windows.Forms.html)

План разработки Mono также был обновлен. Mono 1.2 ожидается во втором квартале 2005 года, а Mono 2.0 будет разрабатываться параллельно с .NET 2.0 и будет выпущена во втором квартале 2006 года. (См. www.mono-project.com/about/mono-roadmap.html)

Novell, корпорация-«отец» Mono, сейчас увлечена движением «open source». Niels Bornstein, известный пользователям Mono как соавтор книг «Mono: A Developer's Notebook» и «.NET and XML», пришёл в Novell как консультант для работы в группе, занимающейся Linux и open source. Tor Liqvist, перенёсший GIMP и GTK+ на Windows, стал членом группы, занимающиейся настольными приложениями. Кроме переноса приложений GTK+ под Windows, Tor поможет портировать Evolution под Windows. David Reveman, один из двух программеров, разработавших Glitz, интерфейс к OpenGL и графическую библиотеку Cairo, которую Mono использует в виде SWF, продолжит свою работу. И, наконец, Robert O'Callahan, знаменитый разработчик, участвовавший в проекте Mozilla, стал тоже частью команды, разрабатывающей настольные приложения. Он продолжит работать над поддержкой Mozilla SVG, многоколоночным форматированием веб-страниц и MonoConnect. Можно было бы сказать «добро пожаловать в команду», но так или иначе все эти ребята длительное время были частью команды. (См. пример Glitz www.cs.umu.se/~c99drn/pics/xgl-shot.png )

Portable.Net, выпуск 0.6.12

Portable.NET вышел в виде версии 0.6.12. Большинство улучшений сделано в SWF, такие как TrackBar и ListBox. Начата работа над NotifyIcon, RichTextBox и PrintDialog.

XML и Xsharp получили несколько из более чем 80-ти улучшений, перечисленных в комментариях, которые можно посмотреть по адресу http://getdotgnu.com/article22 (скачивайтеисходникиибинарникипоадресуhttp://getdotgnu.com/modules.php?name=Downloads&d_op=viewdownload&cid=1).
PhpGroupWare также демонстрирует высокую активность. (См. gotdotgnu.com)

Напоследок

Microsoft выпустила новый язык, базирующийся на C# и интегрированный в систему типов .NET, XML и SQL. Он также поддерживает конкуренцию между многопоточными приложениями и приложениями, работающими в глобальной сети. Язык называется Cw (произносится Си-Омега).
Подробнее смотрите по адресу http://research.microsoft.com/comega/doc/comega_startpage.htm .

             Недавно я упоминал о книге «Dissecting a C# Application: Inside SharpDevelop», как о своей любимой. Компания Apress выпустила её бесплатно в электронном виде – скачивайте по адресу www.apress.com/free/.
             Apress также выпустит ещё несколько книг в этом году в таком же виде и бесплатно.

{К содержанию}

Время кода

Строим страницу ожидания

ЯЗЫК: C#
Автор статьи: brian dunnington

ПЕРЕВОД: Чужа В.Ф. ака hDrummer
КОД К СТАТЬЕ: wait_page_src.zip

Вступление

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

Проблема

Для выполнения длительного процесса И для отображения полезной информации необходимо выполнять две вещи сразу. К сожалению, большинство техник веб-программирования не очень подходят к такого рода задачам. Добавьте к этому тот факт, что Internet – клиент-серверная архитектура, в которой сервер только выдаёт ответ в качестве отклика на запрос. Это значит, что сервер не может выдать браузеру информацию о ходе процесса, если клиент уже получил страницу ожидания. В классическом ASP и других языках программирования есть несколько способов выйти из такой ситуации. Один из часто используемых способов – перенаправить пользователя на страницу ожидания, а потом, сразу же, на страницу, выполняющую длительную операцию. Такой подход использует ту особенность веб-браузера, которая не позволяет отображать следующую страницу до тех пор, пока она не закончила обрабатываться – поэтому мы видим предыдущую. Этот подход имеет два минуса: если ваша страница содержит анимированный gif (как обычно делают), то он перестаёт воспроизводиться, как только запрашивается следующая страница. И второй минус: браузер создаёт впечатление, как будто что-то происходит, (часики вращаются), но визуально ничего не происходит. Нетерпеливый пользователь может нажать 'Стоп' или 'Назад' и попробовать запустить процесс ещё раз, создав много никому ненужных проблем. Ещё один подход – постоянно обновлять страницу ожидания, проверяя, закончился ли процесс. Такой подход вынуждает устанавливать флаг в БД, указывающий на состояние процесса.

Решение

С появлением ASP.NET, веб-программисты могут воспользоваться преимуществами асинхронной программной модели. И теперь проблема выполнения 2-х дел сразу решена. А что же с клиент-серверной архитектурой, которая не позволяет серверу вызывать клиента? Ответом будет удобный инструмент XmlHttpRequest. (Вы видели наверное этот маленький бриллиант, сверкнувший в Google Suggest и наделавший много шуму.) Путём комбинирования асинхронных методов и фоновых XmlHttpRequest’ов, ваша страница будет выглядеть куда умнее и изящнее.

Использование кода

Есть четыре концепции, которые реализованы в этом решении:

∙ Input page – ответственная за запуск асинхронного события
∙ Wait page – проверяет статус процесса и развлекает пользователя
∙ CheckStatus page – показывает закончился процесс или нет
∙ Confirmation page – отображается по окончании процесса

Input page

С этой страницы пользователь запускает долгоиграющий процесс. В закулисном коде страницы следующий код запускает процесс, используя асинхронную модель .NET. Также отметьте, что итоговый IAsyncResult сохраняется в Session, так что мы к нему можем позже обратиться.

string confirmationNumber;

private void Button_Click()
{
    IAsyncResult ar = DoSomethingAsync("abc");
    Session["result"] = ar;
    Response.Redirect("wait.aspx");
}

private IAsyncResult DoSomethingAsync(string someParameter)
{
    DoSomethingDelegate doSomethingDelegate = new DoSomethingDelegate(DoSomething);
    IAsyncResult ar = doSomethingDelegate.BeginInvoke(someParameter, 
        ref confirmationNumber, new AsyncCallback(MyCallback), null);
    return ar;
}

private delegate bool DoSomethingDelegate(string someParameter, ref string confirmationNumber);

private void MyCallback(IAsyncResult ar) 
{
    AsyncResult aResult = (AsyncResult) ar;
    DoSomethingDelegate doSomethingDelegate = (DoSomethingDelegate) aResult.AsyncDelegate;
    doSomethingDelegate.EndInvoke(ref confirmationNumber, ar);
}

private void DoSomething(string someParameter, ref string confirmationNumber)
{
    Thread.Sleep(10000);    //simulate a long process by waiting for ten seconds
    confirmationNumber = "DONE!";
    Session["confirmationNumber"] = confirmationNumber;
}

Wait Page

Эта страница не нуждается в закулисном коде, поскольку просто использует JavaScript и XmlHttpRequest для опроса сервера на предмет окончания долгоиграющего процесса. Фактически, страница обращается на клиенте к странице 'CheckStatus.aspx' и действует соответственно отклику. Всё это происходит без обновления страницы. Также важно заметить, что эта технология является кросс-браузерной, работает в IE5+, Mozilla, Netscape 6+, Firefox 1+ и др. Также скажем о том, что Opera на данный момент не поддерживает объект XmlHttpRequest, но толковый программер может эмулировать его работы с помощью тэга IFRAME, как это делает Google Suggest. Оставляю вам это в качестве упражнения =).

<script language="javascript"> <!-- var pollInterval = 1000;
var nextPageUrl = "confirmation.aspx";
var checkStatusUrl = "checkStatus.aspx";
var req;

// устанавливаем частоту проверки
window.setInterval("checkStatus()", pollInterval);

function checkStatus()
{
createRequester();

if(req != null)
{
req.onreadystatechange = process;
req.open("GET", checkStatusUrl, true);
req.send(null);
}
}

function process()
{
if(req.readyState == 4)
{
// только если "OK"
if (req.status == 200)
{
if(req.responseText == "1")
{
// "1" значит сделано
// поэтому перенаправляем
document.location.replace(nextPageUrl);
}
// NOTE: любой другой статус кроме 200 и ответ кроме
// "1" не нуждаются в обработке
}
}
}

/*
Используем несколько способов создания объекта XmlHttpRequest, в зависимости от браузера. Также заметьте, что Opera не поддерживает XmlHttpRequest.
*/
function createRequester()
{
try
{
req = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
req = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(oc)
{
req = null;
}
}

if(!req && typeof XMLHttpRequest != "undefined")
{
req = new XMLHttpRequest();
}

return req;
}
//-->
</script>

Также обратите внимание на использование document.location.replace(); при выполнении перенаправления к странице подтверждения. Этот способ позволяет эффективно убрать страницу из истории браузера, что не даст возможности пользователю нажать кнопку 'Назад' и запустить процесс вновь.

CheckStatus page

Это очень простая страница. Она проверяет IAsyncResult на завершение и возвращает бит (0 или 1), индицирующий этот статус.

private void Page_Load(object sender, System.EventArgs e)
{
    AsyncResult ar = (AsyncResult) Session["result"];
    if(ar.IsCompleted)
        Response.Write("1");
    else
        Response.Write("0");
    Response.End();
}

Confirmation Page

Как только процесс закончен, «Wait page» получит сигнал об этом от «CheckStatus page». Как только это случится, «Wait page» перенаправит «Confirmation page», которая и отобразит результаты пользователю – в таком виде, каком вы захотите.

Вот и всё.


{К содержанию}

Форумы .Net - вопросы оставшиеся без ответа

Про Ошибка развертывания приложения!
Как создать коллекцию DataSet
Проверить права, доступные в данной сборке
datagrid scrollbars в Compact Framework
Вопрос про изменение пароля
IIS6/ASP.NET/SSL - HTTP error: (413) Request Entity Too Large
Ошибка с GetObject

На этом тридцать восьмой выпуск .Net Собеседника закончен.
До следующего номера.



Чужа Виталий Ф. aka hDrummer, MCAD, MCDBA, MCP
hdrummer@sql.ru - жду ваши предложения и замечания.



http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.dotnetgrains
Отписаться

В избранное