• Авторизация


Бесы. Часть II. 03-10-2010 02:36


Лично я симпатизирую Шатову и, скорее всего, потому, что больше некому. Симаптии читателя почти всегда на стороне жертвы.

комментарии: 2 понравилось! вверх^ к полной версии
Бесы. Часть I. 02-10-2010 23:39


Первая часть романа представляет собой странное введение в авторский замысел: изложение от лица г-на Г--ва впоследствии будет неоднократно нарушено, его указания на поворотные точки характеров и сюжета окажутся не столь уж важными, детали биографии Петра Степановича, Варвары Петровны и других не существенны. Так например, мы узнаем, что Шатов родился крепостным Варвары Петровны, был ею обласкан, но не сохранил должной, по ее мнению, благодарности и к описываемому моменту не пользуется ее расположением. Сын Верховенского упоминается в первой части лишь вскользь: родившись от первого брака П.С., он был отдан на воспитание "каким-то теткам", в какой-то глуши. Рассказчик, по всей видимости, не имеет никаких сведений о его становлении, связь его с отцом не вызывает внимания читателя только потому, что ей не уделяется в первой части и десяти строк. То же самое можно сказать и о Николае Ставрогине: его взаимоотношения с матерью (и уж, тем более, с отцом, о котором(единственное, что можно узнать, это его смерть в чине генерал-лейтенанта по пути в действующую армию в Крым) описаны довольно скупо. Сведения, поступающее о нем из Петербурга, скорее оттеняют реакцию на них Варвары Петровны, чем дают какое-либо представление о "принце Гарри"..Вообще, до его первого приезда в город, образ Николая Ставрогина вряд ли задерживает самостоятельное внимание читателя.
Читатель, таким образом, должен увериться, что
1). рассказчик обладает только той информацией, которая доступна ему в городе и в Скворешниках и только от тех лиц, с которыми он водит там знакомства.
2). повествование будет иметь остросюжетную линию, которая ждет читателя впоследствии и что введение (так и названа первая часть) призвана лишь приоткрыть занавес над характерами будущих героев.
К удивлению читателя, не происходит ни того, ни другого.Ничто не предвещает последующих театральных массовок с полным составом героев на сцене. И Петр Верховенский, и Николай Ставрогин будут представлены "выходными ариями" только через восприятие рассказчика. Их появление в городе ничем не подготовлено, их характеры туманны и даже кажутся второстепенными для изложения, во всяком случае, именно этого эффекта, видимо, и добивается Достоевский первой частью.Перед нами панорама отношений взбалмошной, богатой помещицы и ее приживальщика, которая сама по себе, не сулит никакой драмы, но занимает около ста страниц повествования.
Зачем понадобилось Достоевскому это совершенно неоправданноe введение с уймой деталей, с реминисценциями то из Фаута, то из Фальстафа, будто зовущее куда-то, как неторопливое интермеццо, которое играют до поднятия занавеса, но затянув на полчаса?
Мы, однако, имеем возможность узнать Шатове .Ему оказывается 26-27 лет, поездка в Европу и скоротечная связь с женой изменили его прежние убеждения...
Собственно роман начинается с приезда в город Дроздовых. К этому моменту читателя уже не может удивить предприимчивость Варвары Петровны, она вместе с Петром Степановичем выступают главными героями повествования. Взяв первоначальный замысел, Достоевский пока не хочет отступаться от него. Роль Даши-невесты хорошо подходит лишь для еще большего усиления деспотичности характера Ставрогиной.
Но вот и первая сцена, где замысел мешает Достоевскому: театральное собрание героев в доме Варвары Петровны, куда как по плохому сценарию, входят и выходят действующие лица. Те же и Николай Всеволодович. Подготовленный предыдущей структурой романа, читатель не ожидает, что рассказчик (г-н Г--в) переключит внимание своих хроник с прежних главных героев на прибывших. (Да и откуда же ему их знать?) Достоевский продолжает в том же ритме: пощечина, несколько замечаний о Лебядкине, обморок Лизы, появление Верховенского-сына проходят жизнеописательным порядком, но героев уже слишком много, за всеми не уследишь из массовки, как ни старается Г--нов. Он начинает мешать Достоевскому.Перед нами четыре линии: сватовство Степана Трофимовича, с одной стороны, будто бы себя уже исчерпало, введя на сцену Дашу Шатову, но читатель ждет именно от одного из них дальнейшего продолжения (и интересно было бы повернуть в эту сторону, если вспомнить смиренность Даши и всю предыдущую подготовку образа Степана Трофимовича). Вторая, только завязывающаяся, линия Лизы: было уже обмолвлено о ее разладе со Ставрогимым в Швейцарии, образ Маврикия Николаевича и ее мамаши сулят дальнейшую разработку в отдельную линию романа. Николай Ставрогин, в этом уже не остается сомнений, выведен на сцену для еще одного поворота в романе. И наконец, Верховенский уже успевший заявить о себе.
Напускная мемуарность романа, его неторопливость до сих пор, не успевают за всеми обозначившимися линиями. Роман должен изменить темп, но ведь не введением ли рассказчика от первого лица этот темп был так замедлен с самого начала. Как в пьесе, отдельными сценами можно развивать структуру и дальше,в отдельных сценах рассказчику надо

Читать далее...
комментарии: 0 понравилось! вверх^ к полной версии

Заметки : bts_CleanupMsgbox 18-02-2009 02:39


Странный параметр этой stored procedure остается 0 при ее интерактивном запуске. Но если по каким-то причинам вас угораздило изменить его на 1 и вы потеряли все активные subscriptions - не все потеряно. Экспортируем все (Sic!) установленные в  BizTalk group applications и импортируем их заново из полученных msi. Потерянные subscriptions будут восстановлены!

комментарии: 0 понравилось! вверх^ к полной версии
HTTP Authentication 18-02-2009 01:37


Узнать о том, что запрашиваемый ресурс требует аутентификации, клиент может не раньше, чем запросив этот ресурс. Для чего и служит HTTP код 401. Этот код должен сопровождаться подробностями о том, какая аутентификация ожидается. Не рассматривая здесь Kerberos, как правило, применяются 4 варианта : 1). NTLM (Windows Integratated). 2).Basic, 4), Forms и 4) Digest. Относительно первого, сразу заметим, что он не поддерживается  несколькими версиями Windows Vista, включая Vista Home Premium, а в остальном, это, пожалуй, наиболее распространенный способ аутентификации в мире Intranet и IIS .Ответ сервера, ресурс которого требует WindowsIntegrated Authentication выглядит так:
 

Здесь HTT- header WWW-Authenticate содержит т.наз. "challenge", который клиенту (в том числе браузеру) нужно теперь отправить на NTLM Manager, используя credentials текущего user для шифрования. В ответ NTLM Manager вернет token, который теперь клиент передаст серверу, начиная тем самым вторую фазу аутентификации. Сравнивая переданный challenge с полученным token, сервер решает, может ли эта пара быть признана аутенфикацией клиента, и, в случае положительного решения, дело заканчивается возвратом 200 с ожидаемым ресурсом. В противном случае, клиент получит 401 еще раз без WWW-Authenticate header'a, что является свидетельстовом того, что дальнейшие попытки аутентифицироваться от него больше не ожидатеся. В любом случае,NTLM  не передает по сети клиентских credentials, чем и выгодно отличается от второго способа аутентификации - Basic .

В этом случае, серверный 401 содержит WWW-Authenticate header'e значениe "Basic realm=XXX", что означает, что от клиента в ответ (на второй фазе) требуется передача пары user_name:password, которые идентифицируют клиента внутри realm XXX. Сервер сам ответственен за ведение и учет клиентских записей в этом случае, а также, понятно, за проверку полученной пары среди своих записей. Для передачи пары используется base64 кодирование.

Реагируя на серверный 401 с WWW-Authenticate , браузеры обычно показывают окно, в котором (с соответствующим предупреждением) пользователю предлагается ввести свои credentials, для BizTalk host instance, который вызывает, скажем, Web service, соответствующие credentials настраиваются на уровне Send Port, но могут быть установлены и из оркестрации с помощью SOAP.UserName, SOAP.Password и SOAP.AuthenticationScheme properties.

[414x459]
 

Обычно ни тот, ни другой способ не являются достаточно гибкими для решений BizTalk, поэтому часто в случае basic authentication  прибегают к SSO, который транслирует credentials учетной записи hosta в credentials, пригодные для проверки в web realm. Разумеется,SSO ничего не меняет в HTTP- протоколe.

 Во всех случаях аутентификации, клиентский код использует <proxy>.Credentials для этих целей (обычно устанавливая это в System.Net.CredentialCache.DefaultCredentials)
 

комментарии: 0 понравилось! вверх^ к полной версии
Properties promotion/demotion 07-09-2008 01:59


 As a direct message creator, the receive adaptor has a practically unfathomable power over the message context. It kindly writes to the context whatever it is that an adaptor designer's infinite power contemplates: the properties it considered to be useful and valuable, but two of these properties are extremely important.
These are "MessageType" and "InboundTransportType". They so important not only because most of subscriptions are evaluated on the "MessageType" stuff, but also because sometimes promoted properties are only the one way to link together the content and the context of the message.
The story of promotion, began in the receiver, is unfinished business. If following the BizTalk Engine and the XML Pipeline (if desired), within which XML Disassmbler component pushes up all the message fields and attributes marked as promoted, into the same message context. You can rely on this feature for safely map the inbound document into another one as the part of receive port. If the target of mapping does not have the same structure as the original message and you wondering how to pass into the 'extended' fields - just promote them in the original message and XML Disassambler will do the job. 'Extended' fields will be passed into in the message context.
Following the message life-circle, the context is brought to the orchestration.
 Here the things going easy: despite any transformation, you can pass through the context as simple as coping it all (Message2(*) = Mesage1(*)) or its part (Message2(MyPromotedPropert1) = Message1(MyPromotedProperty1) ) to the transformation target. But how the orchestration itself can promote additional properties?
Well, it actually does so a lot when it uses correlation sets, dynamic port addressing and so forth. All it is about the promotion. For example, when XLANG/s schedule assigns the dynamic port address; it actually asks the engine to stick the address property on the outbound message so the further processing will takes it into the consideration. The same is true about the correlations: the correlated properties are promoted when leaving the schedule on behalf of their 'initialization' and are participated in subscription evaluation when they come back in the 'following' receive.
Explicit intentions to promote the property also may be expressed by orchestration, but they remain just intentions.  Without passing to XML Disassembler these properties will never reach the context – so happens to the promotions did in the orchestration and passed through direct send port: no pipeline is attached to direct port processing and consequently no XML Disassembler will realize the intentions.
Going in opposite direction, there is must be a way to do the reverse operation that may be called as simple as context’s cleaning up. It’s generally good idea to keep the context as small as needed for the processing. (Maybe because the fact that if the context were only growing it would become Samoan.) Such operation is known as demotion and all its about is to populate the message content by the properties already published to its context. Usually after demotion, the context properties are cleaned up and sometimes just this part of the procedure is called demotion as well.
As you can deduce, the component responsible for this duty is XML Assembler build-in with a XML Send pipeline, although it is a bit quirky then its brother. Indeed, it rationally designed to ignore the message entries if they already were populated.  Given that sadness fact that xml-nills are considered to be the first class citizens in the document population, this rationality leaded to confuse many BizTalk-programmers. The special <empty> value presented in BizTalk mapper in 2006 edition dilutes the population.
Worth to note that property demotion may be based not only on the custom property schema you added to the BizTalk solution. When you build up the promotion for the document schema, you can reference any pre-build property schema that shipped with BizTalk.

комментарии: 0 понравилось! вверх^ к полной версии
(Почти) все о BizTalk MessageBox 29-08-2008 17:43


MessageBox - это центральная часть BizTalk Server, которая служит для ведения сообщений и их адресации. MessageBox представляет собой базу данных, реализованную на Microsoft SQL Server, в основе дизайна которой лежат следующие фундаментальные принципы :

  • MessageBox - это единственное место, через которое проходят все сообщения. Структура база не расширяема, не допускает никаких изменений и вообще, будь такая возможность у SQL Server, база была была защищена от вмешательства целиком и полностью как настоящий чёрный ящик.
  • Доступ к MessageBox имеет только специальная часть BizTalk Server - Message Agent. Ему, почти единственному, разрешено записывать в базу новые объекты, удалять и изменять их. Message Agent не имеет документированного API. Доступ к нему, в свою очередь, возможен только в той степени, в которой внешним программам - прежде всего, адаптерам - нужно абстрагировать процесс создания, модификации или удаления сообщений в терминах абстрактных сообщений, но никак не в терминах объектов базы данных.  Все остальные программы могут, но очень осторожно, исполнять только запросы на выборку и просмотр объектов из таблиц базы. Messageagent реализован в виде COM server, из .NET доступ к нему возможен с помощью Microsoft.BizTalk.Agent.Interop.
  • MessageBox разработан для поддержки только корпоративных сетей. О попытках вынести его за пределы таких сетей, сделав доступным для Интернет-сервисов, см. здесь.
  • Попав в MessageBox, сообщение становится неизменяемым, т.е. все, кто получают это сообщение впоследствии, на самом деле имеют дело с его копией, в которую нельзя вносить изменений. С точки зрения MessageBox, этот принцип позволяет быть более экономным, сохраняя только оригинал сообщения, и в дальнейшем увеличивать/уменьшать только  связанный с ним RefCounter.

Для повышения эффективности сообщения записываются в MessageBox как batch. Batch генерируется в MessageAgent  и может считаться набором сообщений, рассматриваемых как одна транзакция. Многие batches однако, состоят только из одного сообщения.

Как часть batch, сообщения попадают в MessageBox в два этапа. На первом этапе вызывается stored procedure bts_InsertProperty, задачей которого является занести все контекстные properties сообщения в таблицу MessageProps в сопровождении соответствующего batchID. Сразу же после этого вызывается другая stored procedure - bts_FindSubscriptions, кот. должна проверить subscription predicates на сравнение с записанными properties, т.е. найти хотя бы одного подписчика для записываемого сообщения. Если не удалось вычислить ни одного подписчика, сообщение удаляется из рассмотрения с сопроводительной ошибкой. (Error event 5778 - "Could not find a matching subscription for the message."). 

Если хотя бы один подписчик найден, сообщение записывается в таблицу spool, где оно и будет находиться на все время своей жизни внутри BizTalk. Еще до записи в таблицу MessageProps, сообщению присваивается уникальный GUID, кот. для таблицы spool записывается в колонку uidMessageID. Это и есть уникальный номер сообщения, на который, начиная с этого момента, будут ссылаться все остальные записи в других таблицах, или, другими словами, все BizTalk-services, которые тем или иным способом будут иметь дело с этим сообщением. Stored procedure, исполняющая запись сообщения в MessageBox, называется bts_InsertMessage. Она же, зная связанный с сообщением batchID,  удалит только что записанные MessageProps, если запись завершилась успешно.

Сообщение состоит из parts. В простейшем случае из одной, называемой body. Но и в более сложных случаях невозможна ситуация, когда подписчик получит только part сообщения, а не его целиком. Тем не менее, с точки зрения MessagedBox, сообщение хранит свои parts отдельно от самого сообщения, в таблице MessageParts. Название bts_InsertMessage не совсем

Читать далее...
комментарии: 1 понравилось! вверх^ к полной версии
BizTalk Webservices exception handling 27-08-2008 03:38


As part of the protocol definition, SOAP provides the mechanism to notify a caller about the failures. SOAP Fault messages are specially designed for this purpose and are structured in extensible fashion. This means that as for callee, it may feel absolutely free to express its own failures as custom defined payloads and use SOAP Fault messages as transport for its transmission on the wire. Таким образом, совершенно естественным для WebServic'a будет определить, как должны выглядеть его exception. Казалось бы не менее естественным ожидать от инфраструктуры WebSerices соответствующей поддержки SOAP Faults : например, прекрасно смотрится WSDL, где при описании Fault methods используются XSD types, включенные в WSDL schemas section. Имея такой WSDL, для parser'a не будет проблемы создать соответствующие клиентский код, в котором все exceptions представлены классами, поддающимися анализу из catch-block. WSDL 1.1 standard  (section 3.6) предполагает подобные конструкции, причем wsdl:fault определяется для каждого exposed method в отдельности с единственным ограничением на single part.

Так дело выглядит в теории, а когда она касается .NET (в частности ASMX) практики, оказывается, что C# не позволяет синтаксически выразить тот факт, что метод в ходе своего исполнения может выдавать exception определенного типа. Именно в этом месте, когда WSDL строится из кода C#, такая возможность была бы весьма полезной. (ср. с throws in C++ и java). Ту же идею в C# можно выразить, используя attributes, например :
[WebMethod]
[WebMethodExceptions(typeof(MyException))]
public string ProcessRequest(RequestItem item)
{
}
но этого почему-то не сделано, а добавлять собственный WebMethodExceptionsAttribute class совершенно бессмысленно, поскольку .NET parser (wsdl.exe) его никак узнать не может.
С другой стороны, .NET предлагает class - SoapException - который может облегчить работу с SOAP Faults. Здесь рассматривается пример, кот. демонстрирует, как вручную построить внутренний XML для SOAP Fault, отправить его клиенту, получить (catch) его на клиенте, и наконец, провести процедуру по разборке полученного SOAP Fault, чтобы добраться до переданного XML. Понятно, что последний шаг, ради которого, собственно, все это и создавалось, проводится, предполагая, что "телепатически" клиенту известна не только структура полученного XML, но и его namespace. Завораживающе!
Но и это не всё! Даже если каким-то образом WSDL будет построен с wsdl:fault элементами, BizTalk (кроме R2) все-равно затруднится работать с пойманными exceptions ни как с объектами, ни как с сообщениями, построенными по schemas. В R2 ситуация значительно лучше, во всяком случае, переданный <details> элемент не проглатывается, но schemas для exceptions по-прежнему не регенрируются. Поэтому самое лучшее, что можно сделать с полученным из <details> XML (известным в XLANG/s как exSOAP.Details.OuterXML)  - сохранить его где-нибудь в базе, как, например делает ESB Guidance, для последующего анализа.
С exception, пойманным в оркестрации, разобрались. А что делать с теми, которые генерируются из send port'a? Прежде всего, без "Failed message routing", exception в WebService приводит к подвешиванию (suspend, resumable) соответствующего pipeline, что не имеет никакого смысла для случаев, когда порт вызывался из оркестрации (В самом деле, оркестрация уже давно завершилась). В BizTalk 2004 единственной возможностью справиться с такими подвешиваниями был NACK. NACK это просьба к BizTalk генерировать специальный тип сообщений вместо того, чтобы подвешивать исполняющийся сервис. NACK можно запросить только из оркестрации; при этом создается дополнительный instance subscription, с помощью которого удается "подавить" exception из send port, но, во-первых, такие уведомления требуют специальной обработки (и, по-моему, не применимы к WebServices), а во-вторых, они
Читать далее...
комментарии: 0 понравилось! вверх^ к полной версии
Две Олимпиады 24-08-2008 00:32


Виндсёрфер Шахар Цубери из Эйлата завоевал бронзовую медаль на Олимпиаде в Пекине. Президент и премьер-министр Израиля не замедлили позвонить герою, чтобы поздравить его с национальным достижением. "Я лично следил за всеми твоими заплывами", - любезно сказал Ольмерт.
 А две недели назад в Мадриде проходила другая олимпиада в виде спорта, который называется математика. Президент не сопровождал национальную сборную и премьер-министр не следил за их выступлением. Он никого не поздравил, хотя количество медалей, доставшихся Израилю, там было значительно больше. И в дисциплинах, наверное, не менее важных, чем винсерфинг. 
 У них нет национального центра подготовки и после возвращения домой им вряд ли предложат контракты в рекламных агенствах "Пумы" и "Адидаса", но тем не менее, они привезли следующее : Дан Кармон - золотую медаль (35 баллов из 42 возможных), Офир Городецки - серебрянную медаль (24 из 42), Омри Бен-Элиезер (20 из 42) и Олег Злиденко (19 из 42) - бронзовые медали. Еще двое - Оhад Нир и Лир Баhак - получили почетные грамоты. Я почему-то уверен, что чем бы ни закончилась нынешняя каденция кабинета министров, никто и во время следующей не изменит мнения о том, какой же вид спорта являтся приоритетным в Израиле, сколько требует его финансирование и кому нести бело-голубой флаг символом национальний гордости и самоуважения на торжественном параде отрытия следующей Олимпиады.
P.S. Вопросы математической олимпиады можно найти здесь.
комментарии: 0 понравилось! вверх^ к полной версии
ESB Guidance 19-08-2008 02:33


Прежде чем попасть в адаптер для ALL.Exceptions порта, сообщение проходит ESBFaultProcessor pipeline, задача которой - "нормализовать" сообщения, поступающие как из завалившихся портов, так и от неудачных оркестраций к единому виду, кот. будет пригоден для сохранения в базе. Итогом манипуляций в ESBFaultProcessor является вызов SQLAdapter'a с сообщением, подготовленным для вызова stored procedure [usp_insert_Fault].
комментарии: 0 понравилось! вверх^ к полной версии
BizTalk Q&A 10-08-2008 03:29


Q. What are two main types of subscriptions? What the difference between them?

A. There are two types of subscriptions in BizTalk server: activate and instance. The activate subscription initializes the service for the first time, the instance subscription picks up one of the services which already has been initialized according to its instance ID. Instance subscriptions are usually served for correlations.

Subscriber might be orchestration or/and send port and two administrative operations for subscriber directly apply on its subscription: Enlist and Start. Enlist operation actually creates the subscription but leaves it in "stopped" state until "Start" operation is performed.

(The attempt to use stopped subscriber causes the engine to produce the error 0xC0C01B4D (Subscribing Service is Stopped) and to suspend the service, that initialized the invocation.)

Subscription created for static send port consists of single predicate based on BTS.SPTransportID property that uniquely generated for this send port. (*)

In contrast to static send port, dynamic send port creates as many subscriptions as a number of registered transmit transports (send adapters) known to engine. A single dynamic send port produces, for example, 14 subscriptions, if the system has 14 registered send adapters, each of them having the following structure

BTS.OutboungTransportType= "File"/"MSMQ"/"SMTP"/"FTP"/"HTTP"/"SOAP" etc.

BTS.SPID =

BTS.OutboungTransportLocation exists

Subscriptions for direct binding models use only predicates based on BTS.MessagesType property, allowing the high degree of freedom to process messages through such subscription.

Partner port subscriptions are based on evaluating three properties which promoted by orchestration: BTS.PartnerPort, BTS.PartnerService and BTS.Operation.

Subscriptions have the notion of priority. As for BizTalk 2006 R2, subscriptions for orchestrations always have priority 7 when the EPM-subscriptions have lower priority – 5.

-----------------

* - This property is vitally needed for the orchestration to know, how to deal with messages leaving it for 'late binding'. After orchestration is deployed with 'late binding' option, it has no idea about how to connect the messages from 'uses' port (logical send ports) to EPM ports. When you specify the actual send port from binding tab on Orchestration Properties dialog, its SPTransportID is saved, letting to XLANG/S to know that this GUID will be appended and promoted for each message going through logical send port. Note, that no additional subscription is created for logical send port in this case.


Q. What is the Message Agent?
A. Message Agent is the BizTalk sub-system wrapping-out the operations with MessageBox database. In particular, it is responsible for publishing/subscribing mechanism implementation. No component of BizTalk (including adapters) talks directly to MessageBox's objects: tables or stored procedures, the MessageAgent exposes its functionality to all other sub-systems of BizTalk Server.
комментарии: 0 понравилось! вверх^ к полной версии
Dynamic ports configuration 27-07-2008 18:00


Когда сообщение покидает оркестрацию, его "OutboundTranspoprtLocation" property должна содержать URI, по которому MessagingEngine будет в состоянии сформировать полноценный вызов адаптера со всеми необходимыми ему параметрами. Например, если его значение "file://c:\FileDrops\Out", то этого достаточно, чтобы MessageEngine заключил из него, что запрашивается FILE-Adaper (по т.наз. moniker - "file://") и передать ему нужно следующим за ним адрес - "c:\...".
На этом, собственно, можно было бы и остановиться с динамической конфигурацией, если бы не оригинальный способ назначить "OutboundTransportLocation" property из оркестрации.
XLANG компилятор, придерживается того правила, что если динамический порт присутствует в оркестрации, он должен быть назначен. Из этого правила следует, что присвоения вида
Message_out(BTS.OutboundTransportLocation) = @"file://c:\FileDrops\Out";
из Assignment Shape не решают не разрешают неопределенности компилятора относительно динамического порта, хотя, с точки зрения Messaging, вполне достаточны. В чём логика этого ограничения компилятора?
Помимо очевидного внимания, которого требует ситуация с неопределенным динамическим портом в run-time, компилятор предусматривает возможность того, что через такой порт может пройти много разных сообщений. Вместо того, чтобы проверять для каждого из них правильность заполнения "OutboundTransportLocation" property, назначение адреса самого порта
Port_Out(Microsoft.XLANGs.BaseTypes.Address) = @"file://c:\FileDrops\Out";
гарантирует, что любое сообщение, проходящие через динамический порт, прежде чем покинуть оркестрацию, получит требуемый property самим фактом его связи со сконфигурированным портом.
Достойная забота и о run-time, и о возможных разветвлениях в оркестрации, однако остается открым вопрос о том, как можно назначить динамический порт в сценариях без оркестраций.
MS ESB Guidance (Dynamic Resolution sample) предлагает receive pipeline component - ESB Dispatcher, который читая свои per-instance properties, выставляет "OutboundTranspportLocation" и "OutboundTransportType" properties полученного сообщения.
Заметим попутно, что этот component использует для динамического назначения порта созданный в P&P Resolver. Этот, в свою очередь, может создавать любые monikers для существующих адаптеров, использовать для этого BRE, XPath (т.е. читать конфигурацию из самого сообщения). Особенно интересно, что ESB Dispatcher может исполнить Map, дополнительно к Inbound Maps ReceivePort'a.
комментарии: 0 понравилось! вверх^ к полной версии
KFM. June - July 26-07-2008 17:45


1. Godfather ( Al Pachino ) - 5. by Coppola

2. Godfather II (.Al Pachino/ R. De Niro)  - 4.

3. The Fifth Element (B. Willis, Милла Йовович) by Luc Besson (fr.) -3. Why such a perfect girl shoul have a red hair?

4. Hostel by Eli Roth. Produced by Q. Tarantino - 4

5. Rocky Horror Picture Movie - ?

6. Death proof (V.Ferlitto as "Butterfly", R.McGovan as Pam Greer) by Q. Tarantino (2-nd part of Grindhouse) - ?

7. Planet terror (rose McGovan as Cherry Darling, F. Rodriguez, Marley Shelton as Dr. Dakota Block) by R.Rodriguez ( 1-st part of Grindhouse)

8. Truman show by Peter Weir - 4.

комментарии: 0 понравилось! вверх^ к полной версии
WCF vs. BizTalk EPM vs. WebServices 28-06-2008 20:59


Аналогия между WCF endpoints и Receive/Send ports в BizTak'e настолько разительна, что я не удивлюсь, если следующая его версия (после R3) полностью заменит BizTalk EPM на WCF WAS.

Создание WCF Service в этой аналогии сопоставимо с созданием orchestration.
А(ddress). Выбор адреса, через который будет доступен сервис, зависит в обоих случаях только от требований клиентского приложения. Как одна и та же оркестрация может быть доступна через разные порты, так и WCF сервис может быть доступен через несколько независимых endpoints.Создание как портов, так и endpoints совершенно не зависит от самого сервиса.
B(inding). Привязка (binding) сервиса к адресу дается в BizTalk настройкой портов, а в WCF - настраиванием endpoints. Каждый endpoint/port имеет в свою очередь независимо-настраиваемые свойства, кот. в WCF называются behaviors. Аналог в - свойства порта, как, например, tracking, authentication etc.
C(ontract). Сервисы BizTalk ориентированы на сообщения, кот. имеют строгую структуру (XSD schemas). Сервисы WCF вместо XSD требуют строго структурированных контрактов/интерфейсов, т.е. описания данных в более свободной другой форме. Не забудем, однако, что сообщения BizTalk могут быть, вообще говоря, произвольными .Net-классами.

В то время как для порты BizTalk могут исполняться только внутри Windows service, известного как BizTalk host instance, существует несколько моделей хостинга для WCF сервисов. Они могут исполнятся 1) в специально созданном для этой цели приложении (т.наз. self-hosting model), 2) в IIS (конечно, речь идет о IIS 7) и 3) в WAS (Windows Activation Service). На этой картинке можно видеть WCF сервис, настроенный в IIS7 на поддержку и http, и tcp, и named pipes, и msmq.

[699x509]

По аналогии с тем, как поступающие сообщения записываются BizTalk адаптером в очередь сообщений для своего host'a, архитектура WAS использует для этих целей очередь того IIS Application Pool, который настроен исполнять WCF сервис. А именно, один из protocol listeners (для http это http.sys драйвер) по мере поступления сообщений записывает их в очередь Application Pool, далее задачей listener adapter является извлечение сообщений из этой очереди для передачи protocol handlers. Последние исполняются внутри WAS, который отвечает за активацию protocol handlers, их конфигурацию и проч. Можно сказать другими словами, что используя WAS, IIS больше не зависит от http для активации своих внутренних процессов (т.е. в конечном итоге - своих applications, которые и являются WCF сервисами).

Все это очень похоже на взаимодействие BizTalk адаптеров с Messaging Agent, причем для последнего, как и для WAS, обрабатываемый протокол не существенен.

Обычные Web-Services не вписываются в эту систему, но из-за их широкого распространения разработчики привыкли считать , что

  1. разделение интерфейса и транспортного протокола является скорее теоретической выдумкой (что, право сказать, не далеко было от истины в года расцвета COM) и
  2. легче создать клиентское приложение, поддерживающее SOAP поверх HTTP (особенно с повсеместной поддержкой  Ajax), чем заставить сервис поддержать нужное количество клиентских протоколов.
комментарии: 0 понравилось! вверх^ к полной версии
Etgar Keret 10-06-2008 13:46


1. The Story About a Bus Driver Who Wanted to Be God.
2. Goodman
3. Hole in the Wall
4. A Souvenir of Hell
5. Uterus
6. Breaking the Pig
7. Cocked snd Locked
8. The Flying Santinis
9. Korbi's Girl
10. Shoes
11. Missing Kissinger
12. Rabin's Dead
13. Plague of Firstborn
14. Siren
15. Good Intensions
16. Katzenstein
17. The Mysterious Disappearence of Alon Shemesh
18. Our Last Story and That's It
19. Jetlag
20. The Son of the Head of the Mossad
21. Pipes
22. Kneller's Happy Campers
комментарии: 0 понравилось! вверх^ к полной версии
Save BizUnit for QA 20-05-2008 01:05


Пока BizUnit используется программистами, их не смущает ни тот факт, что TestSteps для этого framework должны быть написаны на XML, ни тот, что для их запуска нужно откомпилироварь т.наз. boilerplate code. Тем более программисту не может помещать дюжина параметров при создании таких TestStep как WebService Invoke : SOAP-Action, WS Namespace etc. - естественно ожидать от программиста, что составление таких сценариев не составит для него большого труда.

С другой стороны, когда BizUnit пытаются использовать как средство QA, эти же свойства framework становятся непреодолимой преградой для тех, кто не знаком с кодированием. Даже если прилежный сотрудник QA освоит XML-формат сценариев, то уж компилировать boilerplate code ему просто не на чем : не устанавливать же VS на каждой машине QA.

Может быть поэтому, а может быть в силу разделения труда между производством (программированием) и техническим контролем (QA), BizUnit применяется только программистами, да и то так, как бог на душу положит. Методические проверки ведь все равно остаются за QA; например, code coverage это разве не методология?

В общем, картина довольно грустная : BizUnit сам по себе и QA сам по себе.

Прежде чем пытать решить эту проблему, неплохо было бы посмотреть по сторонам с тем, чтобы узнать, кого еще она беспокоит и кто уже пробовал думать иначе, чем Kevin B Smith. Начать с того, что некоторые пытались просто облегчить процесс создания TestSteps, генерируя их XML из UI. К сожалению, автор BizUnit не предусмотрел настоящей metadata для steps, поэтому, BizUnit Designer, например, вынужден довольствоваться "документацией" (я все-таки надеюсь, что под "документацией" они имеют в виду комментарии в коде самого BizUnit).

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

Собственно на этом обзор рынка и заканчивается, оставляя впечатление, что либо BizUnit не принимают всерьез, либо наоборот - настолько принимают, что боятся слово поперек сказать.

Начнем с сериализации. Даже если реализовать Step-классы с необходимыми properties для XML-сериализации, это не избавит от необходимости в исполнении boilerplate-code, а только разломает существующий BizUnit framework. Представляется, что это слишком догорая цена для возможности автоматической генерации test cases. Поэтому просится сериализовать Step-классы с необходимо добавленными properties в XAML.

Что это даст? После сериализации полученный XAML можно скомпилировать в полноценный assembly, и если добавить к откомпилированным классам и методам атрибуты NUnit (TestFixture к классам и Test к методам),- получится загружаемый в NUnit модуль. Мало того, если откомпилировать сериализованный XAML в исполняемый assembly, не понадобится и NUnit. Очевидным недостатком такого подхода является то, что нужно по сути выбросить всю существующую реализацию BizUnit и переписать под XAML все уже созданные для него Step-классы. Наградой за приложенные усилия будет возможность создавать тесты автоматически, без какого-либо участия программиста в написании кода для теста. Другими словами, XAML позволит превратить BizUnit в настоящий инструмент QA.

Итак, попробуем. Сериализация в XAML не представляет особых трудностей, поэтому не стоит на ней останавливаться, займемся компиляцией XAML.

комментарии: 0 понравилось! вверх^ к полной версии
BAM - Business Activity Monitoring 01-05-2008 02:30


Activity creation and Deployment.

1. Первый шаг предназначен для бизнес-аналитиков и состоит в использовании Excel Add-In.  В Excel 2007 он расположен под закладкой "Add-Ins" : [648x183]

Обратим внимание на то, что этот Add-In устанавливается независимо от остальной инфраструктуры BizTalk на любой компьютер бизнес-аналитика, оборудованный единственно что Office. Его использование состоит в определении составляющих единиц исполнения - Activities и CheckPoints (кот. в UI называются 'items') -естественно, в бизнес-понимании этого слова. Например, хорошим Activity будет, скажем, время старта оркестрации.  Определение Activities требует понимания бизнес-процесса, во всяком случае его основных показателей, и исполняется Wizard'ом, по завершении которого бизнес-аналитику предлагается сохранить результаты своей деятельности в XML-файле. Вот для примера фрагмент такого файла :

[699x334]

2. Этот файл, известный как BAM definitions, передается разработчику или лучше - администратору для того чтобы тот "опубликовал" его содержимое. Под этим понимают автоматический ( с помощью bm.exe ) процесс создания таблиц, views и stored procedures  в специально приготовленной для этого базе данных.

База эта называется BAMPrimaryImport (BTI).


[показать]

Instrumenting Orchestrations, Pipelines and Ports.

 Как видно из предыдущего рисунка, любое приложение, может использовать специально разработанный API  для дальнейшей работы с BAM. Прежде всего этот API предназначен для приложений BizTalk, но ничто не мешает и другим приложениям .NET обращаться к нему, причем единственное, что для этого требуется - это присутствие на вызывающей машине файла Microsoft.BizTalk.Bam.EventObservation.dll без никаких других компонентов BizTalk Server 2006 (В BizTalk 2004 это не так!). Здесь подчеркивается, что это единственный поддерживаемый способ обращения к BAM, т.е. прямое обращение к созданным в базе объектам настоятельно не рекомендуется.
 В рамках этого подхода, существует два способа обратиться к BAM. Первый - это использовать DirectEventStream/BufferedEventStream classes для непосредственной работы с Activities , второй - использовать BAMInterceptor. Первый способ имеет существенный недостаток связанный с тем, что с изменением модели соответствующие вызовы в коде должны изменяться. Это совершенно не приемлемо для оркестраций, поскольку сам смысл использования BAM в BizTalk состоит в изоляции бизнес-модели от ее реализации. Именно поэтому BizTalk-приложения используют только BAMInterceptor.  ( Как мы увидим в дальнейшем, для полной изоляции потребуется еще BTT)

комментарии: 1 понравилось! вверх^ к полной версии
Почему WinFX не использует HTML или SVG. 08-04-2008 02:31


Почему .Net 3 не использует HTML или SVG  ( или о пользе разработки новых языков программирования).

С точки зрения UI, программирование HTML основано на том, что любая программа, кот. называет себя браузером, может показать пользователю определенный набор заранее известных тэгов (table, img etc.). Способ их показа широко обсуждается много лет и услилиями широкой общественности иногда становится если не стандартом, то рекомендацией.  Одновременно он может служить и предметом нападок, если один из браузеров этих стандартов не придерживается. Поддержка стандатов, наоборот, должна открыть перед разработчиками браузеров и их многочисленными (и особенно корпоративными) пользователями мир приложений, где роль дизайнера становится программированием, а фантазия ограничивается только диапозоном стандартизированных тэгов и их стилей.
 К этому надо добавить скрипты. Их роль в современном Web трудно переоценить : кто же склеит вместе эти тэги? Кто же добавит к ним эффекты? Кто, наконец, научит их обрабатывать ввод пользователя и даже передатвать его на заоблачный сервер (a-la Ajax)? Все это сделает скрипт, и соответствующий браузер будет обязан предоставить скрипту программную иерархию тэгов, начинающиюся с главного документа, Web-страницы. Общая модель, однако, скриптами не изменяется : браузер покажет и скрипту, и конечному пользователю только те тэги, которые он знает, даже если из них скриптом сконструированы значительно более замысловатые конструкции.
 В этой перспективе ничего не меняет и серверное программирование : ASP или JSP разделят страницу на UI и бизнес-логику, но прорисовка (rendering) останется за теми же HTML-тэгами, число которых не менялось десятилетиями. Что касается SVG, то этот нонсенс лишний раз показывает, что Web берут не числом, а умением.
 В эту картину не укладывается одно исключение : среди HTML-тэгов есть такой, который вполне стандартно разрешает всем участникам процесса отклониться от стандарта и таким образом взять на себя прорисовку собственного UI. Это <object> тэг. Зона прорисовки этого тэга целиком отдана браузером на откуп самого элемента. О том, насколько продуктивной оказывается такая уступка, говорит тот факт, что ни одна коммерческая страница не обходится без ActiveX или флэша. Все клипы, подавляющее большинство анимации, почти все текстовые редакторы и даже нек. полноценные приложения (Microsoft OWA, Mercury QC)  разрабатываются внутри этого тэга.
 Все это находится в полной противоположности модели, принятой для разработки не Web-приложений.  Для них не существует тэгов и браузеров, но никому не кажется странным, что сам UI-элемент  может успешно прорисовать себя в окне приложения, да и само окно тоже может полностью само выполнить свою прописовку. Конечно и здесь есть свои стандартные элементы, но они не имею ничего общего с HTML-тэгами, и хотя для прикладного программиста они служат иногда тоже только кубиками, из которых составляется внешний вид приложения, но никого не смутит и создание собственных UI-элементов. Причем последние 10 лет эти элементы совсем не обязательно должны оформляться только в виде ActiveX.
  Насколько мне известно, никому до .Net 3 (MyXaml работает с .Net 2, но создан позже)  не приходило в голову или не хватало смелости объединить обе модели программирования UI. Для этого нужно отказаться от браузера как универсального прорисовщика тэгов и, возможно, для этого нужно также забыть HTML и скриты. Согласимся, не всем по плечу такая рубаха.
 XAML успешно решает эту задачу. Помимо того, что сегодняшний XAML ориентирован (прежде всего, благодаря встроенному в VS 2005/2008 XAML-редактору*) на WPF, им можно (нужно!) пользоваться для манипуляций с любыми .NET объектами. Если искусство объектного программирования все-таки существует, то состоит оно, наверное, в умении построить модель, т.е. иерархию связей, моделируюшую предметную область. XAML даст возможность ею манипулировать. Web или не Web - детали.

* - по-моему, его раньше называли Cidor.
комментарии: 0 понравилось! вверх^ к полной версии
Народы мира. Гунны. 23-03-2008 01:15


  Собирательный труд имеет по сравнению с производительным единственный недостаток - недостаточность территории. В выращенном меньше белков и калорий, чем в найденном и добытом на охоте; животноводство также приятнее, чем возделывание, потому, что оно естественнее. Люди занялись сельским хозяйством, однако, совсем не для того, чтобы повысить свой уровень жизни, интенсивное земледелие было единственным способом решить проблему неограниченной рождаемости на ограниченной территории. Но не для гуннов.
  Они произошли, видимо, из тех районов Гоби, где выращивать просто было нечего, а климат, который из всех факторов влияния на характер народа, является самым решающим, способствовал даже не столько преодолению трудностей, сколько подавлению собственного сознания, которое исключительно мешало этим предкам монголов сохранить за собой свойства человеческого рода.
  Слава богу, что мы занимаемся антропологией, а не историей, потому как картина социального быта этого племени способна отбить у многих всяческий интерес к дальнейшим изысканиям : «Могущие владеть луком все поступают в латную  конницу... каждый занимается воинскими упражнениями, чтобы производить набеги... Сильные едят жирное и лучшее; устаревшие питаются остатками после них. Молодых и крепких уважают, устаревших и слабых мало почитают... Обыкновенно называют друг друга именами; прозваний и проименований не имеют» (Кстати, автор этого наблюдения - Н.Я.Бичурин  - был главой русской духовной миссии в Пекине, называясь в то время о.Иакинфом, и здесь мы называем гуннов монголами, полагаясь на его авторитетное мнение, кот., однако, расходится с современным взглядом на вещи).
 Впрочем, сказанное относится не к самим гуннам, а к их предкам - народу ху (современные им китайцы, впрочем, не вдаваясь в общинные тонкости, называли всех своих северных соседей "бэй-ди" - примерно "северные варвары"), который, установив оптимальные для степей сроки беременности и уровень рождаемости (что является, видимо, основной предпосылкой для перехода от племени к нации - см., например, современный Китай), к XIII в. до н.э. перебрался через Гоби, открыв Сибирь.
 Значение этого открытия трудно переоценить. Оно сравнимо с генетическими открытиями Лысенко о возможности наследования приобретенных отклонений  или, по меньшей мере, с установлением первого государства шариата. Потому как, перейдя Гоби, ху обнаружили перед собой неисчерпаемые возможности оставаться самими собой : бескрайние просторы от Байкала меньше всего заставляют задуматься о необходимости сеять и жать.
  Волы лучше оленей как тягловая сила, но мясо оленей вкуснее - вот та истина, которая двигает историю от гуннов к кыргызам. Первые перевезли гуннов через пустыню, съедобные качества вторых до сих пор вдохновляют кыргызскую литературу.
 Тысячелетняя история становления гуннов до III в. до н.э. мало исследована. Не утруждая себя письменностью, они больше тяготели к нефриту для сохранения своих ценностей. Что же касается их устного, то тут я должен заметить, что согласно китайским пословицам, язык вообще теряет смысл как только получает выражение в иероглифах. (sic! - еще одна китайская мудрость). Удивительно ли, поэтому, что единственным словом, уцелевшим до сегодняшнего дня из гуннского есть слово «сагайдак». Что касается тюркских языков, то только финны могут оценить всю ценность этого подарка.
  Другой подарочек оставили гунны китайцам, первый император которых, Цинь Ши Хуан(*), для теплого приема гуннов с размахом построил Великую Китайскую стену. Бесполезность сооружения сравнима только с его длиной (ок. 6 тыс. км.), чего, кстати, нельзя сказать о стене Шарона - здесь коэффициент значительно больше в виду электронных систем предупреждения.
  Возможно только это и заставило гуннов самоорганизоваться. Если бы не система родового управления в армии, то они, безусловно, ушли бы еще дальше, а государственный строй этих кочевников вполне отвечал традициям собирательного труда их предков : всеобщая воинская повинность, вознаграждение воинов результатами своего труда, взгляд на территорию как на основу государства, рабовладение пленными. Веселая жизнь гуннов с тех пор неоднократно пыталась возродиться : чем запорожские казаки хуже? Кстати, и атаманы сечи, и гуннские шаньюи были родными батьками всего соответствующего культурного пласта.
  Потомственные гунны, как и нормальные казаки или граждане Абу-Даби, не знали, что такое налог : благо кочевое право тем успешнее прививается соседям, чем доблестнее воины и/или благочестивее подданные.
 Итак, к началу нашей э. гунны основались в Южной Сибире и Приуралье, где, постепенно смешиваясь с местным населением, они и создали тот тип людей, кот. является предметом нашего
Читать далее...
комментарии: 0 понравилось! вверх^ к полной версии
История народов. Монголы. 15-03-2008 23:25


В XIII веке период беременности у монгольских женщин длился  10−43 секунды, что отвечало наиболее совершенному обороту Земли вокруг Солнца в то время. За один такой оборот большинство монголов разработали соёмбо (см!.), обогатив тем самым человечество символом процветания и обретения буддизма. Тибетские источники указывают, однако, на разделение культурных ценностей между потомками Тему-джина и последователями Гампопы, приведшее к первых на широкий путь орды, а вторых - к строительству первого в мире многолинейного метрополитена Кагью. Оставшиеся монголы были менее склонны к урбанизму, и объединившись под двумя оккупациями маньчжуров, создали собственное государство на берегах Волги - Хурал. (Полностью - Иссык их Хурал, столица на р. Калка с 1223 г.).

Демократические преобразования в Хурале имели место быть и в наше время : согласно древнерусскому поверью, воды Калмыкии, Дагестана и др. суверенных государств были отравлены напитком, состоявшем наполовину из кумыса и наполовину из мацы, что является первым случаем разделения ответственности за демократию между евреями и народами, употребляющими квасное всуе.

Вклад монголов в кирилическое языкознание трудно переоценить. Отцом этого отдела лингвистики по праву называют отца Бурундая (ок. 1208 - ок. 1250), предпринявшего изыскательскую экспедицию в степи Суздаля и Владимира с целью создания первого вертикального словаря монгольского языка. В завершенном виде эта работа была представлена Его Святейшеством Занабазаром Чолбайсаном в северном аймаке консульства Монголии в ООН в 1938 г. как свидетельство внутреннего аншлюса. Известно, что на его решение о главенствующей роли панмонголизма в устранении "ять" из монгольского языка особое влияние оказал известный русский символист Ал. Блок.

Спорт в Монголии не развит, но поддерживается филателией. В удаленные и временно захваченные династией Юань районы пустыни Гоби он он доставляется гужевым транспортом или специальными оказиями по предписаниям Богдо-гэгена Девятого.

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

комментарии: 0 понравилось! вверх^ к полной версии
Около-египтология 16-02-2008 14:26


На т.наз. "Инвентарной стеле" будто бы написано, что Хеопс повелел не построить, а всего-лишь откопать из песка Сфинкса. Вместе с направлением борозд на его теле и на траншее вокруг (горизонтальные должны свидетельствовать о ветровой эрозии, а вертикальные - о дождевой), это и стало предметом около-науки. У истоков спекуляций стоял, видимо, Sir Flinders Petrie. В наше время, его дело подхваченo и развернуто до фантастики. Активно потрудились на этой ниве Graham Hancock, Erich Von Daniken, a Robert Schoch даже приплёл сюда библейских титанов, живших еще до потопа.
комментарии: 6 понравилось! вверх^ к полной версии