Welcome to Windows Communication Foundation (WCF)
Top Tasks :

WCF Community Bloggers

  • Randy Pausch, rest in peace

    http://www.msnbc.msn.com/id/25848017/ If you haven't heard the his last lecture, or read the book, you really should. This guy was one of us, a scientist, a thinker, a man of reason. And his speech is incredibly thought provoking and powerful. The world needs more people like Randy Pausch, and it is sad to think we now have one less. Read More...
  • From the "Gosh, You Wanted Me to Quote You?" Department...

    This comment deserves response: First of all, if you're quoting my post, blocking out my name, and attacking me behind my back by calling me "our intrepid troll", you could have shown the decency of linking back to my original post. Here it is, for those interested in the real discussion: http://www.agilesoftwaredevelopment.com/blog/jurgenappelo/professionalism-knowledge-first Well, frankly, I didn't get your post from your blog, I got it from an email 'zine (as indicated by the comment "This crossed my Inbox..."), and I didn't really think that anybody would have any difficulty tracking down where it came from, at least in terms of the email blast that put it into my Inbox. Coupled with the fact that, quite honestly, I don't generally make a practice of using peoples' names without their permission (and my email to the author asking if I could quote the post with his name attached generated no response), so I blocked out the name. Having said that, I'm pleased to offer full credit as to its source. Now, let's review some of your remarks: "COBOL is (at least) twenty years old, so therefore any use of COBOL must clearly be as idiotic." I never talked about COBOL, or any other programming language. I was talking about old practices that are nowadays considered harmful and seriously damaging. (Like practising waterfall project management, instead of agile project management.) I don't see how programming in COBOL could seriously damage a business. Why do you compare COBOL with lobotomies? I don't understand. I couldn't care less about programming languages. I care about management practices. Frankly, the distinction isn't very clear in your post, and even more frankly, to draw a distinction here is a bit specious. "I didn't mean we should throw away the good stuff that's twenty years old, only the bad stuff!" doesn't seem much like a defense to me. There are cases where waterfall style development is exactly the right thing to do a more agile approach is exactly the wrong thing to do--the difference, as I'm fond of saying, lies entirely in the context of the problem. Analogously, there are cases where keeping an existing COBOL system up and running is the wrong thing to do, and replacing it with a new system is the right thing to do. It all depends on context, and for that reason, any dogmatic suggestion otherwise is flawed. "How can a developer honestly claim to know "what it can be good for", without some kind of experience to back it?" I'm talking about gaining Read More...
  • From the "You Must Be Trolling for Hits" Department...

    Recently this little gem crossed my Inbox.... Professionalism = Knowledge First, Experience Last By J----- A----- Do you trust a doctor with diagnosing your mental problems if the doctor tells you he's got 20 years of experience? Do you still trust that doctor when he picks up his tools, and asks you to prepare for a lobotomy? Would you still be impressed if the doctor had 20 years of experience in carrying out lobotomies? I am always skeptic when people tell me they have X years of experience in a certain field or discipline, like "5 years of experience as a .NET developer", "8 years of experience as a project manager" or "12 years of experience as a development manager". It is as if people's professional levels need to be measured in years of practice. This, of course, is nonsense. Professionalism is measured by what you are going to do now ... Are you going to use some discredited technique from half a century ago? • Are you, as a .NET developer, going to use Response.Write, because you've got 5 years of experience doing exactly that? • Are you, as a project manager, going to create Gantt charts, because that's what you've been doing for 8 years? • Are you, as a development manager, going to micro-manage your team members, as you did in the 12 years before now? If so, allow me to illustrate the value of your experience... (Photo of "Zero" signs) Here's an example of what it means to be a professional: There's a concept called Kanban making headlines these days in some parts of the agile community. I honestly and proudly admit that I have no experience at all in applying Kanban. But that's just a minor inconvenience. Because I have attained the knowledge of what it is and what it can be good for. And now there are some planning issues in our organization for which this Kanban-stuff might be the perfect solution. I'm sure we're going to give it a shot, in a controlled setting, with time allocated for a pilot and proper evaluations afterwards. That's the way a professional tries to solve a problem. Professionals don't match problems with their experiences. They match them with their knowledge. Sure, experience is useful. But only when you already have the knowledge in place. Experience has no value when there's no knowledge to verify that you are applying the right experience. Knowledge Comes First, Experience Comes Last This is my message to anyone who wants to be a professional software developer, a professional project manager, or a professional development Read More...
  • Nice list of things people should know about VB

    http://msmvps.com/blogs/kathleen/archive/2008/07/19/what-a-c-coder-should-know-before-they-write-vb.aspx Read More...
  • 99 days to go to the PDC :)

    Just browsing the PDC site and I see that there is exactly 99 days left till this years PDC :) The session descriptions can be found at this link . Should be an interesting PDC this year, with so much focus on Cloud computing etc..... Especially with MSFT's Global Foundation Services in the middle of a HUGE build out of 10,000 servers a month and planned/under construction the equivalent of 15 US football fields of data centers. /Paul For more information, go to http://www.paulfallon.com . Read More...
  • Serious challenge for unit testing in Silverlight

    If you've tried to do any unit testing in Silverlight, you may have run into an interesting issue. Many times, unit tests expect exceptions. Tests are written to ensure that an exception occurs as expected. That's a standard concept in most unit testing frameworks for .NET. In Silverlight, there's an "expected CLR behavior" where the debugger will break on exceptions that are actually handled by user code - treating them like they aren't handled . See this thread for some more detail: http://silverlight.net/forums/p/20678/72377.aspx#72377 The result of this, is that you have to employ some ugly workarounds, or you need to press F5 for each of your tests where you expect an exception. We're running into this issue in a big way with CSLA Light (CSLA .NET for Silverlight), because we're creating lots and lots of unit tests, and a fair number of them are testing to make sure exceptions occur when we expect them. Of course our unit testing framework ( UnitDriven ) uses reflection to run each test method - just like MSTest or nunit - and so even though we are handling the exception in user code the debugger insists on breaking in the test methods themselves where the exceptions occur. Again, there are workarounds. They prevent you from using the debugger to walk through your tests - but at least they exist. The whole thing is really sad though - given that this is apparently intended behavior . Read More...
  • Visual Studio Team Explorer/Client Installation Failure

    A recent install of Team Foundation Explorer errored out. Opening the log file (from the link on the error screen) and scrolling to the bottom, showed the following: [07/16/08,15:39:33] Microsoft Visual Studio 2008 Team Explorer - ENU: CRootComponent::Install(): Beginning Brooklyn Component Installation [07/16/08,15:39:33] Setup.exe: ISetupManager::GetFullComponents() [07/16/08,15:39:33] Setup.exe: ISetupManager::GetFullComponents() [07/16/08,15:39:34] DepCheck: gencomp97,{12CDA52C-7A8F-4785-8A22-53C87393FEE0} [07/16/08,15:39:34] DepCheck_Result: 1 [07/16/08,15:39:34] Microsoft Visual Studio 2008 Team Explorer - ENU: Install(): bAttemptInstall: 0 [07/16/08,15:39:34] Microsoft Visual Studio 2008 Team Explorer - ENU: Install(): Not attempting to call MsiInstallProduct()!!!! Baseline not met ! [07/16/08,15:39:34] Setup.exe: AddGlobalCustomProperty [07/16/08,15:39:34] Microsoft Visual Studio 2008 Team Explorer - ENU: CRootComponent::Install(): Setup Failed; MSIInstallProduct return value either ERROR_INSTALL_FAILURE or default. [07/16/08,15:39:34] Setup.exe: AddGlobalCustomProperty [07/16/08,15:39:34] Microsoft Visual Studio 2008 Team Explorer - ENU: CRootComponent::Install(): Calling LaunchWatson()... [07/16/08,15:39:34] Microsoft Visual Studio 2008 Team Explorer - ENU: CRootComponent::LaunchWatson() - Obtained CSetupWatson instance [07/16/08,15:39:34] Setup.exe: GetGlobalCustomProperty - Property: {AA62DF98-3F2C-11D3-887B-00C04F8ECDD6} - PropertyName: Maintenance Mode - Value: 0 [07/16/08,15:39:34] Microsoft Visual Studio 2008 Team Explorer - ENU: CRootComponent::LaunchWatson() - Launching VS Watson [07/16/08,15:39:34] Microsoft Visual Studio 2008 Team Explorer - ENU: CRootComponent::LaunchWatson() - Completed VS Watson launching to create manifest: C:\DOCUME~1\mmichael\LOCALS~1\Temp\vs_setup.dll.txt [07/16/08,15:39:34] Setup.exe: AddGlobalCustomProperty [07/16/08,15:39:34] Microsoft Visual Studio 2008 Team Explorer - ENU: CRootComponent::LaunchWatson() - Setting the property CustomCoreProp_WatsonManifestReady to use the VS Client Manifest. [07/16/08,15:39:34] Microsoft Visual Studio 2008 Team Explorer - ENU: CRootComponent::Install(): Finished calling LaunchWatson() [07/16/08,15:39:34] Microsoft Visual Studio 2008 Team Explorer - ENU: CRootComponent::Install(): Finished Brooklyn Component Installation [07/16/08,15:39:34] UTILS::RunNGENAction: Started [07/16/08,15:39:34] UTILS::RunNGENAction: starting "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ngen.exe queue Read More...
  • BleedingEdge 2008

    I'm happy to announce our organization work is coming to fruition. BleedingEdge 2008 is taking the stage for the autumn season. Portorož, Slovenia, October 1 st , 9:00 Official site , Registration , Sponsors Go for the early bird registration (till September 12 th ). The time is now. Potential sponsor? Here 's the offering. Read More...
  • Blog change? Ads? What gives?

    If you've peeked at my blog site in the last twenty minutes or so, you've probably noticed some churn in the template in the upper-left corner; by now, it's been finalized, and it reads "JOB REFERRALS". WTHeck? Has Ted finally sold out? Sort of, not really. At least, I don't think so. Here's the deal: the company behind those ads, Entice Labs, contacted me to see if I was interested in hosting some job ads on my blog, given that I seem to generate a moderate amount of traffic. I figured it was worthwhile to at least talk to them, and the more I did, the more I liked what I heard--the ads are focused specifically at developers of particular types (I chose a criteria string of "Software Developers", subcategorized by "Java, .NET, .NET (Visual Basic), .NET (C#), C++, Flex, Ruby on Rails, C, SQL, JavaScript, HTML" though I'm not sure whether "HTML" will bring in too many web-designer jobs), and visitors to my blog don't have to click through the ads to get to the content, which was important to me. And, besides, given the current economic climate, if I can help somebody find a new job, I'd like to. Now for the full disclaimer: I will be getting money back from these job ads, though how much, to be honest with you, I'm not sure. I'm really not doing this for the money, so I make this statement now: I will take 50% of whatever I make through this program and donate it to a charitable organization. The other 50% I will use to offset travel and expenses to user groups and/or CodeCamps and/or for-free conferences put on throughout the country. (Email me if you know of one that you're organizing or attending and would like to see me speak at, and I'll tell you if there's any room in the budget left for it. :-) ) Anyway, I figured if the ads got too obnoxious, I could always remove them; it's an experiment of sorts. Tell me what you think. Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services. 1-day or multi-day workshops available. Contact me for details . Read More...
  • Access Control rule changes in BizTalk Services R12

    Yesterday we released a new version of BizTalk Services (R12). Over the next few weeks I'll be updating my blog with descriptions of the identity related features we added in this release. For now I'd like to describe one of the most obvious changes to Read More...
  • Object.hashCode implementation

    After the previous post, I just had to look. The implementation of Object.equals is, as was previously noted, just "return this == obj", but the implementation of Object.hashCode is far more complicated. Taken straight from the latest hg-pulled OpenJDK sources, Object.hashCode is a native method registered from Object.c that calls into a Hotspot-exported function, JVM_IHashCode(), from hotspot\src\share\vm\prims\jvm.cpp: JVM_ENTRY(jint, JVM_IHashCode(JNIEnv* env, jobject handle)) JVMWrapper( "JVM_IHashCode" ); // as implemented in the classic virtual machine; return 0 if object is NULL return handle == NULL ? 0 : ObjectSynchronizer::FastHashCode (THREAD, JNIHandles::resolve_non_null(handle)) ; JVM_END which in turn calls ObjectSynchronizer::FastHashCode, defined in hotspot\src\share\vm\runtime\synchronizer.cpp as: intptr_t ObjectSynchronizer::FastHashCode (Thread * Self, oop obj) { if (UseBiasedLocking) { // NOTE: many places throughout the JVM do not expect a safepoint // to be taken here, in particular most operations on perm gen // objects. However, we only ever bias Java instances and all of // the call sites of identity_hash that might revoke biases have // been checked to make sure they can handle a safepoint. The // added check of the bias pattern is to avoid useless calls to // thread-local storage. if (obj->mark()->has_bias_pattern()) { // Box and unbox the raw reference just in case we cause a STW safepoint. Handle hobj (Self, obj) ; // Relaxing assertion for bug 6320749. assert (Universe::verify_in_progress() || !SafepointSynchronize::is_at_safepoint(), "biases should not be seen by VM thread here" ); BiasedLocking::revoke_and_rebias(hobj, false, JavaThread::current()); obj = hobj() ; assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now" ); } } // hashCode() is a heap mutator ... // Relaxing assertion for bug 6320749. assert (Universe::verify_in_progress() || !SafepointSynchronize::is_at_safepoint(), "invariant" ) ; assert (Universe::verify_in_progress() || Self->is_Java_thread() , "invariant" ) ; assert (Universe::verify_in_progress() || ((JavaThread *)Self)->thread_state() != _thread_blocked, "invariant" ) ; ObjectMonitor* monitor = NULL; markOop temp, test; intptr_t hash; markOop mark = ReadStableMark (obj); // object should remain ineligible for biased locking assert (!mark->has_bias_pattern(), "invariant" ) ; if (mark->is_neutral()) { hash = mark->hash(); // this is a normal header if (hash) { Read More...
  • Of Zealotry, Idiocy, and Etiquette...

    I'm not sure what it is about our industry that promotes the flame war, but for some reason exchanges like this one , unheard of in any other industry I've ever touched (even tangentially), are far too common, too easy to get into, and entirely too counterproductive. I'm not going to weigh in on one side or the other here; frankly, I have a hard time following the debate and figuring out who's exactly arguing for what. I can see, however, that the entire debate follows some traditional patterns of the flame war: Citing yourself as the final authority. At no point during the debate does anybody reach for their copy of Effective Java , a widely-accepted source of Java guidance, for a potential resolution to the discussion. Instead, the various players simply say, "Fact A is true" or "Fact A is false", with zero supporting information, citations, or demonstrations either way. (A few people cite the Javadoc, but there is enough ambiguity there to merit further citation.) Refusal to accept the possibility of an alternative viewpoint. At no point, near as I can tell, did any of the participants bother to say, "You know, you could be right, but I remain unconvinced. Can you give me more information to support your point of view?" The entire time, everybody is arguing from "fact", and nobody even considers the possibility that different JVMs can have different implementations, despite the fact that the Javadoc being quoted says as much. Degeneration into personal attacks. I don't care who started it, I don't care who called who the worse name. Fact is, reasonable people can reasonably disagree, and nobody in that transcript seemed overly reasonable to me. Nobody ever really gets around to answering the question because they're too busy arguing their position or point. Poor "doub", the initiator of the question, tries valiantly to circle the conversation back on topic, but the various players are too busy whipping out their instruments of manhood onto the table so everybody can see how much bigger it is than the other guys'. When "doub" points out that writing some sample code "gave me a very loose but still usefull information about my object, and took less time than the conversation about my question :-)", or in other words, "Hey, guys, I kinda already got my answer, can we move on now?", the conversation continues as if the comment never occurred--the question has turned into a "biggest-geek" argument by this point. "doub" even asks, at 10:12:12, "do i get bad karma Read More...
  • CSLA Light preview release

    I have put a very early preview release of CSLA Light and CSLA .NET 3.6 online at www.lhotka.net/cslalight/download.aspx . There is no sample app at this point, so you'll have to look at the unit tests in cslalighttest and cslatest to figure out how to use the various features. Obviously this is very early code, but it is healthy to release early and often, so here we go :) One side-effect of our work with CSLA Light is that we discovered that testing asynchronous methods is really hard with nunit and MSTest, and impossible with the Silverlight unit test framework provided by Microsoft. And yet in Silverlight, async methods are commonly required, and for parity a number of async features are now also in CSLA .NET. And we need to have unit tests for them. To address this issue, we ended up creating our own Silverlight unit testing framework, and an add-on framework for nunit or MSTest. This allows us to write a common set of test code that runs in both Silverlight and .NET so we can test both, and establish that we have parity between them. Earier today, Justin split this testing framework out of CSLA and we put it up on CodePlex, calling it UnitDriven . The CSLA Light project and Magenic are donating the code to the community as an open-source project, because it can be used to build async unit tests for any app, not just for CSLA Light. Read More...
  • Expert 2008 Business Objects tentative TOC

    I get a lot of questions about Expert 2008 Business Objects as to what it will and won't cover, so I thought I'd try and answer at least some of them in a blog post. The book will cover CSLA .NET 3.6. Version 3.6 is the same as 3.5, but with support for CSLA Light and some .NET 3.5 SP1 features (such as the Entity Framework). And along with CSLA Light comes some interesting support for things like an async data portal and async validation rules. But please note that this book will not cover CSLA Light - that's a book by itself, believe me! Here's the tentative table of contents for the book: 1. Architecture 2. Design 3. Object-oriented design 4. Supported stereotypes 5. Stereotype templates 6. Framework Implementation 7. Editable Objects and Collections 8. Data Binding 9. Business and Validation Rules 10. Authorization Rules 11. N-level Undo 12. LINQ to CSLA 13. Persistence and the Data Portal 14. Example Business Library 15. WPF Application 16. Web Forms Application 17. WCF Service Application > The items in green are complete - first draft anyway - and so you can get an idea where I am in the process. Due to space and time constraints, this book will have three UI chapters just like the previous books. So I had to choose which interface technologies to cover - out of the myriad options available: WPF WPF/XBAP Windows Forms asmx services WCF services WF workflows and activities ASP.NET Web Forms ASP.NET MVC Office/VSTO (Word, Excel, etc) Console I want to make sure to cover smart clients, web development and services. While WCF and Web Forms were easy choices (though I do like ASP.NET MVC a lot, it isn't mainstream yet), the choice between Windows Forms and WPF was difficult. But I have to give WPF the nod, because it is a really nice technology, and it really shows off the power of CSLA .NET business objects very nicely. My current plan is to release ebooks that specifically focus on each of the interface technologies not covered in Expert 2008 Business Objects , and some sort of book (ebook or traditional) covering CSLA Light. Read More...
  • CSLA Light data portal options

    While most people use CSLA .NET because it provides support for data binding, validation, business rules and authorization, I personally think the coolest part of the framework is its support for mobile objects . This support is provided by the data portal, which provides both an abstract persistence model for business objects, as well as an implementation of mobile objects with location and network transparency. CSLA Light will also include a data portal that works in a manner similar to the one in CSLA .NET. In fact, the two are complimentary - the CSLA Light data portal talks to the CSLA .NET data portal, because the client is running Silverlight and the server is running .NET. This occurs when the CSLA Light data portal is running in "remote" mode - meaning it is talking to a remote data portal server. The CSLA Light data portal can also run in "local" mode, which means that the "data access" code runs on the Silverlight client. In reality, this probably means that your client-side code is directly calling some external service - an asmx web service, a WCF service, ADO.NET data services, etc. So the fact is that the data access is still on some server somewhere, but you aren't using the data portal to get from the client to that server. As in .NET, when using the data portal in local mode things are pretty simple. A call to the data portal to fetch an object simply results in a call to a DataPortal_Fetch() method in your object, and the object is running on the client in Silverlight. What you do in that DataPortal_Fetch() method is entirely up to you, as long as the object is populated with data by the time the call completes. When you use the remote data portal there are more options. Things are somewhat different from the existing .NET data portal. The following figure will help explain. The CSLA Light data portal interacts with a server (probably a web server, though it could be a Windows Server 2008 running WAS) through WCF. That server is running CSLA .NET 3.6, which includes data portal support to listen for CSLA Light data portal requests. Objects are serialized to/from CSLA Light using the MobileFormatter, which is a serializer included in both CSLA Light and CSLA .NET that provides a subset of the functionality provided by the BinaryFormatter (or NetDataContractSerializer), targeted at the CSLA scenario. On the web server, CSLA .NET 3.6 receives the inbound client request. Any objects sent from the client to the server are deserialized (including Read More...
More Posts Next page »

Copyright © 2006 Microsoft Corporation. All Rights Reserved. | Terms of Use | Privacy Statement | Contact Us