Project Status

by alec.whittington 4. September 2011 02:54

It's been a while since I have blogged on anything S#arp Architecture (S#) related. I've been quite busy as of late, but still work with S# everyday and am very much commited to this project. 

Leadership Change

Geoffrey Smith has done a great job to date and is a valuable member of the S# team. He has recently changed jobs and no longer has the he would like to the project. So who will be taking the reins now, me. This project is very dear to my heart and something I would like to see continue on for as long as it is relevant. 

Project Status

This project is very much still alive and kicking. There are a lot of new things going on not only in the .NET world, but outside of it as well. MVC 4, HTML5, CSS3, NodeJS, Javascript Web Applications (think GMail) just to name a few. There has also been some updates to some of the 3rd party dependencies; NHibernate, Castle, MvcContrib, and others.

We are taking the next few weeks to internally discuss what we would like to propose as a road map to the our community. This planning will include information on when 2.0 will be a full release in addition to new features, changes to existing features, and new samples.

Tags: , , ,

Road Map | S#arp Architecture

Sharp Architecture 1.9 released

by alec.whittington 19. December 2010 07:37

It has been quite some time since our last release. This latest release brings upgrades in several dependencies as well as removing of others.

Upgraded

The following dependencies have been upgraded to their latest versions:

Removed

The following have been removed from the project:

  • MvcContrib.Castle -> There were only two classes from this assembly we were using: WindsorExtensions.cs and WindsorControllerFactory.cs. Since the release schedules of many OSS projects do not match up and the fact that the MvcContrib project had already updated their vNext (MVC 3) branch with the castle dependencies and not the MVC 2 branch, it was decided we should bring these two classes in and lose the dependency when it was not needed.
  • Castle.DynamicProxy2 and Castle.MicroKernal -> The assemblies were merged into other assemblies by the Castle project. They are no longer needed
  • NHibernate.Linq -> Since NHibernate 3.0 GA has a new Linq provider, it was no longer needed.

Download it now

We are offering this release in two formats, a Templify package and binaries only. Since the source is readily available, we no longer will be prodiving it in the downloads. If you do not know what Templify is, you can read about it here. If you are going to spin up a new solution, please follow the guide for using Templify below. It will show you how to get the package into your Templify repo. If you are wanting to upgrade a 1.5.x or higher solution, follow the guide to upgrading.

Starting a fresh solution with Templify

If you have not already downloaded and installed Templify, do so now. You can obtain the build from: http://opensource.endjin.com/templify/download.htm

  1. Download the Sharp Architecture 1.9.0.0 Templify package from: https://github.com/downloads/sharparchitecture/Sharp-Architecture/sharp-architecture-1.9.0.0-templify-package.zip
  2. Extract the contents into their own folder
  3. run the copy-package.cmd script
  4. Follow the instructions located here (http://weblogs.asp.net/alecwhittington/archive/2010/10/10/using-templify-to-create-a-new-s-arp-architecture-solution.aspx) to get up and going using Templify.

Upgrading your existing project

These instructions are only good for people using Sharp Architecture 1.5.x or higher.

  1. Download the Sharp Architecture 1.9.0.0 binaries only zip from: https://github.com/downloads/sharparchitecture/Sharp-Architecture/sharp-architecture-1.9.0.0-binaries-only.zip
  2. Extract the contents into their own folder
  3. copy the contents of the folder into your /lib folder
  4. Delete the following from the /lib folder
    • Castle.DynamicProxy2.dll and .xml
    • Castle.MicroKernel.dll and .xml
    • Castle.Services.Logging.Log4netIntegration.xml
    • MvcContrib.Castle.dll and .xml
    • NHibernate.Linq
  5. Open your solution in Visual Studio
  6. Go through each project and remove references to
    • Castle.DynamicProxy2
    • Castle.MicroKernel
    • MvcContrib.Castle
    • NHibernate.Linq
  7. Now you need to update your projects to use the proper version of the updated components. There are several ways to do this, from upgrading each .*proj file manually or by using Visual Studi. I've done it both ways, but prefer to use VS to help out.
    • Using Visual Studio - Open a project that references any of the following: Castle.*, NHibernate.*, MvcContrib.*, Fluent NHibernate, or SharpArch. Right click on the reference and click properties. Once there, set Specific Version = true. This will update the proj file to use the version that is in your /lib folder.
  8. Build the solution to see what errors are there
    • Remove reference to MvcContrib.Castle from your global.asax in the .Web project.
    • [OPTIONAL] Update your component registration to use the newer Castle.Windsor API

Your mileage will vary. If you find any issues with this, please report them on the google group, http://groups.google.com/group/sharp-architecture.

Notables

I would like to point out that we have removed the dependency on MvcContrib.Castle, if you are using anything more than the WindsorExtensions.cs and WindsorControllerFactory.cs, then you will need to implement that functionality yourself or upgrade MvcContrib to the latest dependencies. While we normally do not like to nick code from others, in this case we wanted to upgrade to the latest version of Castle (also required for NHibernate and Fluent Nhibernate) and would have had to make a custom build of MvcContrib to do so properly. The end result is that those two classes now reside within S# and we have one less dependency that has a dependency.

Tags: , , ,

S#arp Architecture | Templify

Sharp Architecture 2.0: How are we going to get there?

by alec.whittington 11. October 2010 06:14

Now that we have published our 2.0 road map, several people have asked us how are we going to get there. Simple, one step at a time.

One step at a time

We have previously blogged about Templify (here and here) being the way we are going to deliver a S#arp Architecture solution. That was step one for us, so you could say that we are already starting to deliver 2.0. Our next steps will be as follows (subject to change)

  1. Create an initial 2.0 release that includes (v1.7.X)
    1. Convert solution and projects to Visual Studio 2010
    2. Convert all projects to .NET 4.0
    3. Reorganize the solution structure for the solution template (moving to a Who Can Help Me based folder structure)
    4. Solution to use new MSBUILD based build system
    5. Package for Templify
    6. Document new Build process
    7. Add documents for Templify
  2. Create next release that includes (v1.8.X)
    1. LINQ Specifications
    2. Component composition
    3. Component registration
    4. Isolate NHibernate
  3. Create the next release (v1.8.5.X)
    1. Support for Castle 2.5
    2. Support for NH 3.0 (whether it is a GA release or not)
    3. Fluent NHiberate compiled against NH 3.0
    4. Support for MVC 3
    5. Change Validation (Data Annotations for UI, NHibernate.Validator for Model)
  4. Create the next release (v1.9.X)
    1. Convert Default Package to use Spark as its default view engine
    2. Add documentation (blogs and wiki) on how to properly setup the Spark environment
    3. Include the new Plugin architecture
    4. Add documentation (blogs and wiki) on the new Plugin architecture
    5. Support for NoRM / MongoDb
    6. Support for Azure
  5. Create the 2.0 release (v2.0.X)
    1. Final bug fixes
    2. Update all documentation
    3. Add samples via Blog posts
    4. Update Northwind
    5. Update Who Can Help Me
    6. Start creation of 3rd sample

All of this is subject to change based on the needs of the community / the team.

Conclusion

As you can see, we have an ambitious schedule a head of us. The team and I are really excited about what we have planned and cannot wait to share it with everyone. Some of it is very exciting, like the Plugin architecture and alternate data store support.

S#arp Architecture 1.6.5 will be the last stable release until 2.0 is released. The interim releases will all be listed as Alphas or Betas and should only be used in production if YOU are comfortable with it. If you are not or need to wait for a stable release, please wait for 2.0. For each release, we will also provide another Templify package. If you want the full source, you can download it from GitHub.

Tags: , , , , ,

Road Map | S#arp Architecture | Templify

Using Templify to create a new S#arp Architecture solution

by alec.whittington 10. October 2010 18:51

Last week Howard van Rooijen blogged about Templify. I am happy to announce that Templify is now the offical way to create a S#arp Architecture solution. Templify comes packaged with a S#arp Architecture package, so there is nothing you need to do, other than install Templify, to get it going. I'll leave the details on how to install and use Templify for Howard's post. This article assumes you have Templify installed already.

Create a new S#arp Architecture solution with Templify.

 

Tags: , , ,

S#arp Architecture | Templify

S#arp Architecture Road Map

by alec.whittington 23. September 2010 18:52

The gang and I thought that it would be very fitting to make the first post on the blog the road map. We hope that this road map will be a conversation starter in the group. We also hope this will give a clearer picture to the end users as to the direction the project is going.

S#arp Architecture 2.0

This release is going to be HUGE! Before we lay out the road map, I want to point out that with the 2.0 release, we have changed our mission statement from "Architectural foundation for building maintainable web applications with ASP.NET MVC" to "Architectural foundation for building maintainable applications". While this seems like a small change, we think it is significant. What does this mean to you, the end user? It means we are going to focus on where we think S# really shines, the service (tasks) layer and below. It also means we are going to have better sample applications that showcase using S# in many different types of applications. While we are going to keep Northwind and Who Can Help Me, we are going to add a third sample, one that is more of a real world sample. More on that later.

GitHub changes

Since GitHub now supports organizations, we've created an organization for S#arp Architecture and moved all the code to it. You can find the new repositories here. One of the first things you will notice is that there are more repositories. The repositories consist of:

  • Sharp-Architecture-Build - Our new common build system for the project
  • Who-Can-Help-Me - The Who Can Help Me sample application
  • Sharp-Architecture - The source code for S#arp Architecture
  • Northwind - The Northwind sample application
  • SharpArch.Futures - Common items we find ourselves adding to our projects
  • Sharp-Architecture-Contrib - The contrib project
We decided the project was growing in size (not only project members, but source code as well) and it was time we separated it out a bit more. Expect future blog posts from Jon George on the SharpArch.Futures project. I believe he is planning a small series on the various pieces.

From now on, all code changes will be done against these repositories. All issues should be logged here as well. We will keep the old issues at the Codai repository, but new ones should go here. 

Road Map

This is our loose list of items on the 2.0 road map. This list is not set in stone, but we are pretty sure it has everything we want / need.

  • New build system based on MSBuild
  • New packaging / deployment system
  • Upgraded dependencies
    • NHibernate 3.0
    • Fluent NHibernate 1.1
    • Castle 2.5
  • Spark as default view engine
  • Norm / MongoDB support
  • Azure support
  • Change validation
    • Data Annotations for UI
    • Nhibernate.Validator for Model
  • BDD specification tests using Machine.Specifications
  • Linq Repository + Linq Specifications ala Who Can Help Me
  • Introduction of a Command pattern
  • Use of MEF to even more loosely couple the layers
  • Create a better plugin architecture
  • Better documentation
  • Upgrade Northwind
  • Upgrade Who Can Help Me
  • Create third sample application
    • Multiple Front ends
      • MS MVC with Spark
      • Silverlight with Caliburn.Micro
      • OpenRasta
    • Based on a real world example
    • Increased complexity over Who Can Help Me
I am not going to talk about all items on that list as some of them are yet to be completely fleshed out. As we get to them, we will blog about them as well as document their usage. One thing is for sure, we are still going to remain opinionated towards MS ASP.NET MVC, NHibernate, and Fluent NHibernate. Our default templates (packages) will still be oriented towards these, but we are going to provide alternate samples via templates and blog posts (Anyone wanna teach me WCF?). You might have noticed that we have two items already crossed off, these are complete or in beta.

Templates - say bye bye

Let's face it, the template system has served us really well, but unfortunately it has been one of our biggest weaknesses. We have taken up the challenge to replace it with something better and we believe we have succeeded! I would like to introduce you to Templify. It will now become our default way of providing templates, err, packages. I am not going to go into too much detail as Howard van Rooijen will be posting more about it soon. I will say, good bye to Visual Studio when you need a new S#arp Architecture solution. This tool will also allow end users to create their own packages as well as share them with others. 

Backwards compatibility

S#arp Architecture 2.0 will not be backwards compatible with previous versions, nor will there be an official upgrade path. There will simply be too many changes that could cause problems for us to support. Sorry, but we do feel it is for the betterment of the community as a whole. If members of the community want to step up and provide documentation for an upgrade procedure, we would not be opposed to this.

That is all for now, but please expect more soon. 

 

Tags: , ,

Road Map | S#arp Architecture

About the Team

Sharp Architecture was originally created by Billy McCafferty.

The project is currently led by Alec Whittington and the development team currently consists of James Broome, Jon George and Howard van Rooijen

Page List