<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://agramont.net/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Provware</title><subtitle type="html" /><id>http://agramont.net/blogs/provware/atom.aspx</id><link rel="alternate" type="text/html" href="http://agramont.net/blogs/provware/default.aspx" /><link rel="self" type="application/atom+xml" href="http://agramont.net/blogs/provware/atom.aspx" /><generator uri="http://communityserver.org" version="3.1.20917.1142">Community Server</generator><updated>2006-07-31T13:37:00Z</updated><entry><title>Provware Development Update</title><link rel="alternate" type="text/html" href="http://agramont.net/blogs/provware/archive/2006/08/14/Provware-Development-Update.aspx" /><id>http://agramont.net/blogs/provware/archive/2006/08/14/Provware-Development-Update.aspx</id><published>2006-08-14T04:37:00Z</published><updated>2006-08-14T04:37:00Z</updated><content type="html">&lt;p&gt;It&amp;rsquo;s been a few weeks since I uploaded the first drop of Provware, so I thought I&amp;rsquo;d give everyone an update on what I&amp;rsquo;ve been working on.&amp;nbsp; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;New Features:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Commented all public methods&lt;/li&gt;&lt;li&gt;Documentation is now being built using Sandcastle!&lt;/li&gt;&lt;li&gt;Added to WebServer class: DeleteSite&lt;/li&gt;&lt;li&gt;Added to Site class: Start, Stop, DeleteVirtualDirectory&lt;/li&gt;&lt;li&gt;Increased performance of loading a &amp;ldquo;webServer&amp;rdquo; (when you have lots of sites) by only loading &amp;ldquo;partial&amp;rdquo; information.&amp;nbsp; This will still allow you to bind to a given site by name, but not have to wait a long time for the entire class structure to fully populate.&lt;/li&gt;&lt;li&gt;Tons of work in the Web Portal component.&amp;nbsp; I&amp;rsquo;m making it more of a web based control panel (not focused on a &amp;ldquo;hoster&amp;rdquo; CP, but more of a general Web UI for IIS Management&amp;hellip;but more)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I hope to have the next release out soon.&amp;nbsp; No dedicated date yet, but perhaps faster if I hear some demand.&amp;nbsp; (please&amp;hellip;.demand away!)&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Other features that &amp;ldquo;might&amp;rdquo; make the next build&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Copy Site &amp;ndash; Copy a site from one web server to another.&amp;nbsp; With an option to also move the content (not the permissions just yet)&lt;/li&gt;&lt;li&gt;Backup Web Server metabase - using built in IIS feature, but making the call easier to get to&lt;/li&gt;&lt;li&gt;Enable ASP.NET &amp;ndash; This will allow you to enable,disable ASP.NET 1.1 or 2.0 via a single property change!!!&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://agramont.net/aggbug.aspx?PostID=92" width="1" height="1"&gt;</content><author><name>agramont</name><uri>http://agramont.net/members/agramont.aspx</uri></author><category term="Provware" scheme="http://agramont.net/blogs/provware/archive/tags/Provware/default.aspx" /><category term="Development Update" scheme="http://agramont.net/blogs/provware/archive/tags/Development+Update/default.aspx" /></entry><entry><title>Provware: Getting Started (Build 001)</title><link rel="alternate" type="text/html" href="http://agramont.net/blogs/provware/archive/2006/08/01/Provware_3A00_-Getting-Started-_2800_Build-001_2900_.aspx" /><id>http://agramont.net/blogs/provware/archive/2006/08/01/Provware_3A00_-Getting-Started-_2800_Build-001_2900_.aspx</id><published>2006-08-01T01:02:00Z</published><updated>2006-08-01T01:02:00Z</updated><content type="html">&lt;p&gt;&lt;strong&gt;What&amp;rsquo;s the Provware Framework?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The Provware Framework is an API set built to make the interactions with IIS more intuitive and developer friendly.&amp;nbsp; For instance, the typical way that developers interact with IIS is via the DirectoryServices API of the .NET Framework.&amp;nbsp; This requires a fair amount of knowledge of how to program via ADSI and the IIS Metabase.&amp;nbsp; Since many people are just looking for a way to create sites, virtual directories, and application pools, this can be very difficult.&amp;nbsp; Thus the Provware Framework is born.&amp;nbsp; The Provware Framework provides a simple way to manage IIS components via .NET in a more &amp;ldquo;strongly typed&amp;rdquo; fashion. &lt;/p&gt;&lt;p&gt;There are two core namespaces in the Provware Framework: &lt;strong&gt;Provware.Framework.IIS&lt;/strong&gt; and &lt;strong&gt;Provware.Framework.Web&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Provware.Framework.IIS&lt;/strong&gt;&lt;br /&gt;This namespace provides the core abstraction of the DirectoryEntry object via the Provware Framework.&amp;nbsp; The main class in this namespace is the &amp;ldquo;IISManager&amp;rdquo; class.&amp;nbsp; The IISManager class is responsible for populating a given &amp;ldquo;IIS Class&amp;rdquo;.&lt;/p&gt;&lt;p&gt;The following code example shows how to use the IISManager to populate an IIsWebServer class and then display all of the &amp;ldquo;Server Bindings&amp;rdquo; for the site in the console.&lt;/p&gt;&lt;blockquote dir="ltr" style="margin-right:0px;"&gt;&lt;p&gt;&lt;font color="#0000ff"&gt;IISManager iism = new IISManager();&lt;br /&gt;IIsWebServer myWeb = iism.GetIIsWebServer(&amp;ldquo;IIS://Localhost/w3svc/1&amp;rdquo;);&lt;br /&gt;foreach (string bind in myWeb.ServerBindings)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;Console.WriteLine(bind);&lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;As you can see, binding to the site is pretty much the same via the IISManager as it is with the DirectoryEntry class, but the call to the &amp;ldquo;ServerBindings&amp;rdquo; property is done via a property name of the class and not through a property bag (e.g. DirectoryEntryObject.Properties[&amp;ldquo;ServerBindings&amp;rdquo;]).&amp;nbsp; The advantage of doing it through a property is that you don&amp;rsquo;t have to guess what the write property name actually is or how it behaves (Boolean, Integer, String, or List).&amp;nbsp; The Provware Framework, and the Intellisense Support in Visual Studio, gives you the entire list during coding.&lt;/p&gt;&lt;p&gt;&lt;img src="http://agramont.net/photos/framework/images/73/original.aspx" alt="" width="531" height="245" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Provware.Framework.Web&lt;br /&gt;&lt;/strong&gt;This namespace goes much further in abstracting out the complexities of programming against IIS.&amp;nbsp; The overall goals of this namespace is to think more of IIS as a collection of sites and servers and interact with them as you would any other type of collection.&lt;/p&gt;&lt;p&gt;The main entry point is the &amp;ldquo;WebManager&amp;rdquo; class.&amp;nbsp; It&amp;rsquo;s responsible for first &amp;ldquo;loading&amp;rdquo; the initial metabase objects (ApplicationPools and Sites) in the &amp;ldquo;WebServer&amp;rdquo; class of the framework.&lt;/p&gt;&lt;p&gt;Here are some examples.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Bind to a given Web Server&lt;/strong&gt;&lt;/p&gt;&lt;blockquote dir="ltr" style="margin-right:0px;"&gt;&lt;p&gt;&lt;font color="#0000ff"&gt;WebManager wm = new WebManager();&lt;br /&gt;WebServer iisServer = wm.Connect(&amp;ldquo;Localhost&amp;rdquo;);&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;Add new binding to the Default Site.&lt;/strong&gt;&amp;nbsp; The Site Object is the core object, but all of the properties for this site are found by calling the IIsWebServer property.&amp;nbsp; This will return the IIsWebServer class which is based on the &amp;ldquo;Provware.Framework.IIS&amp;rdquo; namespace.&lt;/p&gt;&lt;blockquote dir="ltr" style="margin-right:0px;"&gt;&lt;p&gt;&lt;font color="#0000ff"&gt;Site defaultSite = iisServer.Sites[&amp;ldquo;Default Website&amp;rdquo;];&lt;br /&gt;defaultSite.IIsWebServer.ServerBindings.Add(&amp;ldquo;:8080:&amp;rdquo;);&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;Create a new site&lt;/strong&gt; &amp;ndash; This call will take in the Site Name (aka ServerComment), initial Binding, content path, boolean if the content path should be created if it doesn&amp;rsquo;t exist.&lt;/p&gt;&lt;blockquote dir="ltr" style="margin-right:0px;"&gt;&lt;p&gt;&lt;font color="#0000ff"&gt;Site newSite = iisServer.CreateSite(&amp;ldquo;MySite&amp;rdquo;, &amp;ldquo;:80:www.mysite.com&amp;rdquo;,&amp;rdquo;C:\\Sites\\mySite\\Content\\Web&amp;rdquo;, true&amp;rdquo;);&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;Get a DataTable of all the Sites for a given IIS Server&lt;/strong&gt; &amp;ndash; With the DataTable, it will make it much easier to display this information in a DataGrid or DataView in ASP.NET or a Windows Forms application.&lt;/p&gt;&lt;blockquote dir="ltr" style="margin-right:0px;"&gt;&lt;p&gt;&lt;font color="#0000ff"&gt;ArrayList returnList = new ArrayList();&lt;br /&gt;returnList.Add(&amp;ldquo;ServerComment&amp;rdquo;);&lt;br /&gt;returnList.Add(&amp;ldquo;ServerState&amp;rdquo;);&lt;br /&gt;returnList.Add(&amp;ldquo;ServerBindings&amp;rdquo;);&lt;br /&gt;DataTable props = iisServer.Sites.GetDataTableDetailed(returnList);&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Since this is the first build, all of the core features, error handling, or documentation are not anywhere complete.&amp;nbsp; I&amp;rsquo;m jazzed to at least have this first build and I&amp;rsquo;m very interested in getting a lot of feedback from my fellow .NET and IIS developer community friends so that I can improve on this class.&amp;nbsp; Performance of the class is a bit slow right now, but it will improve as the builds move forward.&amp;nbsp; I&amp;rsquo;m still bound to the performance issues involved in communicating with the IIS Metabase, but perhaps the benefits of the Provware Framework will make it worth the hit.&lt;/p&gt;&lt;p&gt;I plan on making the source of this project available as well in the near future.&lt;/p&gt;&lt;p&gt;There is a website/portal that comes with the Provware Framework download.&amp;nbsp; It&amp;rsquo;s not currently meant to be anything more than a sample of how to interact with the Framework, but I&amp;rsquo;m thinking of giving it more of a web based IIS Manager MMC/IIS Metabase Explorer type of life.&amp;nbsp; No plans are set in stone yet.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Provware Blog:&lt;/strong&gt; &lt;a href="http://agramont.net/blogs/provware/default.aspx"&gt;http://agramont.net/blogs/provware/default.aspx&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Provware Forums:&lt;/strong&gt; &lt;a href="http://agramont.net/forums/default.aspx?GroupID=11"&gt;http://agramont.net/forums/default.aspx?GroupID=11&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Provware Downloads&lt;/strong&gt;: &lt;a href="http://agramont.net/files/14/default.aspx"&gt;http://agramont.net/files/14/default.aspx&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Bonus Material: Provware IIS Class Builder&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;In developing the Provware.Framework.IIS classes, I needed a way to build a C# class that had all of the same properties of a given IIS Metabase Class (e.g. IIsWebServer).&amp;nbsp; To do this, I wrote a program called the &amp;ldquo;Provware IIS Class Buider&amp;rdquo;.&amp;nbsp; It&amp;rsquo;s goal is to bind to an IIS site, get all of the properties available for a given IIS Metabase Class, and then dynamically build a C# class that contained a public property name (and correctly typed&amp;hellip;string, boolean, Int32, and List) for each IIS Metabase property assigned to that IIS Metabase class type.&amp;nbsp; It was a lot of fun figuring this out.&amp;nbsp;&amp;nbsp; Once I got the mechanics down, it worked for all IIS Metabase&amp;nbsp; classes.&amp;nbsp;&amp;nbsp; Once you have all of the classes &amp;ldquo;built&amp;rdquo;, they are pretty much just empty shells.&amp;nbsp; If you have the desire to leverage this in your project, go for it.&amp;nbsp; These shell classes are a core part of the Provware.Framework.IIS namespace.&lt;br /&gt;The first version of this is available with the source in the below location. &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Forum&lt;/strong&gt;: &lt;a href="http://agramont.net/forums/21/ShowForum.aspx"&gt;http://agramont.net/forums/21/ShowForum.aspx&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Download&lt;/strong&gt;: &lt;a href="http://agramont.net/files/folders/iis_class_builder/entry65.aspx"&gt;http://agramont.net/files/folders/iis_class_builder/entry65.aspx&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://agramont.net/aggbug.aspx?PostID=74" width="1" height="1"&gt;</content><author><name>agramont</name><uri>http://agramont.net/members/agramont.aspx</uri></author><category term="Provware" scheme="http://agramont.net/blogs/provware/archive/tags/Provware/default.aspx" /><category term="IIS" scheme="http://agramont.net/blogs/provware/archive/tags/IIS/default.aspx" /><category term="HowTo" scheme="http://agramont.net/blogs/provware/archive/tags/HowTo/default.aspx" /></entry><entry><title>How To: View Application Pool Identity for an IIS Website</title><link rel="alternate" type="text/html" href="http://agramont.net/blogs/provware/archive/2006/07/31/How-To_3A00_-View-Application-Pool-Identity-for-an-IIS-Website.aspx" /><id>http://agramont.net/blogs/provware/archive/2006/07/31/How-To_3A00_-View-Application-Pool-Identity-for-an-IIS-Website.aspx</id><published>2006-07-31T11:59:00Z</published><updated>2006-07-31T11:59:00Z</updated><content type="html">&lt;p&gt;This example will show you how to create a new website using the &lt;a href="http://agramont.net/files/folders/builds/entry66.aspx"&gt;&lt;font color="#000000"&gt;Provware Framework (Build 001).&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Create a reference pointing to the Provware.Framework.dll assembly. &lt;/li&gt;&lt;li&gt;Add a directive to use the &amp;quot;Provware.Framework.Web&amp;quot; namespace &lt;font size="2" color="#0000ff"&gt;&lt;p&gt;using&lt;font size="2"&gt; Provware.Framework.Web;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;Add the following code to your C# application&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WebManager wm = new WebManager();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Connect to Server&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WebServer ws = wm.Connect(&amp;quot;localhost&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Bind to site by SiteName (Provwware Terminology)/ServerComment&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Site defaultWeb = ws.Sites[&amp;quot;Default Website&amp;quot;];&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Get the Application Pool ID&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string defaultWebPool = defaultWeb.IIsWebServer.AppPoolId;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Bind to the Application Pool Object.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ApplicationPool pool = ws.ApplicationPools[defaultWebPool];&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(pool.IIsApplicationPool.WAMUserName);&lt;/p&gt;&lt;img src="http://agramont.net/aggbug.aspx?PostID=68" width="1" height="1"&gt;</content><author><name>agramont</name><uri>http://agramont.net/members/agramont.aspx</uri></author><category term="Provware" scheme="http://agramont.net/blogs/provware/archive/tags/Provware/default.aspx" /><category term="IIS" scheme="http://agramont.net/blogs/provware/archive/tags/IIS/default.aspx" /><category term="HowTo" scheme="http://agramont.net/blogs/provware/archive/tags/HowTo/default.aspx" /></entry><entry><title>How To: Create a new Website</title><link rel="alternate" type="text/html" href="http://agramont.net/blogs/provware/archive/2006/07/31/How-To_3A00_-Create-a-new-Website.aspx" /><id>http://agramont.net/blogs/provware/archive/2006/07/31/How-To_3A00_-Create-a-new-Website.aspx</id><published>2006-07-31T11:37:00Z</published><updated>2006-07-31T11:37:00Z</updated><content type="html">&lt;p&gt;This example will show you how to create a new website using the &lt;a href="http://agramont.net/files/folders/builds/entry66.aspx"&gt;Provware Framework (Build 001).&lt;/a&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Create a reference pointing to the Provware.Framework.dll assembly.&lt;/li&gt;&lt;li&gt;Add a directive to use the &amp;quot;Provware.Framework.Web&amp;quot; namespace &lt;font size="2" color="#0000ff"&gt;&lt;p&gt;using&lt;font size="2"&gt; Provware.Framework.Web;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;Add the following code to your C# application&lt;/li&gt;&lt;/ol&gt;&lt;font size="2"&gt;&lt;blockquote&gt;&lt;p&gt;WebManager wm = &lt;font size="2" color="#0000ff"&gt;new&lt;/font&gt;&lt;font size="2"&gt; WebManager(); &lt;/font&gt;&lt;/p&gt;WebServer iisServer = wm.Connect(&lt;font size="2" color="#800000"&gt;&amp;quot;localhost&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;);&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt; &lt;p&gt;Site newSite = iisServer.CreateSite(&lt;font size="2" color="#800000"&gt;&amp;quot;My Site&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font size="2" color="#800000"&gt;&amp;quot;:80:www.mySite.com&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font size="2" color="#800000"&gt;&amp;quot;C:\\Sites\\mySite\\Content\\Web&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;true&lt;/font&gt;&lt;font size="2"&gt;);&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;p&gt;&lt;font size="2"&gt;At this point, the site is now created.&amp;nbsp; The &amp;quot;Site&amp;quot; object is part of the Provware Framework.&amp;nbsp; You can now use that object to interact with the site.&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/blockquote&gt;&lt;/font&gt;&lt;img src="http://agramont.net/aggbug.aspx?PostID=67" width="1" height="1"&gt;</content><author><name>agramont</name><uri>http://agramont.net/members/agramont.aspx</uri></author><category term="Provware" scheme="http://agramont.net/blogs/provware/archive/tags/Provware/default.aspx" /><category term="IIS" scheme="http://agramont.net/blogs/provware/archive/tags/IIS/default.aspx" /><category term="HowTo" scheme="http://agramont.net/blogs/provware/archive/tags/HowTo/default.aspx" /></entry></feed>