Friday, May 27, 2005

I’m not sure why, but figuring out WMI with Microsoft's resources seems to take forever.  I have spent a couple days looking over WMI and trying to figure out how to use it the way I want.  I didn’t find any good .NET resources until the 3rd day when I had already started to figure out what I needed.  That being said, this is the best resource for .NET and WMI that I have found. www.enterprise-minds.com by Klaus Salchner.  He has wonderful examples and the best articles on how to use WMI with .NET.

The one major thing that is missing with WMI are the tools to make it understandable and simple.  I know it is mostly for sys admins that do scripting, but it shouldn’t be so difficult to find out how to use it.  If anyone has worked with WMI leave us some links or resources of better places to find things.

Here are the resources that I finally found that were useful.

—Brendon Schwartz

Posted with BlogJet

5/27/2005 1:01:25 PM (Eastern Standard Time, UTC-05:00)  #    Trackback
What Video Game Character Are You? I am Kung Fu Master.I am Kung Fu Master.

I like to be in control of myself. I dislike crowds, especially crowds containing people trying to kill me. Even though I always win, I prefer to avoid fights if possible. What Video Game Character Are You?

-- Matt Ranlett

5/27/2005 10:35:03 AM (Eastern Standard Time, UTC-05:00)  #    Trackback
 Tuesday, May 24, 2005

The kind folks in the UK sent me a link to a series of short (15 minutes or less) webcasts called MSDN Nuggets.  Waiting for something large to compile or for some kind of batch process?  Spend the time constructively and watch a short video that teaches you the power of docking Winforms components or something.  Bonus, all the presenters seem to have that fun UK accent

— Matt Ranlett

posted with BlogJet

5/24/2005 11:40:37 PM (Eastern Standard Time, UTC-05:00)  #    Trackback

So I’m getting ready for an international business trip (more details in a later blog) when I notice that my brand-spanking new passport has my name spelled wrong!  I’m apparently Matthew Steven Rancett.  Rancett?  I even gave them my old passport with my name spelled correctly!  It’s RanLett!  The lower case L and C don’t look anything alike and they’re located on opposite sides of the keyboard!  Come on, people….  Now I’ve got to call the Passport office and see if this is going to be a problem.  And I need it in 2 weeks!

— Matt Ranlett

posted with BlogJet

5/24/2005 11:35:03 PM (Eastern Standard Time, UTC-05:00)  #    Trackback

I’m not talking about the original Showtime series.  I don’t know who’s been reading this blog, and for how long, so I’ll catch you up.  After six years of marriage, Deanna moved out of the house in October of 2004.  Our divorce was finalized the following January.  In the time between now and then, I’ve met Kim.  We’ve been dating for several months now.  I’ve spent a lot of time sorting out my feelings these past several weeks, and now I feel like my head is on straight.  So last week I used the L word and told her that I love her.  I think I could possibly have been more romantic, but I’m a computer programmer, not a soap opera star.  Anyway, she says she loves me too…

Anyway, I figure a week went by, so I’d share with the rest of the world…

You may now all go back to your regularly scheduled programming.  Pun intended.

— Matt Ranlett

posted with BlogJet

5/24/2005 11:30:33 PM (Eastern Standard Time, UTC-05:00)  #    Trackback

Check out the unofficial list of unsolved codes and ciphers, including the Beale Ciphers which might have been the inspiration for that utterly uninspiring movie National Treasure.  Included in the list are some ancient scripts which have defied translation for nearly 4000 years!  Don’t forget about the coded messages left behind by the Zodiac Killer – not all of these have been broken and the killer has never been caught.

— Matt Ranlett

posted with BlogJet

5/24/2005 10:54:38 PM (Eastern Standard Time, UTC-05:00)  #    Trackback

I freely admit that I’m a Microsoft fanboy when it comes to the Xbox vs PS2 discussion.  Sure, the PS2 has like 10 times the number of games, but 90% of them suck!!  The original Xbox had so much going for it (hard drive, online play, etc) when it came out that I couldn’t even consider the PS2.  Sony seems to be coming back with some improved features for the PS3, but Microsoft is widening the gap, crushing the PS3 with provable hardware superiority:

(from Bit-Tech.net)

  • 3 CPU cores, each with a form of HyperThreading for 6 simultaneous instructions
  • The graphics engine of the Xbox 360 is nearly 2 years in the future for PC cards
  • Heatpipe based liquid cooling = quiet in the living room
  • Wireless controller that charge batteries via USB (plug in when not in use)
  • Built in Media Center Extender (dammit – now I have to buy a Media Center PC)

( from the “Xbox Live Director of Programming”, a 4 part series )

  • Xbox 360 has more general purpose processing power and more memory bandwidth than PS3
  • The PS3 excels at floating-point operations, which are less important in the time of GPUs
  • Xbox 360 has a faster GPU w/double the texture samplers of the PS3
  • Xbox 360 has over 5 times the RAM bandwidth for SPEED!

More hardware based reviews here
CNet previews the Xbox 360 here
PlayStation.com shows off the PS3 tech specs
CNet previews the PS3 here

All of this has me so excited that I’ll probably be in line somewhere at midnight to get mine (provided I don’t pre-order or win a free one).

— Matt Ranlett

posted with BlogJet

[Edit] – Microsoft has announced that the Xbox 360 WILL be backwards compatible with existing Xbox games.  The announcement was made at E3, ending months of speculation.  The post I’m linking to is actually from a Microsoft Xbox developer working on backwards compatibility.  This is fantastic because I currently own 24 Xbox games (I buy them off of Ebay at an average $9.00 per game, including shipping).  That would be a big waste if I couldn’t play my existing games on the new console.

5/24/2005 10:45:23 PM (Eastern Standard Time, UTC-05:00)  #    Trackback

I’m going to have to give my rusty time-management skills a workout.  I’d previously cut DNR recordings from my schedule of “Things I Can Do In A Day” because I’ve been putting in more time on job and community related activities.  I’m sure I’ve missed some great episodes (all available for download after the fact).  I was reading through the blog on www.msquaredweb.com (just who is Mark, anyway?) when I found a reference to the coolest demonstration of XHTML and CSS I’ve ever seen. 

You absolutely must check this out: www.csszengarden.com

Thanks for the link Mark!

— Matt Ranlett

posted with BlogJet

5/24/2005 9:59:18 PM (Eastern Standard Time, UTC-05:00)  #    Trackback

Brendon pointed me to this link where Tim Heuer writes up an excellent post about what every SharePoint developer ought to know.  Check it out!

— Matt Ranlett

posted with BlogJet

5/24/2005 2:04:55 PM (Eastern Standard Time, UTC-05:00)  #    Trackback

I've apparently got too many e-mail addresses to manage.  I found out through an e-mail from the local radio station that I won free tickets to an AudioSlave concert.  The concert was Monday at about 9pm.  I checked my mail on Monday at 11pm!  D'oh!

-- Matt Ranlett

5/24/2005 12:10:58 PM (Eastern Standard Time, UTC-05:00)  #    Trackback
 Monday, May 23, 2005

I just finished watching Mike Benkovitch’s excellent introduction to replication in SQL Server 2005 webcast and heard that MS is deprecating Attach and Go replication in Yukon.  Uh oh!  We use that at our company to prevent the distribution database from being overwhelmed by the sheer size and volume of our snapshots.  We’re going to have to come up with a new plan if this one isn’t going to work anymore.

— Matt Ranlett

posted with BlogJet

5/23/2005 9:45:37 PM (Eastern Standard Time, UTC-05:00)  #    Trackback

You've all heard of the Six Degrees of Kevin Bacon game.  How about finding the shortest path from anything to anything.  Omnipelagos do this.  Check out the link between Kevin Smith (director of Clerks) and bacon (yummy pork product).

-- Matt Ranlett

5/23/2005 11:29:08 AM (Eastern Standard Time, UTC-05:00)  #    Trackback

Pat Piccolo has posted some of his photos from Code Camp online.  Check them out here.

— Matt Ranlett

posted with BlogJet

5/23/2005 11:05:22 AM (Eastern Standard Time, UTC-05:00)  #    Trackback
 Sunday, May 22, 2005

I made it to the Developer Expo this past Friday ( I took the day off work – burned a VACATION DAY for it, but it turned out to be worthwhile )

Kirk Evans gave us a preview of the new Visual Studio Team Services as part of the keynote.  I’ve actually heard about this stuff before, so I’ll just link you to more information about it rather than going into detail in this entry: VSTS

Structured a lot like Code Camp, there were three tracks with five total breakout sessions.  I’ll tell you about the ones I went to.


Service Orientation per Kirk Allen Evans

Connected Systems are not all about communications – it’s about bringing your applications to new life.  It’s about “increasing revenue and reducing costs” – Kirk’s most repeated quote.  The list of advantages to connected systems and the challenges look like the same list; info worker productivity, business agility, value chain integration, end to end security and trust, seamless access to information.  Basically, with connected systems, once you figure out how to get past the challenges, they become advantages in making your enterprise more adaptable and faster than your competition.

The problem with connected systems – getting data from point A to B to C with context.

Attempts thus far.

  • REST: representational state transfer – recently hyped as web services by Yahoo, Amazon, and others.  REST = POX (plain old XML) bound to HTTP.  REST sounds like SOAP without the envelope – deliver an XML packet and use HTTP verbs to decide what to do with the XML.
  • EAI – application integration through a central system.  High licensing cost, complexity, vendor lock in , scalability (single point of failure)
  • ESB – Enterprise Services Bus – many interconnected central points.  Architecture or SKU(product).  Programming model silos, slow to adopt WS-*.  MS answers with BizTalk and CSF (Common Services Framework) today, BizTalk and Indigo in the future.

SOA – another step on the path to the solution.  SOA is yet another attempt at effective distributed programming (DCOM).  DCOM was too tightly coupled (you had to share types, languages, and ports) to work well.  SOA decouples and only cares about the contract (how to format) and the message (the payload).  We’re driving to connected systems (HST architecture).  To do that, use the WS-* architecture.  The messaging is based on SOAP b/c everyone can speak it.  Security, Reliable Messaging, and Transactions are provided by WS-* extensions.  BizTalk is an implementation of the WS-* specs.  Indigo is a better implementation of the WS-* specs.  It allows for secure, reliable, transactioned messages in three lines of code (as opposed to 27000 lines of code required with WSE 2.0 or 56000 lines of code prior to WSE).  XMLSchema is the canonical schema – the authoritative, common definition.  The schema doesn’t change.  XML Schema is not actually a single schema – it’s a big bucket of lots of different schemas.  Use the schema to fix the contracts surrounding the use of web services. 

FYI – I really had a blast watching Kirk present – he’s a natural, standing up in front of the group trying to restrain himself from craziness like flicking everyone off as he gets wrapped into his own stories.  He’s a great presenter – the best I saw all day.


Richard Weeks from Avanade presents the Enterprise Library:

The Enterprise Library wraps several of the PAP application blocks (Data, Config, Crypto, Security, Exception, Logging, etc).  The goal of the enterprise library is to simplify the use of these blocks.  For example, the extremely slick Configuration tool (add to the Tools menu by customizing the menu) will create all the XML in the App.config file based on a user friendly GUI as opposed to writing the XML on hand.  The Database block allows you to connect to a DB, execute a stored proc, and bind the results to a grid in three lines of code.  The logging component makes logging so easy it’s almost hard to believe.  One line of code – Logger.Write(“text here”) – that’s it!  Based on the config, we were logging to two places at the same time with independently configurable levels of detail.  The exception component allows “exception policies” to be defined and log, wrapping an exception with another exception, replacing an exception with another, or create your own action.  The exception policy tool was really sweet – complete with a list of potential exceptions (reflection, anyone?) you can select from.   Dan and I both enjoyed this presentation – it looks like something really useful.


 Kevin Heldt from Internosis Inc walked us through the development platform for SharePoint:

We looked at the Sharepoint Object Model and how to program against it.  The first two demos were us creating an entire portal site and then adding documents to that site through a separate Admin tool we created in code.  Next we looked at Web Parts and how web parts can be used to provide ASCX type functionality within SharePoint, including creating a Provider – Consumer model to create a data binding relationship between different SharePoint webpart components.  Finally we looked at the process to deploy a SharePoint Web Part to a SharePoint site.


 Scott Bounds from the Microsoft Communications Sector presented Microsoft Identity and Access Management:

How do you handle all the different logons required for all the different applications, both internal and external to an individual organization?  In the past, everything was separate, today we try to integrate and pass security around, in the future we are heading towards federated systems.  The MS core foundation for authentication is Active Directory, a central focal point for network and user management.  AD Application Mode (AD/AM) for LDAP is for local app data.  AD/AM is basically Active Directory but with only LDAP and replication, none of the other authentication stuff AD supports (like the SAM and Kerberos).  It runs as a non-OS service.  Addins like the Microsoft Identity Integration Server 2003 (MIIS) tie lots of different 3rd party applications like SAP, Sun One and other stuff (non-MS stuff) for user synchronization and provisioning.    The goal, as Win2k3 heads towards Service Pack 1, is to reduce the cost of password maintenance.  Plus, you can do mapping between identities so you can expose user credentials to extranets and external users.  This allows separate companies to authenticate each others users across trusted relationships.


 Leslie Sistla from Microsoft gave the presentation on SQL Server 2005:

SQL Server 2005 comes with some new Enterprise Data Management features such as a new isolation level, database snapshots, database mirroring for high availability.  Also Developer productivity and business intelligence features.  Developers get the ability to integrate with Visual Studio and can use multiple languages.  You can write T-SQL for data intensive function and .Net languages for CPU intensive functions and you can seamlessly step cross-language..  You also get a new XML data typeRecursive queries and try/catch exception handling are now supported in SQL Server 2005.  SQL2k5 fits into the SOA model by providing direct web service access to SQL Server.  Query Notifications enable responsive multi-tier caches.  Service Brokers work with distributed messaging and queues.  In Reporting Services 2005, the Business Intelligence Management Studio (separate from the Management Studio) will be able to design reports without Visual Studio.  Coming in 2005 with SQL Server Visual Studio 2005 is a Local Mode where you can run reports without requiring an IIS server.  The expected introduction of SQL 2005 brings with it some significant ADO.Net enhancements.  I’ll blog more about that stuff later.


 

There was a lot of good information packed into these sessions.  I’d have loved to make it to 3 or 4 of the discussions I couldn’t attend.  At some point the content will be placed online.  I’ll post links to it when I get it. 

— Matt Ranlett

posted with BlogJet

5/22/2005 10:21:25 AM (Eastern Standard Time, UTC-05:00)  #    Trackback

A while back, a post on the Atlanta .Net Regular Guys site and a post on the Cerebral Kitchen site explored Digital Rights management and the iffy use of technology to protect IP or intellectual property.  (Here is the original post, but all comments have been lost during the transition from .Text to DasBlog).  The end result of the conversation seemed to be that everyone agreed IP requires protection but current technical implementations of digital rights management software are either completely ineffective or way to restrictive.  I just found this article where Microsoft Research seems to agree that the illegal spread of digital content is unlikely to stop, especially since it’s so easy to find what you want on the darknet – the collection of networks and other technologies that enable people to illegally share copyrighted digital files with little or no fear of detection.

— Matt Ranlett

posted with BlogJet

5/22/2005 12:06:43 AM (Eastern Standard Time, UTC-05:00)  #    Trackback
 Saturday, May 21, 2005

If you have not seen Glen Gordon present you are really missing out.  Every time I see one of his MSDN Events they are always better than the one before it.  This time the parking lot was full because right after the MSDN event Star Wars 3 was showing.  Glen really showed his love for Star Wars when he got there at 7 something AM to protect his space runner from being over taken.
 
This was a very interesting MSDN and the topics were intriguing considering I had just heard the Indigo presentation from David Chappell that morning.  The reason I found it intriguing is because the first topic was on Web services and WSE 2.0.  Glen did a great job of showing how to create and consume the services.  Next Glen showed us how you can WSE 2.0 for your web services to make them more secure, trace their output, and many other options just by clicking the options from the WSE 2.0 screen.  You still ask what was so intriguing about David Chappell with Indigo and WSE 2.0 by Glen.  Well it appears that Indigo will only support WSE 3.0 so you will have to rewrite your applications that are WSE 1.0 and WSE 2.0.  I wouldn’t think that Microsoft would make an MSDN event focused on pushing these technologies without making the point of best practices for moving forward.

After a short break and the popcorn people running out of popcorn temporarily we headed back into the theater for the next presentation.  Glen started out telling us it was SQL 2005 so I was interested in that, but then he showed us so really cool features of SQL 2005 like creating a web service from inside SQL.  This was a really cool feature if you just want to expose some data without writing a wrapper class.  He also showed us how to use Reporting Services to create a URL that you can call from a browser.  Once he had the URL he created an application that called the Reporting Service (SSRS) web service.  He used the Render method of the web service and put tiff files of the report in a Winforms application.  Really cool idea!

The last topic Glen talked about was Click Once deployment; it had the most amount of questions.  It was Click Once deployment.  This was a neat feature to see, but nothing really new from the App Updater Block.  He showed us how you can easily deploy your project with a few settings for another person to download.  You have the option of creating the application to put a Start Menu item in the Start Menu or just running from the web.  He changed the background of the main form and downloaded it with the options.  To do the coding demos Glen showed off some of the capabilities of Snippets.
I really enjoyed the sessions and hope everyone there had a great time.  The content was given out in DVD format and so was VS 2005 Beta 2.  Check out both of these resources for the code shown and the tools to build them with.  See you at the next MSDN Event for ASP.NET 2.0.

— Brendon Schwartz

Posted with BlogJet

5/21/2005 10:10:27 PM (Eastern Standard Time, UTC-05:00)  #    Trackback

So I’m in the office WAY too early.  It’s 5:30 AM as I write this while waiting for a database shrink to complete, but I got into the office at 4 AM.  As I drove in this morning, I thought about the JOLT Awards given out by Software Development magazine this year.  One of their categories is Best General Books – I decided to go ahead and get the category winner, Head First Design Patterns from O’Reilly Press.  I’ve been interested in design patterns for a while now, both as a means for learning more about application architecture and as a means of communicating about applications with other developers [Michael Earls wrote a post about this, but I’m apparently not typing the right keywords into the search engines – I can’t find it].  This book is supposed to be an excellent introduction to patterns, with implementations of each pattern and good and a bad manner.  All of the comments on Amazon.com are glowing and the book beat out my other choice (which will be my next purchase anyway) for the JOLT Award.  Not that I care about the JOLT Awards, but that means at least one person looked at both books and judged this one a better learning tool.

— Matt Ranlett

posted with BlogJet

[note] – it was Wednesday when I wrote this, I just for got to put it online.

5/21/2005 6:18:45 PM (Eastern Standard Time, UTC-05:00)  #    Trackback

Scott Mitchell wrote an article for the 4GuysfromRolla site and a blog post about why he doesn’t use DataSets in his applications anymore.  He got so many comments, for and against, that he wrote a followup article about the topic.  Jeffrey Palermo agrees (almost violently) with Scott in his post about why developers should stay away from DataSets. 

Shawn Wildermuth, Atlanta’s own ADOGuy, is a big fan of DataSets.  A direct quote from his book, Pragmatic ADO.Net – Data Access for the Internet World, “As far as I am concerned, the center of the ADO.Net universe is a new data structure called the DataSet”.

This conversation is interesting – people arguing about the “purity” of the code vs the convenience of datasets.  I, personally, lean towards convenience.

— Matt Ranlett

posted with BlogJet

5/21/2005 8:38:52 AM (Eastern Standard Time, UTC-05:00)  #    Trackback

Devin Rader, recently a presenter at the Atlanta Code Camp, has recently published an article on MSDN all about the new features of Visual Studio 2005’s IDE.

— Matt Ranlett

posted with BlogJet

5/21/2005 8:23:33 AM (Eastern Standard Time, UTC-05:00)  #    Trackback
 Thursday, May 19, 2005

I use Trillian as an instant messanger tool because it connects to both AIM and MSN Messanger services.  One of the neatest features of the new Trillian tool is to identify some words in the IM conversation and look them up in Wikipedia (my favorite starting point for random facts).  At least, that's what it says it's doing, but I frequently can't find the definitions Trillian finds when I go looking myself.  Anyway, I was mentioning Keith (Rome) in a conversation with someone and Trillian underlined his name as having a Wikipedia entry.  Curious, I looked at the list - mostly famous people with Keith as the family name.  But it told me to see also Keith numbers.

Man, I love math.  I am terrible at understanding and solving math problems, but the more I learn about it, the more I like about it.  This page just set off the Geek Alarm - big time.  I love this stuff!

FYI - a Keith number is a number who's digits make up a Fibonacci sequence including itself.  For example, 197 is a Keith number:

197: 1, 9, 7, , , , ,

-- Matt Ranlett

5/19/2005 10:04:19 AM (Eastern Standard Time, UTC-05:00)  #    Trackback
 Wednesday, May 18, 2005

Richard Conn introduced the Academic Relations Program – where Microsoft attempts to establish a relationship with various universities around the country.  Pretty much what this means is discounted Visual Studio and Office licenses for universities and university students.  Microsoft has even started to reach into the high schools, with 20 high schools in Atlanta alone participating.  If you have a high school student or college student interested in the computer sciences, Microsoft offers some excellent internships and scholarships.  Another interesting facet of the ARM program is its tie to Microsoft Research and a curriculum available to all for teaching Microsoft technologies.

David Chappell introduced himself by making sure that everyone knew he isn’t Dave Chappelle.  Nor is he Dave Chappell from Sonic Software (who ironically also writes books and give technical presentations on enterprise messaging).  After some fun at his own expense, David jumped into his presentation by postulating that there is always some kind of application architecture for enterprise systems.  This started with mainframes, moved on to client/server systems, and then on to multi-tiered architectures.  We may now be on the verge of shifting into the fourth evolution of enterprise systems, service-oriented architecture.  The reason this shift is possible now and not before is due to the global vendor agreement on how to consume web services.  Service-oriented business logic needs to rest on a foundation that is standard and ubiquitous.  On Windows, this platform will be Indigo.

In the simplest sense, Indigo is a bunch of C# classes that extend the .Net framework with a new namespace.  Indigo communicates through SOAP messages, functioning as an über SOAP stack.  This unifies existing MS technologies (ASMX, .NET Remoting, Enterprise Services, WSE, MSMQ) for distributed applications.  It also provides interoperability between .Net apps and others (EJB and WebSphere).  Finally, Indigo offers the idea of explicitly building service oriented applications.

An important note is that Indigo is not backwards compatible with existing .Net distributed technologies.  .  Indigo actually implements much of the functionality of the existing technologies, including SOAP over networking channels and many of the WS-* standards.  Once Indigo is release, Microsoft will no longer be enhancing the existing technologies.  Indigo will not replace the existing technologies, and will not prevent those technologies from working.

Service-Oriented Applications are generally abstracted into Data (relations), Logic (objects), and Presentation (GUIs).  Indigo fits into this picture between the logic and presentation and can be thought of as Access to Services.  In the past, the link between Data and Logic has been the mapping of tables to object hierarchies and of SQL types to Java/CLR types.  When the object-oriented Religion hit the world, OODBMS systems hit the market, only to fail.  It turns out that mapping between the relations and objects is easier.  Similarly, when the object religion hit the relationship between Logic and Presentation, Microsoft introduce a way to expose object interfaces –> COM and DCOM.  That turned out to be very painful.  Indigo goes back to the concept of mapping between services.

Having covered the basics of Indigo’s intentions, we now looked at code. 

To create an Indigo service, you must implement a service class – the methods the services provides.   You must select a host – the app domain and process the service runs in.  Finally you must specify one or more endpoints in which to access the services.  You have 2 methods for implementing a service class – mark a class with the ServiceContract attribute. Or mark an interface with the ServiceContract attribute then create a class that implements the interface.  A caution – Indigo attributes (OperationContract) and C# modifiers (public, private) are completely separate – you can tag a private method with an OperationContract, thus exposing it to applications OUTSIDE the AppDomain.  However, that same method is private within the application.  David tried to convince us that this is actually a good idea by explaining that you can create a facade of classes which invoke internal methods and expose their methods as services.  However, the facade of classes are not supposed to be called from within the application.  The group seemed leery of this – much grumbling about a new “method type” was heard.  My personal impression is that this seems to be an attempt to encourage good design (i.e. – the Facade pattern) on future projects. 

Additional options in Indigo development: One way calls adds a modifier to the OperationContract (IsOneWay=true) for events.  Duplex contracts for both the client and service invoking operations in the other.  Message contracts allow working directly with the SOAP messages.  all data sent and received by operations must be serialized and de-serialized.  The way that they are serialized is based on the data contract.  To create and pass your own types or enums, you must define a data contract (more attributes).

A quick aside: SVCUTIL can be used to generate a skeleton service class from WSDL contracts if you want to design your interface contracts before writing code, or contract first development.  By contrast, writing the code first and adding the ServiceContract and OperationContract attributes as needed is called code first development.

When defining a host, you can host a service in an arbitrary process (exe, NT service and winform/avalon processes) or host a service in IIS or the Windows Activation Service (WAS) – a lite webhost for machines not running IIS.  An app or service would use the ServiceHost generic type.  IIS/WAS require virtual directories and a .svc file.  Just like ASMX, an instance of the service class will be created when a client request arrives.

Finally, you must specify an endpoint – every client connects to a specific endpoint.  Every endpoint has 3 things: an address (where to find it), a binding (how to communicate), and a contract (what can it do).  Addresses are usually URIs.  Bindings wrap together may aspects of communication such as protocols for conveying SOAP messages (HTTP, TCP, etc) security options, support for wS-* specs, and more.  Several predefined bindings will ship with Indigo but custom bindings can be created.  An example of a predefined binding is BasicProfileBinding which conforms to WS-I Basic Profile 1.0.  WS ProfileBinding supports WS-ReliableMessaging, WS-Security, WS-AtomicTransaction, and other WS-* specs.   NetProfileTCPBinding sends binary encoded SOAP with support for reliable messaging, security, and transactions directly over TCP (Indigo to Indigo only).  One service can expose separate endpoints, each with a different binding for different clients.  Contracts are the name of the class that the endpoint exposes (service class or interface).  Endpoints are likely to be defined in config files, but they can also be added directly within the code assembly.

To create an Indigo client, create a channel to a service (typically hidden by a proxy which has been created by SVCUTIL or Visual Studio).  Clients also specify a specific endpoint that they will communicate with.  That’s about it – nothing very complex.

Services built on Indigo can be reliable, secure, transactional, and queued.  Indigo also offers reliable messaging; raw SOAP doesn’t guarantee reliable message transfer but some of the Indigo bindings such as WsHttpBinding, support WS-ReliableMessaging.  However, WS-ReliableMessaging doesn’t directly support message queuing – this is still an area where the vendors can’t agree on a standard.  Since that the world in general and Microsoft in particular has caught the Security Religion, Indigo allows for security configuration via authentication, message integrity, and message confidentiality.  Indigo also uses the .Net security model and the PrinciplePermission concepts.  Indigo transactions are built on the new 2.0 System.Transactions namespace.  Now transactions are separate from state management (different from Enterprise Services, COM+, and MTS).  Indigo apps can use System.Transactions explicitly or can use OperationBehavior attributes (which use System.Transactions under the covers).  Indigo supports queuing by running on MSMQ as the transport.  This means queuing only works on the Windows platform.  There are predefined binding choices which wrap queuing.

When considering upgrading to Indigo services, keep in mind that all existing apps will continue to work.  However, if you do decide to upgrade, keep in mind the following questions.  Will my Indigo app and apps built with existing technologies be interoperable and will my apps be portable?  The Indigo team says yes to both questions for ASMX.  Remoting will not be interoperable.  Enterprise Services interfaces can be wrapped with an Indigo-supplied tool.  ES clients will communicate use an Indigo moniker.  WSE 1.0 and 2.0 are not interoperable or portable.  WSE 3.0 will be interoperable AND portable, but it hasn’t been released yet.  MSMQ is interoperable using MsmqIntegrationBinding, but portability is not a simple task. 

Indigo vs Biztalk.  Indigo is a platform for building services on .Net.  Biztalk is an integration tool which maps between various heterogeneous environments.  Biztalk already has adapters for technologies like MSMQ and SQL.  Expect an Indigo adapter in Biztalk soon.

There is a March CAP currently available for Indigo and we expect the Beta 1 of Indigo in a matter of weeks.

Questions from the audience included:

Indigo talks to a service, what do I get back, a Dataset?  Actually you get XML (SOAP), but the data in the message is some kind of serialized object.  So it could be Dataset or objects.

What about the rich type support of Remoting?  Indigo can serialize any .Net type when talking to other Indigo services.  However, when interacting with other environments, use contract first development to ensure data type interoperability

How will Indigo handle big objects like Datasets?  Indigo serializes an object sent to it and drops it on the wire.

MSMQ has a max message size, how does Indigo use MSMQ to transmit larger objects?  MSMQ is a transport mechanism like TCP – large files are broken up and sent across the wire in discrete chunks.

Does Indigo require full trust to run on a machine like .Net Remoting does?  David Chappell wasn’t, but Doug Turnure doesn’t think so.  Research is required.

Can you serialize custom types?  Yes with a data contract.  Alternatively you can drop in your own seralizer.

 

 

I ran across this link a while ago in my RSS aggregator and thought I’d post it here as it’s extremely pertinent: Don Box’s Five Minute Indigo Challenge.

— Matt Ranlett

posted with BlogJet

5/18/2005 11:46:16 PM (Eastern Standard Time, UTC-05:00)  #    Trackback

Thanks to the traffic-weighted formulas used by search engines, the Atlanta .Net Regular Guys blog is in the top 3 returns on Yahoo if you search for "guys feeling other guys legs"

Man, that's just odd...

-- Matt Ranlett

5/18/2005 10:00:45 AM (Eastern Standard Time, UTC-05:00)  #    Trackback

I've just upgraded versions of DasBlog, the engine that cranks out this website's blog and RSS feed,  and turned on the "Post title as Permalink" option.  This means that I will no longer have ugly links with GUIDs and commas in them.  Instead I'll get nice, human-readable links.  I hope this doesn't break everyone's links to me, but I bet it does.  Sorry about that.

-- Matt Ranlett

[Edit] - I just tested and it looks like the DasBlog team made everything backwards compatible - all the external links to the ADNRG blog still link to the correct posts.  Great job guys!  Just for that, I've contributed $10 to the DasBlog Community edition.  I forgot to log in, so my name isn’t on the supporters page.  Oh well, I wasn’t donating money for personal recognition.

 

 

5/18/2005 5:59:30 AM (Eastern Standard Time, UTC-05:00)  #    Trackback