Architecture
Since the release of MVC Turbine, I’ve been getting lots of questions about the design decisions I made around the interaction with the Service Locator that ships with the plug-in. The two main questions are: Why didn’t you use the Common Service Locator project from CodePlex? Why are we forced/constrained/etc to use generic component registration API? These questions are very valid and could be easily explained if I ever write the documentation for the project (which, I’m working on by the way). So in this post, I hope to...
The whole purpose of MVC Turbine is to make the development of an MVC application easy and streamlined. This can be done through the use of a new feature of V2 called “Blades”. Essentially, a Blade is nothing more than a component (or slice) of a Turbine application since it provides a layer of abstraction to a concern of the application. For example, a Turbine MVC application ships with three core blades out of the box: MvcBlade – Performs all ASP.NET MVC related work, i.e., setup of Controller factories, View Engines, etc. ...
This past weekend while working on my talk for the Heartland Developer's Conference, I toyed with the idea of showing multiple ASP.NET MVC View Engines (VE) ‘co-existing’ within the same application. Why do that? Well, I wanted to show how using open source tools like MVC Turbine, MVC Contrib and Spark within your application, you can assemble some pretty cool stuff. And most important, it made for a really cool demo. :) Please note that this concept is not anything new. Phil has blogged about a similar topic in the past. However, this approach extends what Phil...
My original title for this blog post was going to be HttpIoC - Find Out What It Means To Me, as Steven Smith suggested via twitter, but I figured it wasn’t going to be as searchable. :) So I went with the boring title. Sorry Steven! A while back, Tuna Toksoz and I were having a conversation on twitter about how he does registration of any modules his application will need/use. After playing around with the concept for a little, I was able to get something that will work for our any ASP.NET application with minimal effort. ...
As with any piece of software development, there is more than a million ways to skin a cat. Working with NHibernate in a multi-threaded environment is no different. :) To help with the illustration of the interaction of NHibernate and ASP.NET, I’ve created a sample application out on Google code. Please feel free to check it out and run it locally. The only requirement for the sample is to have a local install of SQL Server Express. The Problem Those of you using NHibernate in a multi-threaded environment (say ASP.NET) have probably written code to maintains an ISession...
Not sure how many of you read my first post on my thoughts on Oxite. Well, here's my offering on trying to make things a little closer to MVC by offering my perspective on the code. Please note that I want to keep these simple refactorings as conversational as possible, so if you see something that offends or upsets you with my interpretation/implementation, PLEASE COMMENT. :) Let's examine the SignIn action under the AccountController: [AcceptVerbs(HttpVerbs.Post)]
public ActionResult SignIn(string username, string password, bool rememberMe, string returnUrl)
{
PageTitle.AdditionalPageTitleSegments = new string[] { "Sign In" };
...
Not sure how many of you know about this upcoming event (tomorrow) 11/06/2008! If you're going to be around the area, please come check it out!! ArcReady Professional Patterns on the Job You're smart. You deliver. What more could your company want from you? Why don't they come to you for the big technical decisions? Why won't they listen to your proposals? It seems like everyone has an agenda and they're doing everything they can to kill your great ideas. Join us this quarter as we focus on the soft skills that architects need to master....
For those of you that attended one or both at of my talks at VSLive Las Vegas or HDC Omaha 2008, I just want to say, thank you! And for the VSLive folks, I do apologize for cutting my open source tools talk short by 10 minutes. I had to jet out of the Mirage so I can make the plane back to the Midwest!
As promised, I upgraded my code to run with Beta 1 of the ASP.NET MVC Framework! So, if you want to get the latest bits go to: http://jglozano.googlecode.com/svn/trunk/presentations
You will find my slide deck as well as...
A couple of weeks back, I recorded a podcast with, our community MS Developer Evangelist, Jeff Brand for his Spaghetti Code series. I was informed by Jeff, today that he finally posted it! I had a heck of a time recording this podcast with Jeff, the hour just flew by! If yo have the time, download the podcast and check it out!
Links:
Direct Download - click here
Subscribe - click here
iTunes - click here
That's right! We're having another ASP.NET Expert Live Chat on Thursday, May 1st, 2008 at 6 PM PST. Here's more info on the event: Get your tough development questions answered by Microsoft MVPs, Regional Directors, and other industry experts. Community experts will be on hand to answer your .NET- and Visual Studio-related questions. No off topic questions please. Please note that questions regarding upcoming products and future product specs might not be answered. Would you like to participate as an expert? Contact Ryan Olshan at Ryan[dot]Olshan[at]strongtypes[dot]com. MSDN Online Chats - http://msdn2.microsoft.com/en-us/chats/default.aspx Chat Room...
Well, we can finally get our hands on the ASP.NET MVC bits! They're being released as part of the ASP.NET 3.5 Extensions CTP. This release includes: ASP.NET AJAX Improvements: New ASP.NET AJAX features in the ASP.NET 3.5 Extensions release include better browser history support (back/forward button integration, and server-side history management support), improved AJAX content linking support with permalinks, and additional JavaScript library improvements. ASP.NET MVC: This model view controller (MVC) framework for ASP.NET provides a structured model that enables a clear separation of concerns within web applications, and makes...
That's right, PDC has been rescheduled to Oct. 27-30 2008 in Los Angeles, California. Here's the info from their site: PDC 2008 October 27–30, 2008 Pre-conference October 26, 2008 Los Angeles, California OK, OK. We are delighted to announce the date and location of the next Microsoft Professional Developers Conference (PDC): October 27–30, 2008 at the Los Angeles Convention Center. PDC is the definitive Microsoft event for software developers and architects focused on the future of the Microsoft platform. Mark your...
I would like to apologize for those who wanted to attend my presentation on Software Factories at Tulsa TechFest, but unfortunately due to technical difficulties, I missed my stand-by flight into Tulsa. When I spoke with the nice people at American Airlines they couldn't guarantee me making into Tulsa into sometime late this evening. However, for those of you wanting my slides, you can download them from the link at the bottom of this post. Also, as I mentioned on my HDC post, I will be doing a webcast series on the Software Factories on Code To Live.
First, to all of you that attended my HDC presentation on Software Factories, THANK YOU! I hope that as promised, the "Ah, Ha!" factor was high. Also, I would like to apologize for the issues I ran into with the VPC and the demos. I had tried the demo before with only two VS2005 instances running and had no issues with it...Apparently, four instances of VS2005 running concurrently is too much for VPC. Right after my presentation, I confirmed with Steve Loethen, a co-host of Code To Live, about coming up with the webcast series on Software Factories. I still to work out...
Today Microsoft is announcing that Popfly will be going into public beta. So for those you that had requested to sign up for the beta, no worries! You can automatically login without a hassle! (Pretty sweet, huh?) And for those of you that haven't signed up or don't know anything about it, just to go http://popfly.com and login with Passport.
Here's a brief description of what Popfly:
It's a Silverlight 1.0 application to create a really slick UI that allows you to use drag-and-drop tools to build some cool things. It also includes support for Vista Sidebar and Live Gadgets. For those...
A while back, I blogged some examples on how you can use .NET types within your IronRuby (IRuby) applications. So after playing around with it a bit, I wanted to do something pretty basic, inheritance. Here's what I tried:# Basic inheritance from a dynamic type
# to a static type.
class MyForm < System::Windows::Forms::Form
end
When you try running this through the interactive console, you get this error:
System.InvalidOperationException: superclass must be a Class (DynamicType given)
Nice and descriptive, huh? Well, essentially this means that your superclass needs to be a type that IRuby can understand, that is a class-type of DynamicType. While looking around at the source...
Anybody? Let's start this conversation and see where it goes? David, I'm really interested on what you have to say about this!
A Non-Coding Architect (NCA) can be detrimental to the success of a project. These Word/IvoryTower architects can be pretty dogmatic when it comes to standards and back-in-the-day methods. A couple of weeks ago, I read this really great post that outlines ways you can spot out the dreaded NCA and gives you some pointers on how you can help alleviate the situation. It's a pretty good read so go check it out! Before I forget, the blog author, Frank Kelly, is a java developer so he uses some J2EE that you might not be familiar with and should check out if you...
I submitted the title and abstract for my HDC presentation. Here's the info: The Taming Of the Oracle: A .NET Developer's Guide to Working With Oracle In this session you will learn how you can use the Oracle Data Provider for .NET, Oracle Providers for ASP.NET, and Visual Studio tools to get the most out of your experience with Oracle. If you're a .NET developer that needs to work with Oracle as your primary database, this is a session that will getyou up and running in time for your project. Is there anything else you guys want to find...
That's right, I received word from Phil Wolfe earlier this week that I've been accepted to be a speaker (this is my third year!) for the Heartland Developer Conference in Omaha, NE on Oct. 18-19th. If you check out the speakers page, you won't see my info there but I'm sure it's coming. For those of you that like my presentations, here's a list of topics I've been kicking around: .NET Tooling for Oracle - There's some applications out there that need talk with Oracle. How do I make things as easily as possible to get my work done?...
Alright, how many of you when unit testing your entities and Data Transfer Objects (DTOs), provide an interface for them? For example, if you have the Person entity, do you have a corresponding IPerson interface? Or do you leave the type as is? I'm just curious to see what people are doing out there while doing TDD/Unit Testing. Please use the comment section to post your responses! Thanks!
I just ran into this pretty nice tool called eScrum for end-to-end Scrum management that runs on top Team Foundation Server (TFS). Pretty nice for those of you out there doing (or trying to do) Scrum and have adopted TFS. Here's the info from the download page: eScrum is a Web-based, end-to-end project management tool for Scrum built on the Microsoft Visual Studio Team Foundation Server platform. It provides multiple ways to interact with your Scrum project: eScrum Web-based UI, Team Explorer, and Excel or Project, via Team Foundation Office Integration. In addition, it provides a single place for...
I've been reading the blog entitled, Coding the Architecture, for quite sometime now and I really enjoy the its content (you should definitely check it out). Recently there are two entries dealing with responsibility and authority (from an SA's point of view) which hit close to home. Unfortunately for me, I have responsibility without authority ... which as some of us know, that's not a good combination. How can you be responsible for something you have no saying (authority) over what happens to it? Do any of you out there suffer from the same fate?
Yesterday, Levi sent me a link to this add-in for Reflector that disassembles a Silverlight applications and shows your the JavaScript to run it. I must say, it's a pretty nice little add-in (that includes its source) for Reflector. Below is a picture of the disassembled Silverlight Airlines demo given at MIX '07:
Check it out if you have the time, it's pretty sweet!
From the looks of it (via Phil Haack), CodePlex will be supporting SVN (both svn.exe and TortoiseSVN) for all of their projects. Here's the converstaion Jim Newkirk and Phil had: Haacked wrote Mon at 8:24 PM So I can download svn.exe from http://subversion.tigris.org/ and manage my CodePlex source code repository, yes? So are you rolling out Subversion? Or a Subversion facade into TFS? Anything you can reveal? :) jimnewkirk wrote Mon at 7:41 PM To clarify: it's our intention to support the functionality of the command-line Subversion client as well as TortoiseSVN. jimnewkirk wrote Mon at 7:40 PM Phil,...
I would like to thank Denny, our breadth AE, for doing a great job at our first ArcReady event last Friday in Des Moines. During the event, Denny mentioned that Des Moines will be a regular stop on the quaterly ArcReady visits. If you would like to attend, please post your email on this post (through comments) and I'll make sure that Denny gets you added to the list. Also, after the event, we held our first ArcCouncil event. ArcCouncil is an open forum were we discuss various topics dealing with software development. For example, the meeting started by...
I'm not sure how many of you out there are aware of the ASP.NET Futures section of the ASP.NET website. Here's the description of the section from the website: ...contains an early developer preview of features providing a wide range of new functionality for both ASP.NET and Silverlight. The Futures release includes early experimental versions of features currently being considered for future versions of ASP.NET and the .NET Framework. The May 2007 Release contains the following components: ASP.NET AJAX Futures Silverlight Controls for ASP.NET Dynamic Data Controls for ASP.NET ASP.NET Application Services Dynamic Languages Support for ASP.NET (sans IronRuby,...
Ok, so I've just posted my current non-technical reading list so now here's my techinical currently-reading list:
Programming Ruby: The Pragmatic Programmers' Guide, Second Edition - Dave Thomas, Chad Fowler and Andy Hunt
I've been playing around with Ruby for quite some time now but I need a good reference book for it. What other book to read than main source of Ruby knowledge out there! After the announcement of the DLR (which I've downloaded already), I can't wait to do more of Ruby natively on .NET!
Programming WCF Services - Juval Lowy
Another great master work by Juval. If you're currently doing WCF...
Yes, we can! (Thanks, Bob!) ... this is a typical answer from project teams that get too involved with the how of their project. To me, as a member of many good & bad projects, I care more about these questions: For who are we building it? Why are we building it? Are we fullfilling the needs of the customer? Who's going to maintain it? As a developer/designer/architect/team member, we should be caring more about the needs & requirements of the customer than the way we use tools (Agile, .NET/Java, etc.) to try to solve the problem. The moment we lose...
Alright, so for our applications we have a couple of forms that use the DataGridView control to display tabular data (kinda of a common scenario for many business applications). The data is returned from our services as an IList<T> in which we can just then bind directly to the grid by using the grid's DataSource property. Pretty easy task...unless when it comes to sorting. From the looks of it, Ayende has the similar problem that he's trying to overcome... At that point, our IList<T> doesn't cut it. You could say, well, use an BindlingList<T> and override the ApplySortCore...
As an architect/developer/software professional I strive to produce the best product I can create within my environment. In particular, I see myself as having two customers to please: the person who will use the product and the one that will maintain it. The person that will use the product day-in and day-out (should) cares about: The product meets her/his expectations Usability (is it easy to use?) Has little (or no) flaws/errors during operation It is delivered to them within the expected time Are involved with feature priorization & negotation As for the person that will maintain the product (should) cares...
That's right, we're at it again! We're signed up to answer your ASP.NET related questions for two hours on April 19th at 11:30 PST (1:30 CST).
The chat format is as follows: You post your questions and the panel of experts answers them. We're using the Microsoft Chat Software (MVP’s only, sorry!) to grab questions and answer them. The first chat did not have this software working well and was kind of chaotic (MSN Messenger & Conference Call). The software is now working, so it should be a very smooth flow of questions and answers. We're still doing the conference call so that when...
I've been meaning to blog about this for a while, but for some reason I keep forgetting (sorry, I've been busy at work). If you're wondering on how WCF compares performance wise to existing distributed communication technologies (ASMX, WSE, Enterprise Services, .NET Remoting) you should definitely check out this white paper on MSDN: A Performance Comparison of Windows Communication Foundation (WCF) with Existing Distributed Communication Technologies
We have this document generation app that uses WCF for connecting to our middle-tier server. In order for users to run the application, they need .NET Framework 3.0 installed on their machines. To accomplish this task, I decided to use ClickOnce since it will download the pre-requisites during the installation process. However, when I tried publishing the application, to our intranet, I ran into this issue with the process: No 'PublicKey' or 'Hash' attribute specified for file 'NETFX30\Dotnetfx3.exe' in item '.NET Framework 3.0'. No 'PublicKey' or 'Hash' attribute specified for file 'NETFX30\Dotnetfx3_x64.exe' in item '.NET Framework 3.0'. Yeah,...
That's right, if you're interested in learning about becoming a more effective architect, you should check out the ArcReady event that will at the Embassy Suites on May 18th (5/18/2007). The theme for this ArcReady is entitled "Architecting for the User Experience", how does the role of user experience take part in architectural designs? More specifically, how you can use WPF, WPF/e, XAML and the Expression suite to enhance your applications. If you have the time, you should check it out. I'll see you there!
Today, I spent the better part of my morning trying to troubleshoot a problem with COM interop within a WCF service. Here's the situation... We currently have a legacy COM (VB6) component that creates a CSV file containing data needed to generate a PDF. Unfortunately, we don't have the time to re-write this component to .NET, so we have to make due for now. I first tried the component within a standard WinForm, and I was able to create/invoke it with no problems. With this success, I proceeded to use said component within a WCF service so it could be exposed within our intranet (netTcpBinding). ...
I know this is old news, but I'm extatic that Microsoft has acquired DevBiz and consequently, TeamPlain for TFS. You can read more about it over at Brian Harry's blog. Back when I was evaluating TFS for work, I installed TeamPlain and was pretty amazed what the application did. Back then, the licensing was ~$100 per client, but now that MS has acquired it, it's now FR-EE!! Check out the screen shot below to see TeamPlain's coolness:
So, as some of you have noticed, I haven't blogged in about 10 days...and that's a little unsual for me. After getting back from the MVP Summit, I tons of work that had piled up during my absense plus the work that I need to get done that week. Needless to say, I was pretty swamped. To make matters worse, an enhancement that I had deployed prior to leaving for the summit had stopped working and no one could figure out why. So, alas I spend the first half of Monday trying to dig through all the failed steps to...
So, a couple of days ago while sitting at the lobby of my hotel for the MVP Summit, I decided to come up with a simple Smart Client shell for the LOB Windows application my company uses. So there I am minding my own business when along comes Jean-Paul Boodhoo, James Kovacs, David Laribee, DonXML and ask what I was working on. After some explaining of my intentions for replacing our legacy VB6 application with a brand new .NET one, JP couldn't resist the opportunity to do some TDD and Pair Programming. I must say, that I've always been of the...
I would like to thank Paul Sheriff for taking the time to speak to our user group. He did an excellent job on presenting an intro to OOP. In case you were not there, he has offered a free eBook for our UG members. Go here, to get it. Once again, thanks Paul!
I was asked today if there's a metric for determining whether an business application should use Windows Workflow Foundation (WF) or roll its own workflow plumbing. Here's my extended answer... As far as a metric of qualification, I can't say there is one (or that I have found one). Besides deciding whether or not to use a technology (or any type of plumbing) as an aide for development can't be (and shouldn't be meausered) by a number. It's not the number of lines of code, methods, classes, assemblies, etc. that decide whether or not you should use workflow. It all comes down to...
By the way, I posted about this chat a while back....
but if you don't recall and are free tonight from 7-8 PM CST (8-9 PM EST, 5-6 PM West Coast Time), come check out our ASP.NET MVP Public Chat! Check out the line-up of MVPs that are ready to answer your ASP.NET questions!
You can join the chat by going to the MSDN Chat Center.
Last night, we had the privelege of having Billy Hollis present about Smart Client design at our monthly UG meeting. We were able to book Billy through our membership with INETA. The presentation was pretty good since he covered alot of spects of smart client design, development and deployment. The crowd was somewhat interactive and over all had a good time. Thanks Billy for talking to our group!
Here's the list of books that are currently on my nigh stand: Godel Escher Bach: An Eternal Golden Braid Douglas R. Hofstadter Yep, it's that time again. I read GEB once a year to keep in touch with my inner ComSci geek. If you're interested in theoritical concepts of Computer Science, then you definitely check it out! Joel on Software: And on Diverse and Occasionally Related Matters that will Prove of Interest to Software Developers, Designers, and Managers, and Those Who, Whether by Good Fortune or Ill Luck, Work with Them in Some Capacity Joel Spolsky I've been...
So, this is an 'archaic' method of doing a silent MSI install/uninstall but it worked for us! We have an "updater" VB6 applications that checks files on our test server and compares them to the files on your hard drive. If the application detects a change, then it updates your file with the version on the server. This application only deals with OCXs, EXEs and DLLs. Since our new environment is all .NET, I needed to add MSI packages to the list (I know I could've done a straight copy but I need to do some COM registration for interop). ...
When system design is based on the can we get it done in the given time factor. Common conversations start out like
If we only had a week to design the system, how would I...
Nick posted a really good read that covers some of the same topics. I particular like point that Getting Real makes on building half a product, not a half-ass product.
Check out this cool Channel9 video interview with Rory and ScottGu. Should help light up some of the future paths the technology (ASP.NET and other MS Web Techs) are taking on the near future.
I just downloaded the PowerToys for the Visual Studio 2005 Class Designer and Distributed System Designers. The Class Designer has the following enhancements: Export Diagrams for Web Display Xml Comment Command Documentation Tool Window Filtering Appearance Filtering Lines Filtering Members Fast Navigation Interface Lollipop Labels Commands Inheritance Visualization Commands Show Type Command Association and Inheritance Line Dongles Type Creation Commands Add Member Commands View Class Diagram Command Improvements Go download this powertoy and start enjoying its goodness!
Come join us tomorrow at our monthly .NET User Group meeting! We'll have Richard Hundhausen, Team Foundation MVP & RD, present on SQL Server 2005! Also, we'll be discussing on severals ways the UG can get involved in helping keep the memory of Eric Jacobs alive. Hope to see you there!
Not sure how many of you guys have experienced FxCop Rule# CA1002 : Do Not Expose Generic Lists through out your coding ventures. I'm not sure what to think of it... In one hand, I see the flexiblity of returning the IList<T> type since there could be x-number of things that could implemented. Thus not tying me up with a specific implementation such as List<T> or Collection<T>. On the other, Collection<T> does allow you to override functionality and also implements IList<T>. The rule does mention that List<T> (IList<T>) is designed for performance and Collection<T> is designed for inheritance... What are your thoughts on...
If you have the time, check out these great downloads add-ons for VS2005. I already have .NET 3.0 framework installed on my laptop and ready to play with WF and WCF...this is just sweet!
http://en.wikipedia.org/wiki/Design_by_committee What's your take on it?
Essential Windows Workflow Foundation This is book is a really, really, really good read. The authors (both architects of WF) do a really great job of breaking down the concepts of what "makes up" a program...a basic approach they took into consideration when designing WF. If you're planning on using .NET 3.0, this is a worthy investment.
While trying to get our ci build to work, we ran into problems with the Oracle .NET Provider and NUnit. For some reason, there seems to be a threading issue with the provider and the way TestDriven .NET and UnitRun execute unit tests. In particular, the OracleConnection object, when you specify the string to be null or empty, an InvalidOperationException should be thrown. However, this is not the case...the exception is never thrown! If you run the unit test by it self, then the exception is thrown as expected. Weird. Have any of you run into this issue with the Oracle...
That's right, if you're planning on doing some development with the .NET Framework 3.0, you don't have to use CTPs, any more! They've shipped the product! This is the beginning of a brand new approach of application development for the Windows platform. Great job, teams!
First and foremost, thanks to all of you that attended my presentation! We had a great crowd that was eagered to learn more about the inner workings of ASP.NET. Second, I would like to apologize for my buggy demo. Like I mentioned during the error, I moved the database file containing the content from my desktop to a folder under the C-drive so my connection string got hosed. I didn't take the time to check the demo to its entirety before showing it. My apologies. If you would like to get the demo code for the presentation, you can do...
Ted Neward is creating a new colun on MSDN that outlines the content of his presentation on Pragmatic Architecture. You can check out an intro for the series, here. I was able to see this presentation at TechEd this past summer and it was pretty good. If you would like to see the webcast, you can do so here.
Oracle Develop is the "developer"part for the OpenWorld conference. Remember, when I blogged about it couple of days ago? Yeah, I was pretty much in the same room for hours listening on how I can use their .NET tools to make things easier for developers. Verdict? Un-impressed. Why? Well, most of their content was the same content you can find on their website. The only things that made it ok was that I was able to talk with the developers of the product and discuss some of the issues/enhances with the product. I was also pleased to find out that they're planning...
So, I'm at Oracle OpenWorld in San Francisco this week to learn more about how we can leaverage our Oracle backend through .NET. As some of you might now, MS provides a "built-in" Oracle ADO.NET provider within the .NET Framework. If you didn't know, Oracle also provides their own managed ADO.NET provider that communicates natively with your Oracle db resources. They also provide something called Oracle Tools for VS.NET (OTDN), that is a series of add-ins for VS2005|2003 that allow you to connect, modify, debug and query your Oracle database. The ADO.NET provider and OTDN are free for download. So,...
So yestereday I'm reading my daily RSS feeds when I encounter Ted Neward's post on a comment that Scott Hanselman made during the p&p Summit in Redmond. After reading this post, I shot Nick a message asking him to read it and see what his toughts were on this...you can find his response here. I couldn't agree more with Scott, Ted and Nick. Here's why ... In my old Java dev days, we utilized a lot of open source technologies (Http Commons, log4j, Bouncy Castle, etc.) to help speed up our writing of code (just as Scott did with log4net). The company I...
Mike Stall has a really sweet post in he discusses some differences between conventional calls using the Object type and generics to casting for you within factory methods (Type CreateType() ). Worth the read if you're using generics beyond the traditional collection samples.
Roy Osherove has a great comparison of the popular unit test frameworks for .NET (MbUnit, NUnit and Team System Unit). I have to agree that for general testing purposes the standard is NUnit. Once you've grasped NUnit, MbUnit is a logical transition.
Quick question: Are any of you using Seapine's Surround SCM along with CruiseContro.NET within your CI solution? Just want to know if there are some things I should look out for if going with this approach. Thanks!
Well, looks like Nick beat me to the post! If you're doing Unit Testing or TDD, this is a great installment of Hanselminutes you should not miss! Scott has always done a great job with putting just the right amount of content to keep the listener interested and productive. This is not just me saying it, but Chris Sells too!
If you want to learn more about unit testing and being test driven, you should also check out this other Hanselminute.
I just stumbled into this project, CCNETConfig, while looking through CodePlex earlier this evening. I have not looked into this tool (since I don't have CC.NET installed on this laptop) but seems like something that could be very useful to those using CC.NET at their shops.
I've been doing a lot of playing around with Team Foundation for the past couple of weeks and in the mean time I've created a lot of test* Team Projects.
When I decided to clean up some of these test project, I thought the logical thing and went to delete them through Team Explorer. Well, as soon as you do that, you will run into this nice little message:
Use the Project Creation Wizard in Team Explorer to create a project or the TfsDeleteProject tool to delete one.
Being a huge fan of the command line, this is not an issue for me. ...
Today I started to setup Continuous Integration (CI) with Team Foundation Server (TFS). Unfortunately, TFS does not support it out of the box; however, it does support functionality for you to hook-up into event sinks for comment server operations (Checkin, WorkItem assignment, etc). So, I Googled for "continuous integration team foundation" and ran into two really good posts by Jeff Atwood [post] and Daniel Cazzulino [post]. I particurlaly like solution that Jeff's post gives you, because he has added the page that kzu (Daniel) created and incorporated into his CI webservice. I wanted to take the solution even further by adding the automatic addition...
I ran into Buck Hodge's post on TFS tools on CodePlex and I must say that I'm pretty impressed with the selection of free tools out there.
In particular, I like the Code Review Workflow and Automaton offer. I played with Automaton today and for what is "there" it's not too bad. There is still some room for improvement but it gives implementers a pretty nice start to allow developers to kick start a build. As for Code Review Workflow, that's on the books for another day.
Another two projects to look at and consider are Source Code Tree Browser (this is...
How many of you out there are running Team Foundation Server? If you are, have you done anything to customize work items, policies or processes?
Where does/should it live? Middle tier (.NET/Java/Other technology) or data tier (SQL Server/Oracle/DB2)? Talk amongst yourselves. I'm curious to find out what you have to say!
David Chappell has posted his latest opinari entitled SOA and the Reality of Reuse. Over all a pretty good read since it helps to demystify theoretical SOA from applied SOA. While reading the opinari, I came to the realization that people considering SOA should we asking the question: what are you really trying to do now? As an added bonus, David Ing has posted his own thoughts on the opinari; also a very good read.
My good friend Tim Gifford has a pretty nice write up on object-orientation and the always popular, "static vs. instance" methods. Here's something I would like to comment/add-upon to his post: Tim mentions, Because when you're agile, you must be able to make changes quickly without affecting the system. In order to do that, you need to reduce (or eliminate) duplicate code and minimize coupling. I will have to say that this statement holds true for more than just agile developers. If you're doing any type of component based development or have incorporated some higher-level abstractions into your code,...
Currently in the process of looking at different modeling tools (data, objects, applications, etc.) that we can use for the development of our new system. What type of tools have you used to create your data, domain and business process layer? Any input is appreciated!
Last week at work, I was asked about how one would go about displaying forms that are hosted within a VB6 ActiveX DLL. The first thing that went through my mind was, “Why would you?” … well, the DLL was “legacy” code that couldn’t be ported to .NET due to time constraints. So, how do you do it?
Well, if your DLL displays any forms (aka calls the Show method on them), you will throw a COMException. What’s the COM exception for? The issue outlined in this KB Article. Here’s a quick summary of the issue from the KB article:
Modeless forms displayed...
Here’s a list of the books I’m currently reading:
Technical – Developer
Professional .NET Framework 2.0, Joe Duffy, WROX Press
I previously posted about this book...yeah, I'm still reading it. Been busy with the baby.
Technical – Architect
Applying Domain-Driven Design and Patterns: With Examples in C# and .NET, Jimmy Nilsson, Addison-Wesley
I really enjoy reading Jimmy's blog and knew about the book for quite some time. While at BN, I saw it and started reading it. After a while, I realized that I was already halfway done with chapter one. I just had to have it. Pretty great read specially if you're read the PoEAA...
Here’s a really good post (with a flow chart!) in which Craig McMurty describes the steps and scenarios you should consider when making changes to your WCF contracts (service, message or data).
Interested in learning the different disciplines of system architecture as well as perspectives on building successful systems? Check out Skycrapr.net! Ron Jacobs has created an excellent resource to help aspiring architects get training and good reading.
I first found out about Skyscrapr while attending Ron’s presentation at TechEd this year. Check it out!
Tonight we had our first Post-It discussing meeting. Here’s the jist of it from our member’s email
We're trying something a little different for this month's meeting. At the beginning of the meeting, you will be given a post-it note and asked to write down 3 topics that you're currently interested in and would like to discusss.
We'll collect the post-it notes and form discussion groups based on their content. Anybody interested in the related content is encouraged to discuss/learn/share within the group. Also, each discussion group will have a recorder that will write the ideas discussed within the group. These ideas will...
Kenny Wolf has a very good post on which he describes the reasons for setting the IsOneWay property of your OperationContract attribute to true.
If your operation has void return type, mark it with IsOneWay so …
The service will release the connection (or complete the HTTP request/response by replying with null, etc) before dispatching to user code. If the operation is not marked with IsOneWay then our Dispatcher won’t reply until the Operation has completed
An important thing to know if you’re want to your application to perform well by using the old “fire and forget” idiom.
I would like to thank the CRIneta Admin group for allowing me to come and speak to their fine group. Nick tagged along for a night filled with pizza, demos and prizes. Thanks for the great time, guys!
During the meeting, Greg asked for information on performance between .NET Remoting and Enterprise Services, I told him of an article on MSDN that covered that topic (actually, I found two):
.NET Enterprise Services Performance
Performance of Web Services, Enterprise Services, and .NET Remoting.
I will be presenting an overview of .NET Enterprise Services at the Cedar Rapids .NET User Group (CRINETA) this coming Monday, June 5th. If live around the Cedar Rapids area, stop by and check out the show.
Due to time constraints, I will have to cut short (if not all out) some of the demos I did for the IADNUG meeting this past month.
Should it blogged about it last night! ScottGu has a great post on the new CSS Control Adapter Toolkit for ASP.NET 2.0. This control adapter gives CSS-friendly capabilities to pre-excisting ASP.NET controls (Menu, TreeView, DetailsView, FormView and DataList).
Pretty nice way to hook into the new Control Adapter Architecture for ASP.NET 2.0.
Check it out if you got the time.
For those who care about MSF (not, it’s not Spiral + Waterfall anymore!), you can download the MSF Agile Process Guidelines and see how Team Foundation Server helps you to align your development process to MSF Agile or a Scrum process.
For those of you out there that are Scrum fans, check out the Scrum for Team System download from Conchango. It’s free and from the looks of it, pretty cool.
Found this really good write up on Software Factories (SF). If you have the November 2005 CTP Release for Visual Studio 2005, you can build the sample in the article. This is pretty good implementation of a SF.
Ok, that was a stupid title. But hey, I’m not a comedian.
Just finished looking through the Stored Procedure Object Interface Layer (SPOIL) write up on MSDN’s Solution Architecture Center. SPOIL allows you to declaratively link a method with the same signature as the stored procedure (except using BCL types) together. For example, take this stored procedure sample:
CREATE PROCEDURE [dbo].[SendLog_Update] (@BatchId uniqueidentifier,@PartnerId nvarchar(50),@Mailbox nvarchar(50),@RootName nvarchar(100),@Directory nvarchar(100),@StartPackaging datetime,@TotalBytes bigint, @SendBytes bigint) …
To something like this in code:
[SqlCommandMethod(CommandType.StoredProcedure, "SendLog_Update")]public int SendLog_Update( Guid BatchId, [SqlParameter(50)] string PartnerId, [SqlParameter(50)] string Mailbox, [SqlParameter(100)] string RootName, [SqlParameter(100)] string Directory, DateTime StartPackaging, long TotalBytes, long SendBytes){ ... }
Kinda different, huh? Check it out and let me know what you guys think!
Those of you with an MSDN subscription can now download the workgroup edition of VSTS! And if you’re wondering, yes it runs on a P3 900 Mhz with 512 RAM. ;-)
How many of you out there have to deal with integration within your applications? By integration, I mean either logic or data. When it comes to logic integration, your application calls a local/external service to perform logic that’s not part of the system. For example, in your business process, you call an external web service to perform a computation with your data. As for data integration, your application takes data that’s been processed and moves it to necessary data stores (database, files, etc.) that need it. An example of data integration is the replication of data accross data stores or the...
The new version of the .NET Pet Shop shows you how to migrate a v1.1 application to v2.0 of ASP.NET. Cool conversion features are the use of System.Transactions instead of Serviced Components, strongly typed collections to generic collections and extending the new membership modules.
You can dowload an MSI to install the source and the related databases. Pretty good stuff!
To me (the web developer) this is pretty sweet. I like how they apply a design name for features found accross websites. For those web developers out there, what do you guys think? They should submit these to PatternShare!
This is a pretty good read from the WCF Forums. Check it out.
How many of you out there (in the Des Moines area) use a framework/architecture to simplify your development efforts?
Just trying to do a quick poll.
I need to add this book to my “to-read” list…
I’ve been answering some questions on Google Groups dealing with ASP.NET web services. In some of the questions, people asked, “How do I send a <insert-user-defined-type-here> that’s in <insert-language-here> to a <insert-another-language-here> client?” Or, “Should I send a DataSet/XmlDocument/String to my client for my complex type?”. Clearly, there’s some confusion (or misunderstanding) about how types are represented in the service world.
The purpose of this post (along with the proceeding three) is to share the basics principals outlined by the tenets of Service Orientation. I will present the tenets in no particular order…the reason I started with Share...
Jimmy Nilsson has posted some good information about the coping of extreme loads and extreme scalabily. Check out his first of may Computing by Bricks.
Looks like Jeff has beat me to the post. For those interested, David Chappel has posted a really, really good comparison between WCF and Service Component Architecture (SCA). Hopefully this should simplify the creation of web services on the Java platform by providing a platform/technology all vendors can agree on.
I created a new Google group called Software Architecture. It’s purpose is to be used as a place on which we can share ideas abouts design patterns, development methodologies, design processes and new trends in software development.
If you’re interested in joining, check it out!
http://groups.google.com/groups/softarch
Jack Griendfield, Keith Short and Mauro Regio are planning on writing a book called, Software Factories Applied. This book will be a complement to the original Software Factories book and will show how to create SFs with the DSL Tools, GAT and VSTS.
I can’t wait to read it!
For those of you out there that are fans of Channel 9, have you seen their new line-up of shows? I checked out this conversation between Ron Jacobs and Steve Cook about DSLs and Software Factories. If you’re wondering what software factories are and if they can make your life easier, check the podcast out.
According to GoF a proxy is a surrogate or placeholder for a another object to control access to it. The text later goes on to explain that a reason for controlling access to an object is to defer the full cost of its creation and initialization until we actually need to use it. Makes sense doesn’t it? A proxy is nothing more than a light weight way of accessing an object (regardless if it lives in the same address space as the caller).
Recently, for one of our work projects, we’ve been using a lot of Enterprise Services (ES) in order to...
A while back, Nick posted how you can use the Spring .NET Framework to have Design by Contract with AOP. I’ve been talking to him about you can do the same thing using a .NET remoting proxy to your object and intercept the calls to your objects. To do this, I needed three classes: An attribute to initialize the attaching at class level for wiring the AOP guts, a class that wires up the AOP guts and a sink that performs the interception. This is a modified version of Nick’s code:
using System;using System.Reflection;using System.Runtime.Remoting.Activation;using System.Runtime.Remoting.Contexts;using System.Runtime.Remoting.Messaging;namespace Lozanotek{ public interface IEvaluator { bool Evaluate(object arg); } [AttributeUsage(AttributeTargets.Method, AllowMultiple = true, Inherited = true)] public class PrologAttribute : Attribute { private int index; public IEvaluator evaluator; public PrologAttribute() { } public PrologAttribute(int index, Type evalType, params object[] args) { this.Index = index; Object obj = Activator.CreateInstance(evalType, args); if (obj != null) this.evaluator = obj as IEvaluator; } public IEvaluator Evaluator { get { return evaluator; } set { evaluator = value; } } public int Index { get { return index; } set { index = value; } } public bool Evaluate(object arg) { return evaluator.Evaluate(arg); } } public class StringLengthEvaluator : IEvaluator { private int min = 0; private int max = 0; public StringLengthEvaluator(int min, int max) { this.min = min; this.max = max; } public bool Evaluate(object arg) { int len = arg.ToString().Length; return (len <= max) && (len >= min); } } [AttributeUsage(AttributeTargets.Class)] public class AOPClassAttribute : Attribute, IContextAttribute { public void GetPropertiesForNewContext(IConstructionCallMessage msg) { msg.ContextProperties.Add(new AOPProperty()); } public bool IsContextOK(Context ctx, IConstructionCallMessage msg) { return false; } } internal class AOPProperty : IContextProperty, IContributeServerContextSink { public AOPProperty() { } public void Freeze(Context newContext) { } public bool IsNewContextOK(Context newCtx) { return true; } public string Name { get { return "AOPProperty"; } } public IMessageSink GetServerContextSink(IMessageSink nextSink) { return new AOPMessageSink(nextSink); } } internal class AOPMessageSink : IMessageSink { private IMessageSink next; public AOPMessageSink(IMessageSink next) { this.next = next; } public IMessageCtrl AsyncProcessMessage(IMessage msg, IMessageSink replySink) { return null; } public IMessageSink NextSink { get { return next; } } public IMessage SyncProcessMessage(IMessage msg) { bool proceed = true; if (msg is IMethodMessage) { proceed = Invoke(msg as IMethodMessage); } return (proceed) ? NextSink.SyncProcessMessage(msg) : new ReturnMessage(null, null, 0, null, (IMethodCallMessage) msg); } private bool Invoke(IMethodMessage msg) { bool results = true; MethodBase method = msg.MethodBase; Type attrType = typeof(PrologAttribute); PrologAttribute[] prologs = method.GetCustomAttributes(attrType, true) as PrologAttribute[]; if (prologs != null) { foreach (PrologAttribute pl in prologs) { if (pl != null) { IEvaluator eval = pl.Evaluator as IEvaluator; if (eval != null) { object[] args = msg.Args; results = eval.Evaluate(args[pl.Index]); if (!results) { break; } } } } } return results; } } [AOPClass] public class Person : ContextBoundObject { [Prolog(0, typeof(StringLengthEvaluator), 0, 5)] public void SayHello(string name) { Console.WriteLine("Hello {0}", name); } } class Program { [STAThread] static void Main(string[] args) { Person p = new Person(); p.SayHello("Javier"); p.SayHello("Jav"); Console.ReadLine(); } }}
If you have any questions or comments, let me...
I like software architecture (sa). Why? Because it really makes you think about your current problem domain (requirements) and how you should go about solving it through the use of abstractions (models, diagrams, documents, source code, etc.). When thinking about sa, you should not attach a tool (a language, framework, pattern) to a name (C#, Java, .NET, J2EE, MVC, etc). Just keep it simple and abstract. I don’t want to get preachy about it, just sharing my point of view.
What got me thinking this way? Well, it all started with this site. After getting addicted to the content, I bought this...
Ok, well first and foremost, I would like to apologize for my delay of this post. Lately work has been sucking my brain dry!! When I get home, I just want to stare at a wall and pretend the pain is gone. Don’t get me wrong, I love what I’m doing right now, but I get so deep into it that it even haunts my dreams!!
What is this haunting? Well, it’s Enterprise Services. I’ll get to the reason in just a bit. The code I posted a while back asked a simple question, what does the code output?………Bueller? Bueller? Bueller?...any one?...
While doing some of my ES research, I bumped into this article by Richard Turner, PM for Distributed Systems Group, and Ingo Rammer from thinktecture. This is a great read for those of you that are evaluating which technologies to use for their enterprise. They also compare the passing of [Serializable] objects and DataSet objects across your services.
Ok, on a side note why would you want to pass a DataSet across your layers? Let me see…Oh yeah! I want my performance to suffer due to the extra work serializing all of the internal objects!!
John Evdemon has posted a series of articles covering different aspects of Service Design. The first article entitled, Service Patterns and Anti-Patterns covers the basic SO tenants and patterns and anti-patterns for effective web service design. The second article, Service Versioning talks about versioning schemas for your web services. Good reads all around!