For the few MSMQ or NetMsmqBinding WCF users I’ve encountered, here is an error you may encounter in a highly secured environment. 0xC00E008F Binding to the forest root failed. This error usually indicates a problem in the DNS configuration. MQ_ERROR_DS_BIND_ROOT_FOREST This is most likely another firewall problem. If port 3268 is not open, MSMQ cannot register or authenticate with the user’s certificate in AD. Here is the port description: 3268/TCP,UDP msft-gc, Microsoft Global Catalog (LDAP service which contains data from Active Directory forests)
| “We cannot become what we need to be by remaining what we are” | | | -- Max Depree | Max Depree... I think I need a Herman Miller chair for the home office.
As I sit through the last few hours of Juval Lowy’s Architects Master Class, drinking my Honest Tea, I see a great quote on the inside of the bottle. How appropriate. “The greatest difficulty in the world is not for people to accept new ideas, but to make them forget about old ideas.” -- John Maynard Keynes
Despite its pitiful adoption in the developer community, I am implementing Transactional NTFS (TxF) transactions using the Microsoft.KtmIntegration.TransactedFile class. This allows me to reap the benefits of TransactionScope and distributed transactions for file operations (e.g. creates, updates, deletes). This is the only missing piece for typical transactional business applications. With the “KTM” and “KtmRm for Distributed Transactions” services, available only on Vista, Windows 7, and Windows Server 2008, file operations will roll back if the TransactionScope is not completed. There’s just one problem… Transactional NTFS does not work with file shares. I can’t remember the last time I put a “C:\FileStore” reference in a config file. A friendly share like “\\server\FileStore” is always preferred, especially since DFS came about. Attempting to use a share results in the following error message: The remote server or share does not support transacted file operations Don’t read this as “your remote server” or “your remote share”, but rather “all remote servers and shares”. As mentioned in this MSDN article, TxF is not supported by the CIFS/SMB protocols. The error was probably written with the expectation that one day some remote servers and shares would support TxF. I emailed Microsoft about it and received a response fairly quickly. The response was simply: “We understand the need and have plans to eventually support TxF over SMB2, but we’re not there yet and are not ready to announce if or when this will be supported. When it is the documentation will be updated.” I’m not getting my hopes up, but Windows Server 2011 looks to be our only hope before .NET changes beyond recognition and TxF is a distant memory. Until then, I wrapped up all of my TxF code in a WCF service and install that service on the server with the FileStore folder. MSDN article – When to Use Transactional NTFS http://msdn.microsoft.com/en-us/library/aa365738(v=VS.85).aspx TxF Sandbox – Sample Projects (including Microsoft.KtmIntegration.TransactedFile) TxFSandbox.zip
The sole 2010 offering in the USA of IDesign’s Architect’s Master Class conducted by the man himself, Juval Lowy, is only a few weeks away. I checked in at the IDesign web site, and found some updates the world needs to see. If you want to learn something new every day, start at the top of the IDesign Code Library and step through one example each day. Be careful, you might need to re-write every line of code you’ve ever written.
I’ve been using the full desktop version for only a few days, but already love this tool! In just a matter of minutes, I am able to draw a mockup for a screen and start getting feedback. Here is a sample, a CodePlex-like UI, that took less than five minutes. Creating this mockup goes as follows: - Drag a browser element onto the design surface, stretch it and type a URL and title
- Using the “Quick Add” box, type “tab” <Enter> to add the tab control. Type “Home, Downloads, Documentation, Discussions, etc.” and <Enter> again. Reposition the tab element.
- Using the “Quick Add” box, type “link” <Enter> twice to create a link bar for the top right and another link bar to be positioned below the tabs.
- Continue using the “Quick Add” box to add textboxes, label text, search boxes, images, subtitle text, links, and data grids. Type values and reposition.
This tool has a few features I find to be more compelling than the imitators: - Speed – Being able to create and recreate mockups with such speed and usefulness really promotes a good prototyping/review process.
- Look and Feel – Having an obvious “rough draft” look and feel gets your customer thinking about usability and element placement and less about colors, styles, images, copy, fonts, etc. This makes for a very productive meeting involving customers in “the task at hand” and nothing more.
- Demo mode – Similar to MS SketchFlow, you can assign links to buttons that can simulate events. When entering full-screen demo mode, you can click on these links and move between your mockups as if it were a live site. It also has a large pointer (arrow) and always points to the center, staying out of the way.
- Good user community – tons of free extensions like wizards, toolbars, reporting chart elements, and plenty of iPhone/iPad junk for “those people”. I’m a PC.
- Updates and Upgrades – weekly updates based on user feedback and perpetual free upgrades. My emails have been answered within 12 hours, which is quite impressive considering the 6+ hour time difference.
This is free to try on the web, but you cannot save or export the images. You can, however, export the PNG with a watermark. Desktop version gives you some nice added features like copy/paste, undo, and demo mode. Try it out, buy it, and love it!
Check out http://www.balsamiq.com to see one of the best mockup tools ever created. I just started using it and it has already paid off. I have made several mock-ups in minutes that cut my development time in half. Having the ability to demo a new UI to users and change it during the conversation is priceless. More to come… samples too!
In a previous post, I discussed solutions to the dreaded “The flowed transaction could not be unmarshaled” error commonly experienced when using MSDTC transactions with WCF, SQL, TxF, etc. I have once again experienced the un-trusted domain scenario, and can now report with certainty that adding hosts file entries on both machines will correct the problem. Testing this solution with DTCPing.exe between the two machines proves that making only the hosts file change acquaints the client and server and allows distributed transactions to occur. You will find many blog and forum post non-solutions. Adding the hosts file entry or the equivalent domain redirects are the only solutions when working with two machines in disparate, un-trusted domains. Some of the non-solutions you’ll find go so far as to say to change your SQL connection string to prevent current (ambient) transaction enlistment. Not quite a complete solution as your first rollback unit test will fail.
If you have a WCF service exposing endpoints with the NetMsmqBinding, you may come across my old pal, error code 0xc00e002f when you have web application clients. If you’ve already had your required interactive login on the web server with your AppPool’s service account and have already registered your AppPool service account’s user certificate for message queuing, then you should be ok. If you are using IIS 7 or 7.5, there is one more piece to the puzzle. Go into Advanced Settings on your Application Pool, and find “Load User Profile” under the Process Model section. “Load User Profile” on these latest versions of IIS needs to be true to get your service account’s user certificate passed to MSMQ. I fought this for a while before finally finding it. And now… :)
|
Copyright © 2010 Scott Klueppel. All rights reserved.
|
|