Jay Nathan's Weblog
Monday, June 21, 2004
I'm Moving my Weblog
I've gotten my personal web site reestablished and have moved my blog to it. Here is my new RSS feed. The address is http://www.jaynathan.com/blog. I'm going to try to port all of my content from blogger.com to the new blog, but the old stuff isn't going away. I'm now running .Text. Very cool if you are looking to host your own weblog.

Thanks for reading, and I'll see you on the new site!
Friday, June 18, 2004
SharePoint Terminology: Virtual Server
As promised, here's some more SPS terminology:

What is a SharePoint Virtual Server?

A virtual server is, quite simply, an object corresponding to a virtual directory or Web site created under the Web Site node in IIS (for example, http://Web_site_name). In IIS, one virtual server can host one or more SharePoint sites, including portal sites. After you have created a new web site or virtual directory in IIS, there are two ways for SharePoint to extend it:

1. Extend and Create Content Database
Allows you to create an entirely new content database to capture data stored in your WSS sites.

2. Extending and Map to Another Virtual Server
Allows you to map your new virtual server to an existing content database. This is useful for installing clustering your SharePoint implementation across several machines.
New Code Access Security Article
My fellow Charlottean, Maxim Karpov, just published a new article on Code Access Security called Code Access Security (CAS) – "Guilty until proven Innocent" (Partially Trusted Code). I had a chance to review this article after Maxim finished his first draft, and it is packed with some great information. Great work, Max!
Thursday, June 17, 2004
Evolutionary SharePoint
Peter O'Kelly writes about the past, present and future of SharePoint technologies and Microsoft's collaboration and integration strategy moving forward.

Of particular interest is Peter's opinion that "pure-play portal vendors" will be pushed off of the scene by integration of portal and collaborative services into the platform itself as we see with Windows SharePoint Services and Windows Server 2003. Microsoft has the added advantage of owning a large share of the productivity tools market with its Office products which fit well into its overall integration and collaboration strategy.
Wednesday, June 16, 2004
Lutz Roeder's .NET Reflector
You've probably seen this tool in the July 2004 issue of MSDN magazine's ".NET Tools" article, but if you haven't downloaded Lut'z .NET Reflector yet, you are missing out! It is an invaluable time-saver when dealing with questions about best-practices for .NET development. Just reflect on the base class library to see how MS implements stuff within the Framework, and at the very least, you'll have some guidance on how to proceed with your own development issues. Thanks for the great tool, Lutz.
Mono, an open source .NET Framework sponsored by Novell, just released its Beta 3 version. Mono not only implements the base class library of the Common Language Specification, but also implements ASP.NET and ADO.NET. They have some good screen shots of Windows Forms written in C# running on a Linux box. There are ASP.NET modules for Apache and there is another light-weight web server written in C# called XSP. You can create your own web server modules with the System.Web.Hosting namespace. Very cool!
Tuesday, June 15, 2004
Configuring Forms Authentication on an ASP.NET Subdirectory
One of the most common security posts that I've seen in the newsgroups lately asks how Forms Authentication can be configured on a subdirectory using a <location> tag in the web.config file. It is commonplace to have a folder such as "/Admin" within our ASP.NET apps to which only privileged users may browse.

The <authentication> element is not supported in a subdirectory of an application that is not configured as an IIS application, so do not try to add it to the web.config file of the subdirectory. The trick is to use the <location> tag in the root web.config file. The first thing we'll do though, is set up our <authentication> tag for Forms authentication as a normal course of action in our web.config, like this:

<authentication mode="Forms">
<forms loginUrl="login.aspx"/>

<allow users="*" />

This tells our application that we want to allow all users into the root of our application (<authorization> element), and that we want our site to use Forms Authentication. We also specified the login url. Now the only thing left to do is to add the <location> tag to our configuration. Add this below the closing </system.web> tag but before the closing <configuration> tag:

<location path="admin">
<deny users="?"/>

This tells ASP.NET Forms Authentication that we don't want any unauthenticated users entering the "admin" directory.

As opposed to the <authentication> element, the <authorization> element actually can be used by a web.config file in a site subdirectory. Authorization settings in a subdirectory web.config will override those of the root directory's web.config by default (you can disallow overriding from a subdirectory by adding allowOverride="false" to the opening <location> tag for a directory).
Layered Architecture and Web Services
Scott Hanselman recently laid out a wonderful description of what a common layered design should look like.

As developers begin to build software on top of web services, where does the separation between our business layer and data access layer exist? Well, it really depends on what the core functionality of the web services looks like. Some web services simply serve us by retrieving data while others apply supply specific business functionality and logic.

If I utilize a simple data retrieval web service to retrieve information (Amazon.com search service for a nice generic example) I would most likely wrap calls to it into my DAL. To me this is similar to abstracting my software away from any changes that might occur to an underlying database. In today's integrated environment, it is becomming more rare to find an enterprise application that doens't pull and push data to and from multiple data sources. Web services are just another source of data that can be made available to the business layer of an application through a uniform data access layer.

On the other hand, if a web service presents me with data that has already been processed through a logic engine, I might not include this in my DAL, but I would most likely wrap it up under some type of business layer class that gives me the benifit of abstraction.
RS Web Parts - A few more items to clean up
Okay, so I've got a few more items to clean up as far as my Reporting Services Web Parts go. Here's the list:

  1. Bread Crumb Trail - The My Reports folder in RS is a special case that I need to handle within my bread crumb trail control that is a part of the Catalog Browser web part. When that particular folder is selected, the path becomes something like Home --> Users Folders --> MARINER jnathan --> My Reports. Obviously if an underprivilged user clicks either Users Folders or MARINER jnathan we're going to have a problem, so I'm just going to display it like it should be displayed: Home --> My Reports. More on the differences of that folder to other catalog items later.

  2. Cascading parameters - this is not supported in Report Viewer web part when running in stand-alone mode.

  3. Aesthetics of the Report Viewer web part - need to do some general refinement of look and feel under each tab.

  4. Refactoring - This has been the funnest part so far. What I have begun is a back-end overhaul of my code that interacts with RS. I'm unifying the object model a little which means that I'm going to have a nice little Reporting Services library to share when all is said and done, so stay tuned for that if you are interested.

Other than these web parts, I've not had a whole lot to post about, but I do have a bunch of post titles waiting for some content.
Monday, June 14, 2004
New Site Coming up Soon
I just got my new web site set up on WebHost4Life. Couldn't have been simpler, and the feature-set that I get for $9.95 a month is astounding to me after having spent years hosting sites on ****. There are several things that come included with my package that would cost me an arm and a leg with ****, such as SQL Server (150mb) and unlimited sub-domains. This rocks!

Within the next week or so, I'm going to start the process of moving my blog to my site, and the URL will be something like http://blogs.jaynathan.com/jnathan. I'm also going to use the site to post useful .NET code and examples. I'll keep you posted on my progress!

[Update 06-17-04]: Since this entry has been pointed to a couple of times I did want to udpate and add that I did check out my old provider (aka: ****) and their rates have come down a lot since I first started hosting with them, and I though that their customer service was really good. I still like the feature-set of wh4l a little better so far, and the reliability of wh4l remains to be seen for me.
Thursday, June 10, 2004
Reporting Services Web Parts - Screen Shots

Here are a couple of early snapshots at our Reporting Services Web Parts for SharePoint Portal Services. The catalog browser web part allows you to surf through the rs catalog just like you would in report manager. The RS Report Viewer web part can either stand alone or be connected to the catalog browser web part to get information about which report it needs to display. John Welch and I are going to be publishing an article about this technology soon, as well as releasing most of the source.

RS Catalog Browser Web Part

Allows you to browse through an RS catalog.

RS Report Viewer Web Part

Allows you to see all of the details that you normally would about a report.

These web parts are based on a several controls that I have written which can be used outside of SharePoint to integrate Reporting Services into other ASP.NET applications.

Powered by Blogger