<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:georss="http://www.georss.org/georss" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Central Florida Software Blog - General</title>
    <link>http://www.centralflsoftware.com/blog/</link>
    <description>Innovation. Imagination. Delivered.</description>
    <language>en-us</language>
    <copyright>Christopher L Price</copyright>
    <lastBuildDate>Tue, 30 Jun 2009 17:36:31 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>blog@centralflsoftware.com</managingEditor>
    <webMaster>blog@centralflsoftware.com</webMaster>
    <item>
      <trackback:ping>http://www.centralflsoftware.com/blog/Trackback.aspx?guid=585ed6bc-d39d-46ef-ace0-a607d4910fe7</trackback:ping>
      <pingback:server>http://www.centralflsoftware.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.centralflsoftware.com/blog/PermaLink,guid,585ed6bc-d39d-46ef-ace0-a607d4910fe7.aspx</pingback:target>
      <dc:creator>Christopher Price</dc:creator>
      <georss:point>28.171599 -82.001953</georss:point>
      <wfw:comment>http://www.centralflsoftware.com/blog/CommentView,guid,585ed6bc-d39d-46ef-ace0-a607d4910fe7.aspx</wfw:comment>
      <wfw:commentRss>http://www.centralflsoftware.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=585ed6bc-d39d-46ef-ace0-a607d4910fe7</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <strong>What is an application framework?</strong>
        </p>
        <p>
Application Frameworks are collections of libraries (or code) prevalent in many large
IT shops. Frameworks can be expensive to develop properly but the cost is more than
offset by the advantages they provide. Some of these advantages include things like
code quality, promoting code reuse, standardization of tasks and alleviate overhead
that can be common across multiple applications. 
</p>
        <p>
          <strong>Open Source Examples</strong>
        </p>
        <p>
You could spend days on Google and Bing researching the vast number of available options.
We'll save you some time though...The two most prevelant examples in the .Net world
are Spring.NET (<a href="http://www.springframework.net/" target="_blank">http://www.springframework.net/</a>)
and CSLA.NET (<a href="http://www.lhotka.net/Default.aspx" target="_blank">http://www.lhotka.net/Default.aspx</a>).
Both of these examples are truly fantastic, robust, open-source frameworks that are
geared towards large enterprises. So why build our own? 
</p>
        <p>
          <strong>The Rationale for Building Our Own</strong>
        </p>
        <p>
Our experience with frameworks is mixed at best. The advantages frameworks provide
certainly outweigh the cost but even with the examples given above, complexity quickly
becomes an issue. Because these frameworks are geared toward large enterprises and
attempt to be all things to all people they are inheritantly complex. Don't get me
wrong though, complexity in and of itself is not necessarily evil. In the situation
where you are implementing an enterpise framework for a large organization complexity
is a fact of life. We find that in the case of most clients the complexity these frameworks
introduces an element of risk that is not necessary. 
</p>
        <p>
After evaluating the available options and weighing the pros and cons we decided that
instead of trying to fit the proverbial square peg into a round hole, we would use
our experience and expertise to develop an application framework that is more suited
to a small or medium-sized business. 
</p>
        <p>
          <strong>The Enterprise Framework</strong>
        </p>
        <p>
We chose the name Enterprise Framework because although the framework is geared towards
small and medium sized businesses the framework is robust enough to accommodate growth
and has the ability to easily scale to support an enterprise application. In fact,
the major difference between our framework and other commercially available frameworks
is simply scope. The scope of our framework is limited to provide features and functions
that are most commonly used in our client projects (such as Data Access, Security,
Logging, Error Handling, Email, etc). By taking removing the requirement that our
framework accommodate 'everyone' we were able to remove alot of complexity associated
with application frameworks. 
</p>
        <p>
Our framework currently consists of the following modules: 
</p>
        <ul>
          <li>
EnterpriseFramework - The base module that provides common functions such as Data
Access, Security, Logging, Configuration, etc)</li>
          <li>
EnterpriseFramework.BusinessObjects - Specific to each client and is generated from
the client database (Code Generation - Object-relational Mapping)</li>
          <li>
EnterpriseFramework.Services - Provides supports for Web Services (ASMX, WCF)</li>
          <li>
EnterpriseFramework.Web - Provides basically functionality for web application such
as Security, Caching, URL Rewriting, Visitor Tracking, Localization, Globalization,
etc.</li>
          <li>
EnterpriseFramework.Web.Controls - An advanced add-on for the web module that provides
controls and utilities based on the Telerik Ajax Web controls</li>
          <li>
EnterpriseFramework.Windows - A mirror of the web module but geared toward providing
similiar services to a windows application.</li>
        </ul>
        <img width="0" height="0" src="http://www.centralflsoftware.com/blog/aggbug.ashx?id=585ed6bc-d39d-46ef-ace0-a607d4910fe7" />
      </body>
      <title>Why an Enterprise Framework - Part 1</title>
      <guid isPermaLink="false">http://www.centralflsoftware.com/blog/PermaLink,guid,585ed6bc-d39d-46ef-ace0-a607d4910fe7.aspx</guid>
      <link>http://www.centralflsoftware.com/blog/2009/06/30/WhyAnEnterpriseFrameworkPart1.aspx</link>
      <pubDate>Tue, 30 Jun 2009 17:36:31 GMT</pubDate>
      <description>&lt;p&gt;
&lt;strong&gt;What is an application framework?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Application Frameworks are collections of libraries (or code) prevalent in many large
IT shops. Frameworks can be expensive to develop properly but the cost is more than
offset by the advantages they provide. Some of these advantages include things like
code quality, promoting code reuse, standardization of tasks and alleviate overhead
that can be common across multiple applications. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Open Source Examples&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
You could spend days on Google and Bing researching the vast number of available options.
We'll save you some time though...The two most prevelant examples in the .Net world
are Spring.NET (&lt;a href="http://www.springframework.net/" target="_blank"&gt;http://www.springframework.net/&lt;/a&gt;)
and CSLA.NET (&lt;a href="http://www.lhotka.net/Default.aspx" target="_blank"&gt;http://www.lhotka.net/Default.aspx&lt;/a&gt;).
Both of these examples are truly fantastic, robust, open-source frameworks that are
geared towards large enterprises. So why build our own? 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;The Rationale for Building Our Own&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Our experience with frameworks is mixed at best. The advantages frameworks provide
certainly outweigh the cost but even with the examples given above, complexity quickly
becomes an issue. Because these frameworks are geared toward large enterprises and
attempt to be all things to all people they are inheritantly complex. Don't get me
wrong though, complexity in and of itself is not necessarily evil. In the situation
where you are implementing an enterpise framework for a large organization complexity
is a fact of life. We find that in the case of most clients the complexity these frameworks
introduces an element of risk that is not necessary. 
&lt;/p&gt;
&lt;p&gt;
After evaluating the available options and weighing the pros and cons we decided that
instead of trying to fit the proverbial square peg into a round hole, we would use
our experience and expertise to develop an application framework that is more suited
to a small or medium-sized business. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;The Enterprise Framework&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
We chose the name Enterprise Framework because although the framework is geared towards
small and medium sized businesses the framework is robust enough to accommodate growth
and has the ability to easily scale to support an enterprise application. In fact,
the major difference between our framework and other commercially available frameworks
is simply scope. The scope of our framework is limited to provide features and functions
that are most commonly used in our client projects (such as Data Access, Security,
Logging, Error Handling, Email, etc). By taking removing the requirement that our
framework accommodate 'everyone' we were able to remove alot of complexity associated
with application frameworks. 
&lt;/p&gt;
&lt;p&gt;
Our framework currently consists of the following modules: 
&lt;ul&gt;
&lt;li&gt;
EnterpriseFramework - The base module that provides common functions such as Data
Access, Security, Logging, Configuration, etc)&lt;/li&gt;
&lt;li&gt;
EnterpriseFramework.BusinessObjects - Specific to each client and is generated from
the client database (Code Generation - Object-relational Mapping)&lt;/li&gt;
&lt;li&gt;
EnterpriseFramework.Services - Provides supports for Web Services (ASMX, WCF)&lt;/li&gt;
&lt;li&gt;
EnterpriseFramework.Web - Provides basically functionality for web application such
as Security, Caching, URL Rewriting, Visitor Tracking, Localization, Globalization,
etc.&lt;/li&gt;
&lt;li&gt;
EnterpriseFramework.Web.Controls - An advanced add-on for the web module that provides
controls and utilities based on the Telerik Ajax Web controls&lt;/li&gt;
&lt;li&gt;
EnterpriseFramework.Windows - A mirror of the web module but geared toward providing
similiar services to a windows application.&lt;/li&gt;
&lt;/ul&gt;
&gt;
&lt;img width="0" height="0" src="http://www.centralflsoftware.com/blog/aggbug.ashx?id=585ed6bc-d39d-46ef-ace0-a607d4910fe7" /&gt;</description>
      <comments>http://www.centralflsoftware.com/blog/CommentView,guid,585ed6bc-d39d-46ef-ace0-a607d4910fe7.aspx</comments>
      <category>Enterprise Framework</category>
      <category>General</category>
    </item>
    <item>
      <trackback:ping>http://www.centralflsoftware.com/blog/Trackback.aspx?guid=441915b3-dbc7-4b88-b9aa-6f4902e100bb</trackback:ping>
      <pingback:server>http://www.centralflsoftware.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.centralflsoftware.com/blog/PermaLink,guid,441915b3-dbc7-4b88-b9aa-6f4902e100bb.aspx</pingback:target>
      <dc:creator>Christopher Price</dc:creator>
      <georss:point>28.171599 -82.001953</georss:point>
      <wfw:comment>http://www.centralflsoftware.com/blog/CommentView,guid,441915b3-dbc7-4b88-b9aa-6f4902e100bb.aspx</wfw:comment>
      <wfw:commentRss>http://www.centralflsoftware.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=441915b3-dbc7-4b88-b9aa-6f4902e100bb</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">While there are many different ways to
implement web services the two predominate architectural styles are REST (REpresentational
State Transfer) and SOAP (Simple Object Access Protocol). Each style has is own pro's
and con's and it is necessary to objectively balance the appropriateness of each when
selecting the implementation of your next service. So what's the difference at a high
level between the two?<br /><br />
SOAP (WS-*) services are geared toward the enterprise and are inheritently more complex.
For each SOAP service you define a contract using the Web Service Definition Language
(WSDL). This contract specifies precisely the XML request and response messages needed
to interact with the service. The SOAP (WS-*) standards address things like reliability,
transactions and message-based security which are important when dealing with any
value added transactions. Obviously there is a cost for this functionality in terms
of overhead and complexity. 
<br /><br />
If a SOAP service is consider the 'yin', then the REST service would definitely be
the 'yang'. Simple to implement with no contract to define a REST service can be broken
down to four actions: 
<br /><br />
- GET - Gets the Resource<br />
- POST - creates the Resource<br />
- PUT - Updates the Resource<br />
- DELETE - Deletes the Resource<br /><br />
This simplicity means quicker development time, lower overhead although you sacrifice
features. For services that are dealing with non-critical data REST services are definitely
the way to go. 
<br /><br />
So which will you choose? We say let the REST versus SOAP debate rage on.Luckily for
you, you don't have to be caught in the middle. The Microsoft Windows Communications
Foundation (WCF) framework provides you with the flexibility to easily change the
method your service uses to communicate and even allows you to service both REST and
SOAP requests with the same service.<img width="0" height="0" src="http://www.centralflsoftware.com/blog/aggbug.ashx?id=441915b3-dbc7-4b88-b9aa-6f4902e100bb" /></body>
      <title>REST vs. SOAP</title>
      <guid isPermaLink="false">http://www.centralflsoftware.com/blog/PermaLink,guid,441915b3-dbc7-4b88-b9aa-6f4902e100bb.aspx</guid>
      <link>http://www.centralflsoftware.com/blog/2009/06/16/RESTVsSOAP.aspx</link>
      <pubDate>Tue, 16 Jun 2009 13:46:51 GMT</pubDate>
      <description>While there are many different ways to implement web services the two predominate architectural styles are REST (REpresentational State Transfer) and SOAP (Simple Object Access Protocol). Each style has is own pro's and con's and it is necessary to objectively balance the appropriateness of each when selecting the implementation of your next service. So what's the difference at a high level between the two?&lt;br&gt;
&lt;br&gt;
SOAP (WS-*) services are geared toward the enterprise and are inheritently more complex.
For each SOAP service you define a contract using the Web Service Definition Language
(WSDL). This contract specifies precisely the XML request and response messages needed
to interact with the service. The SOAP (WS-*) standards address things like reliability,
transactions and message-based security which are important when dealing with any
value added transactions. Obviously there is a cost for this functionality in terms
of overhead and complexity. 
&lt;br&gt;
&lt;br&gt;
If a SOAP service is consider the 'yin', then the REST service would definitely be
the 'yang'. Simple to implement with no contract to define a REST service can be broken
down to four actions: 
&lt;br&gt;
&lt;br&gt;
- GET - Gets the Resource&lt;br&gt;
- POST - creates the Resource&lt;br&gt;
- PUT - Updates the Resource&lt;br&gt;
- DELETE - Deletes the Resource&lt;br&gt;
&lt;br&gt;
This simplicity means quicker development time, lower overhead although you sacrifice
features. For services that are dealing with non-critical data REST services are definitely
the way to go. 
&lt;br&gt;
&lt;br&gt;
So which will you choose? We say let the REST versus SOAP debate rage on.Luckily for
you, you don't have to be caught in the middle. The Microsoft Windows Communications
Foundation (WCF) framework provides you with the flexibility to easily change the
method your service uses to communicate and even allows you to service both REST and
SOAP requests with the same service.&lt;img width="0" height="0" src="http://www.centralflsoftware.com/blog/aggbug.ashx?id=441915b3-dbc7-4b88-b9aa-6f4902e100bb" /&gt;</description>
      <comments>http://www.centralflsoftware.com/blog/CommentView,guid,441915b3-dbc7-4b88-b9aa-6f4902e100bb.aspx</comments>
      <category>General</category>
      <category>Web Services</category>
    </item>
    <item>
      <trackback:ping>http://www.centralflsoftware.com/blog/Trackback.aspx?guid=df9e4788-be39-4da3-8482-0d1eac8c28ca</trackback:ping>
      <pingback:server>http://www.centralflsoftware.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.centralflsoftware.com/blog/PermaLink,guid,df9e4788-be39-4da3-8482-0d1eac8c28ca.aspx</pingback:target>
      <dc:creator>Christopher Price</dc:creator>
      <georss:point>28.171599 -82.001953</georss:point>
      <wfw:comment>http://www.centralflsoftware.com/blog/CommentView,guid,df9e4788-be39-4da3-8482-0d1eac8c28ca.aspx</wfw:comment>
      <wfw:commentRss>http://www.centralflsoftware.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=df9e4788-be39-4da3-8482-0d1eac8c28ca</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The Central Florida Software Group, Inc. blog is officially up and running.
</p>
        <img width="0" height="0" src="http://www.centralflsoftware.com/blog/aggbug.ashx?id=df9e4788-be39-4da3-8482-0d1eac8c28ca" />
      </body>
      <title>Blog Introduction</title>
      <guid isPermaLink="false">http://www.centralflsoftware.com/blog/PermaLink,guid,df9e4788-be39-4da3-8482-0d1eac8c28ca.aspx</guid>
      <link>http://www.centralflsoftware.com/blog/2009/06/15/BlogIntroduction.aspx</link>
      <pubDate>Mon, 15 Jun 2009 15:37:02 GMT</pubDate>
      <description>&lt;p&gt;
The Central Florida Software Group, Inc. blog is officially up and running.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.centralflsoftware.com/blog/aggbug.ashx?id=df9e4788-be39-4da3-8482-0d1eac8c28ca" /&gt;</description>
      <comments>http://www.centralflsoftware.com/blog/CommentView,guid,df9e4788-be39-4da3-8482-0d1eac8c28ca.aspx</comments>
      <category>General</category>
    </item>
  </channel>
</rss>