Friday, December 29, 2006

Recently I have been reading some really great tutorials on the Validation Application Block by David Hayden on his blog. For those that do not already know David Hayden is one of the few great bloggers out there that actually create well crafted blog posts that actually help us out. He certainly makes me look bad that is for sure, I have to work much harder to get to his level. Perhaps that is osmething I can work on next year? Perhaps, my friends.

This is what he has written about so far.

Validation Application Block in Enterprise Library 3.0 - Using Validation Facade Class - Part I

Validation Application Block in Enterprise Library 3.0 - ValidationFactory Class - Part II

Validation Application Block Ruleset in Enterprise Library 3.0 - Enterprise Library 3.0 Tutorials - Part III

Validation Application Block - Rules in External XML Configuration File - App.Config Web.Config - Enterprise Library 3.0 - Part IV

Validation Application Block - Business Layer and Data Access Layer Integration - Part V

If it were not for David Hayden's efforts I am sure many would be blind as to how to proceed in utilizing this tool that Microsoft has provided. Good work as always David!

12/29/2006 12:26 PM Eastern Standard Time  #    Disclaimer  |   | 
 Monday, August 14, 2006

Just as a friendly reminder to all those here in Sarasota that we have an upcoming Sarasotadev meeting sponsored by INETA. I recently received a reminder from Stan Schultes reminding the group that Tim Huckaby is coming to give a presentation on Architecting and Building Workflow Solutions and Smart Client Development. It should be an interesting event.

The details I received were the following:

August 2006 SarasotaDev meeting:
Architecting and Building Workflow Solutions and Smart Client Development
 - by Tim Huckaby

This meeting will be on Thursday, August 17, 2006 at 6pm. Location: Sarasota Community Foundation, located at 2635 Fruitville Rd., Sarasota, FL 34237 (just west of Tuttle on the north side of Fruitville).

This two hour session will overview Windows Workflow Foundation (WF), and then Tim shows off his bag of tricks for developing smart client apps. This is a must-see session - Tim is immensely entertaining and knows his stuff like no other...

Architecting and Building Workflow Solutions with InfoPath, WF and SPS V3
In this session you will learn how to build custom workflow solutions with Visual Studio 2005.  You’ll learn how to integrate those workflows into SharePoint, and how to interact with workflows using InfoPath.  This session focuses on the power and developer productivity of workflow solutions built on WF.  WF is a powerful technology and this session will delve into the tips and tricks, positives and negatives when designing and building workflow solutions with WF.

Windows Workflow Foundation (WF), a platform component and part of the Windows plumbing included with the WinFx runtime, has an extensible programming model and runtime components to make powerful workflow solutions.  Couple WF with the latest version of SharePoint Portal Server (v3.0) Infrastructure and InfoPath Forms backed by managed code and you have quite a powerful set of tools, plumbing and infrastructure to build powerful and scalable workflow solutions with ease. 

This combination of technologies addresses one of the biggest challenges that .NET solution developers face today – workflow.

Smart Client Development

In the second hour, Tim will highlight smart client development by showing a bunch of demos from his developer bag of tricks.

Tim Huckaby is a Microsoft Regional Director and well-known international speaker.


On Tuesday, September 12, 2006 we've got a visit lined up by Microsoft's David McNamee of Tampa, who will talk about the upcoming Microsoft Office 2007 Server System (MOSS).


On Wed, October 11, 2006, we've got another superstar lined up in Miguel Castro, an author, speaker, and independent consultant in the NY/NJ metro area who specializes in building web server controls and .NET applications.

 

 

8/14/2006 10:27 AM Eastern Daylight Time  #    Disclaimer  |   | 
 Thursday, July 13, 2006

Rory Blyth has put together a nice set of screencasts on how to develop applications on Windows Mobile 5.0. These screencasts cover the whole range of topics that you would need in order to get started developing on this platform. I have personally viewed several of these screencasts and the quality of their presentation is what you would expect from Rory - meaning quite darn good.

You can catch all of these screencasts that are uploaded to Channel9 through the following links.

I can only hope in the future deliever the same amount of material at the same level as Rory. He sets the bar for us all.

7/13/2006 4:07 PM Eastern Daylight Time  #    Disclaimer  |   | 

Perhaps you may have noticed that none of my posts actually ever contain any code. The reason is simple I have never found a nice way of posting code on my blog without it looking like crap. However I believe there may be a solution to my problem. You see there is this guy named Noah Coad who developed a way for all of us to create well formated code in our blog posts.

Basically what Noah did was create a Word Macro that will automatically format code pasted into the clipboard that you then want to place into Word and then from Word you place into whatever blog engine you desire. Now I have to admit I have not actually tried these macros out but I can assure you that his code on his blog looks pretty darn good to me so I am willing to try it.

Find out more details on how Noah Coad places well formated code on his blog by going here.

http://blogs.msdn.com/noahc/archive/2006/07/06/658458.aspx

Later on I will attempt to have more in depth postings using this template. Hope this helps someone out there.

7/13/2006 12:21 PM Eastern Daylight Time  #    Disclaimer  |   | 

I recently came across Matt Hester's blog. Turns out he has some really great performance tips for improving Virtual PC. Some of these tips I would have never thought of had he not blogged about it.

The tips come in a three part series with the first part here.

http://blogs.technet.com/matthewms/archive/2005/09/09/410546.aspx

The second part of the three part series is here.

http://blogs.technet.com/matthewms/archive/2005/09/23/411478.aspx

The third part of the three part series is here.

http://blogs.technet.com/matthewms/archive/2005/10/07/412159.aspx

With those blog posts you should have Virtual PC running quite smoothly and fully optimized so as to not hang during a crucial presentation or developing the next big thing. Hope this helps.

7/13/2006 10:37 AM Eastern Daylight Time  #    Disclaimer  |   | 
 Wednesday, July 12, 2006

I am sure many of you who read my blog are already aware of Microsoft releasing Virtual PC for free today. This is great news as it will allow me to beta test products I have been very wary to do so because I did not to ruin my production machine. However, I have also found out that VMWare has also released their VMWare Server for free today as well. This is beginning to look a lot like the browser wars of the mid 90's.

You can download the Microsoft Virtual PC here.

http://www.microsoft.com/downloads/details.aspx?FamilyId=6D58729D-DFA8-40BF-AFAF-20BCB7F01CD1&displaylang=en

You can find out more information about the VMWare Server release here.

http://www.vmware.com/news/releases/server.html

You can download VMWare server here.

http://www.vmware.com/products/server/

What does this mean to you and me? A whole lot as the cost of hardware is relatively cheap and now you can fully use all your resources of each server. I know of several very large companies that run their production web servers on VMWare servers, I am not going to tell you who as that could be a potential security breach for them. However though this does tell you the robustness of these products.

 

 

7/12/2006 7:47 PM Eastern Daylight Time  #    Disclaimer  |   | 
 Sunday, June 11, 2006

Have you ever wondered how to integrate the LLBGenPro with ASP.Net 2.0? Do you need an easy to use walkthrough that demonstrates how to do just that? Well you are now in luck as Frank Bouma, the inventor of LLBGen Pro, has done exactly that.

You can find details here.

Now what would be cool is the Atlas functionality can be integrated into these examples so as to really demonstrate a powerful web application example. Just a thought. I am sure someone is working on such a thing right now.

6/11/2006 4:15 PM Eastern Daylight Time  #    Disclaimer  |   | 
 Friday, May 05, 2006

I have recently became a fairly avid user of the CSLA.Net framework by Rocky Lhotka. I find that the framework fills in some of the gaps that I need when I am developing applications. Since I am somewhat new to this framework I am just happy as all get out that there is a new forum where I can ask questions regarding this piece of code.

The forum can be reached here:

http://forums.lhotka.net/

It is powered by Community Server which is also something I am a bit of a fan of as I hope to eventually start a community based programming site with it when I get the time.

So if you have any questions regarding this particular framework and how it may be able to help you or at least clarify some issues that was not covered in the books then this is the place for you.

Just a short note right now I guess.

5/5/2006 2:50 PM Eastern Daylight Time  #    Disclaimer  |   | 
 Thursday, April 13, 2006

I recently subscribed to Scott Guthries blog. I am really glad I did! You see it was Scott that informed me of the article on how to integrate credit card processing into a ASP.Net application. You can read the article here.

http://www.west-wind.com/presentations/aspnetecommerce/aspnetecommerce.asp

Also today was another good day in that Scott informed his readers that the ASP.Net Provider model source code is open to the public.  This is great news on those that want to see the inner workings of the new way ASP.Net 2.0 handles things like Membership, Roles and Sitemap among many others. You can find the blog post on this subject here.

http://weblogs.asp.net/scottgu/archive/2006/04/13/442772.aspx

If you have not subscribed to this blog and are only slightly interested in ASP.Net or .Net Programming then you should do so pretty soon. The informaton that Scott conveys in his blog is a lifesaver.

.Net | ADO.Net | ASP.Net | Reviews | Software
4/13/2006 7:43 PM Eastern Daylight Time  #    Disclaimer  |   | 

Also from Stan Schultes is a note that Russ Fustino our local Developer Community Champion is going to present. Be sure to attend this one as our low attendence in the past has forced Microsoft to cancel regular meetings in this area. We need to show them that there is a market here for these MSDN presentations. The details is as follows:

Coming on May 9: Russ Fustino, our Microsoft Developer Community Champion, returns with an MSDN session in his famous Russ' Tool Shed series. Please make an effort to attend this (and the morning TechNet session). If our attendance is high, they come back. If they don't get enough audience, well, you know what happens :)

The MSDN session (for developers) from 1-5pm (event code: 1032291809) has the following topics:

  • Create customizable user interfaces with web parts and ASP.NET 2.0
  • Language enhancements in .NET Framework 2.0
  • Exploring Enterprise Library for .NET Framework 2.0

The TechNet session (for IT pros) from 8am-noon (event code: 1032291919) has the following topics:

  • Implementing security for wireless networks
  • Responding to computer attacks
  • What's next for Microsoft security?

Since both subjects should be of an interest to a developer you could make a whole day out of this!

4/13/2006 2:53 PM Eastern Daylight Time  #    Disclaimer  |   | 

I got a note from Stan Schultes that our next Sarasotadev meeting will be April 17th, 2006. The meeting details is as follows:

Note the choice of next Monday for our April meeting - it's a bit unusual for us (although we don't have a set day of the month for our regular meetings). Turns out this is the only day the facility is available at no cost to us in the middle two weeks of April (thanks to the Sarasota Community Foundation, and Van & Jody Vangor!).

April 2006 SarasotaDev meeting:

Hands-on sessions - by our own Dave Hayden. Dave's a top-notch, hands-on kind of guy, so these are very practical talks. I've seen both - and they really kick:

  • SQL 2005 - native web services, SQL SMO, CLR integration, new XML datatype
  • Enterprise Library 2.0 - Applying the Data and Logging Application Blocks

This meeting will be on Mon, Apr 17, 2006 at 6pm. Location: Sarasota Community Foundation, located at 2635 Fruitville Rd., Sarasota, FL 34237 (just west of Tuttle on the north side of Fruitville).

In the SQL 2005 session:

  • Learn how to expose and consume your stored procedures as XML web services without using IIS.
  • Understand the basics of creating and deploying CLR database objects, like stored procedures, user defined functions, and triggers.
  • Use SQL Server Management Objects with C# to create database objects, script objects, and transfer database schema and data.
  • Leverage schemas and XQuery with the new XML Datatype for validating and querying XML.

In the Enterprise Library session:
Leverage the application blocks in Enterprise Library 2.0 to more quickly create patterns-based, extensible applications in a consistent manner. Learn about the most popular application blocks (Data Access and Logging) in Enterprise Library 2.0 and how to use them in your applications.

Dave is a Sarasota-based consultant and a Microsoft MVP in C#. Find his excellent tech blog here:  http://davidhayden.com/blog/dave.

Seems like it is going to be a fairly good meeting. Be sure to attend if you have the time.

4/13/2006 2:49 PM Eastern Daylight Time  #    Disclaimer  |   | 
 Tuesday, April 11, 2006

I just got a note from Scott Spradlin of INETA who informed me of some really great webcasts that INETA is holding in cooperation with Microsoft. This is a really great way to learn about the products from those that actually made them.

 

Some of the sessions are as follows:

  • April 12, Crossbow - Building WPF and Windows Forms hybrid applications
  • April 20, Essential Tips and Tricks for .NET Compact Framework Application Developers
  • April 26, Improving your web application's user experience with Atlas
  • May 4, IIS 7.0 as a development platform
  • May 11, Using Cider to build WPF applications
  • May 17, Using ASP.NET 2.0 and SharePoint together
  • May 23, An Introduction to WinFX AddIns

You can register for these sessions at live.ineta.org. Hope you found this brief note useful.

4/11/2006 11:46 AM Eastern Daylight Time  #    Disclaimer  |   | 
 Wednesday, March 22, 2006

Just a quick note that since Rocky Lhotka has sent his book off to publishing you can now get the source code for the next version of CSLA.Net 2.0 from his website. This is good news for all those using .Net 2.0. I have not yet had the chance to download and inspect it yet, because I am writing this blog post instead! <G>

You can find the code here.

When the book comes available I am sure there will be a much better explaination of how and why we should use this code framework. Enjoy!

3/22/2006 5:42 PM Eastern Daylight Time  #    Disclaimer  |   | 
 Wednesday, February 22, 2006

Recently I have come across some very good resources for those that want to learn the ins and outs of ASP.Net 2.0 but do not have the time to attend a class or learn it on their own. The ASP.Net team has a series of “How do I” tutorials that covers many topics with  more topics on the way.

 

The topics covered are:

Also, there is the ASP.Net webcast series of videos that aid in the transition from PHP, JSP and ColdFusion to ASP.Net 2.0 so if you are coming from a different language altogether this might be the way for you. This can be found here.

 

http://www.learn2asp.net/campaign.aspx

 

Now with those webcasts there is a bonus where you can obtain Visual Studio 2005 standard after watching just three webcasts. What a deal. Now you have no excuse not to learn ASP.Net 2.0.

2/22/2006 11:03 AM Eastern Standard Time  #    Disclaimer  |   | 
 Friday, February 17, 2006

Rapid Module Development for DotNetNuke

 

I came across this really great article by Mark Hoskins on the use of various code generation tools to rapidly build modules for the DotNetNuke platform. Mark does a really great job on explaining how he goes about using these tools to develop his modules in a much shorter time frame.

 

You can read it here.

 

http://dotnet.sys-con.com/read/180968.htm

 

 

2/17/2006 11:50 AM Eastern Standard Time  #    Disclaimer  |   | 
 Thursday, February 16, 2006

Publishing documents on the World Wide Web can seem daunting for the self proclaimed ludites out there. Let's face it HTML, XML, CSS, JavaScript to name just a few of the technologies that you would need to be familiar with in order to develop a truly professional looking website for yourself or your business. Fortunately there is a solution to the problem, it is called a content management system and it is an easier way for just about anyone willing to learn to publish to the Internet.

Some of these content management systems have stemmed from the need of publishing data to the web. CNet for example created one of their own in house content management systems which they later spun off into a separate company called Vignette. Since publishing to the web began to take off in 1995 the development of these systems has really begun to progress. However my focus will be only on open source versions of the web content management systems.

The first open source system that I want to mention is called DotNetNuke (http://www.dotnetnuke.com) which is a AsP.Net based system. By far one of the more popular open source projects out there today DotNetNuke has an avid following of hundreds of thousands of users. The benefits of using this system is the rapid updates to the platform and the intense support you will receive from it community. These are two very important factors when considering an open source system, the level of updates and the support you will receive from its creators or users of the platform. Further the innovations that are built into this system make it one powerful application by any measure. For instance the skinning mechanism is by far one of the easiest to modify and customize and the scheduling processor reduces some of the more mundane tasks of maintaining any website.

However DotNetNuke does not come without any drawbacks. Since this system was eveloped in ASP.Net this means that you will need at least Visual Studio 2003 Professional or greater in order to truly modify the source and customize the system as you see fit. This can be a serious drawback as the cost of this development platform can run into the hundreds of dollars.

The second open source system that I have some experience in using is called AXCMS.Net (http://www.axcms.net) which is again built upon the .Net platform. This system is as feature rich as other open source systems such as DotNetNuke. However, this system has some definite drawbacks. First is its somewhat difficult setup and deployment problems that can seriously hinder any project. Also, there does not seem to be as an avid user base as DotNetNuke. However the system is as "solid" as they get and you will definitely be rewarded by your efforts once you have the system fully setup and ready to use. Also since this system is really a neat way to get introduced to the development team any updates or customizations you may need will be for a fee from the creators of the system. This really hinders the community support of the system and makes adoption that much harder.

There are many other open source systems out there with some more being developed as I write this article. The main factors when adopting any open source content management systems you should consider are: how well is this system supported by the community and how often is this system updated by its core development team. Even an open source system can have some hidden cost that must be considered before adoption into any business or enterprise.

2/16/2006 5:45 PM Eastern Standard Time  #    Disclaimer  |   | 
 Tuesday, February 14, 2006

This is a great blog post by one of the members of the SQL Server team explaining when and where SQL Server 2005 Indexes should be used. The topics covered are:

  1. How can I find out whether my SQL Indexes are useful?
  2. Do I have any tables or indexes that are not uses (or rarely)?
  3. What is the cost to benefit of using indexes in SQL Server 2005?
  4. Do I have hot spots or index contention?
  5. Could I benefit from more or less indexes?

The full blog post can be read here. Again a must read for anyone who wants to gain true performance from their SQL Server.

2/14/2006 7:58 PM Eastern Standard Time  #    Disclaimer  |   | 
 Monday, February 13, 2006

Today I attended a live webcast on DotNetNuke hosted by Stan Schultes and Russ Fustino and the topic of security in the DNN framework came up. I originally was going to post a article on the subject of how to encrypt a connection string in ASP.Net when I came across this resource guide. This lists a series of how to guides on the best practices for both .Net versions. If you have not already done so, you should check it out here.

It can be found here:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/securityhowtosindex.asp

This should answer any question you may have regarding the following subjects:

  • Authentication and Authorization
  • Code Access Security
  • Code Review
  • Communication Security
  • Configuration
  • Cryptography
  • Deployment Review
  • Impersonation and Delegation
  • Input and Data Validation
  • Patching and Upgrading
  • SQL Server 2000
  • Threat Modeling
  • Web Services
  • Etc.

Hopes this helps someone out there who may stumble across my blog looking for information on these subjects. Eventually I hope to write an article about each of these particular areas when I have the time to do so.

 

2/13/2006 5:25 PM Eastern Standard Time  #    Disclaimer  |   | 
 Thursday, January 05, 2006

It can hardly be said that any serious programmer has had to deal with database programming at least some time in their careers. So it would be logical then to make sure your connection to these underlying databases are as efficient as possible. Hopefully I will share some of the best practices I have learned in dealing with ADO.Net programming. These techniques were learned from a variety of sources, many of them I can not remember sorry. Hopefully you will find them equally as useful as I do.

 

Best Practice #1

Always use native .Net data providers.

The reasoning:

It has been proven by using the native .Net data providers always perform better and allow you to take advantage of both the .Net framework and the full power of the underlying database.

 

Best Practice #2

Always use a config file to store your connection strings. Also it might be a good idea to encrypt these connection strings especially if stored in a dubious location.

The Reasoning:

It is always best to store data that might change in a location outside of your application where you can easily update the connection strings. Also encrypting the connection strings is always a good idea from a security standpoint.

 

Best Practice #3

It is always best to use Windows authentication mode when connecting to your SQL Server database, this really applies mostly to Windows Forms applications.

The Reasoning:

Windows authentication is always much safer as the username and password do not pass over the wire.

 

Best Practice #4

Always use an asynchronous delegate when establishing a connection from a Windows Forms application.

The Reasoning:

This will prevent the user interface from seeming to seizing up as the application attempts to connect to the underlying database.

 

Best Practice #5

Prefer to use the sorting methods on the SQL Server such as the ORDER BY, HAVING and GROUP BY statements.

The Reasoning:

By performing the sorting on the server side as opposed to the client side you save time because the server can perform the work faster.

 

Best Practice #6

You should always try to limit the number of rows in a resultset. This can be performed typically by using the TOP keyword or other similar methods.

The Reasoning:

By limiting the amount of information you send through the wire you make the application seem faster and this also allows for a more scaleable design.

 

Best Practice #7

It is always best to use the CommandBehavior.CloseConnection enumerated value when you invoke the ExecuteReader method of a Command object.

The reasoning:

This allows for better connection pooling as the connections that are opened are returned quickly.

 

Best Practice #8

It is always best to cancel before closing a DataReader object if you are finished reading any more rows.

The reasoning:

The close method of the DataReader class continues to read all remaining rows before it finally closes the object. This is a wasteful use of resources.

 

Best Practice #9

It is always best to use a parameterized command over dynamic SQL queries.

The reasoning:

This will improve performance and reduce the a SQL injection attack while also making your code much more easier to maintain.

 

Best Practice #10

It is always best to access tables through views and stored procedures over other methods like dynamic SQL queries.

The reasoning:

The stored procedures and views do not add any overhead to a SQL server while providing some level of indirection which allow you to change the structure of the database table without drastically affecting your client code.

 

Best Practice #11

It is always best to implement some sort of resultset pagination when dealing with results of 50 or more rows.

The reasoning:

Although not an easy task in most cases using this technique you can increase performance on both your server database and your client application as less overhead and network traffic is taking place at any one time.


Best Practice #12

It is always best to close a transaction as quickly as possible.

The reasoning:

When a transaction occurs one or more rows are locked which means other users or applications can not access them. By using as short of a transaction as possible you ensure the scalability and stability of your application.

 

Best Practice #13

Never rely on the default behavior of the DataAdapter object for managing concurrency issues with your database.

The reasoning:

The DataAdapter object relies on the underlying which will leave itself in an inconsistent state if an update occurs, this is because ADO.Net will only throw an exception and not resolve the actual conflict at hand.

 

Best Practice #14

It is usually best to implement a timestamp field when you are using optimistic concurrency.

The reasoning:

This will allow to more easily detect when another user has updated the database.

1/5/2006 7:55 PM Eastern Standard Time  #    Disclaimer  |   |