Browser history 3–trying to Nuget

This is the part 3 of 5 of my implementing of a MVC Browser history

MVC browser history – idea

Browser history –2 – implementing,small bugs

Browser history 3–trying to Nuget – modifications in order to can be transformed from an application to a component

Browser history 4–NuGet again – finally Nuget deployment

Browser history–part 5–conclusions – conclusions

TL;DR : Trying to add a feature (NuGET ) will conduce you to other features – apparently easy to implement – but took 2 hours…

 

Content:

 

First,source control is more important – http://www.joelonsoftware.com/articles/fog0000000043.html .I choose github  – deploy is a breeze with GitHub for windows . More,appharbor integration with github is awesome – you can see the application live at http://browserhistory.apphb.com/ .

 

Now,for generating Nuget package,I should be moving the classes on their own assembly / dll. Also,added this blog to the info. Ensure it works the same. Uploaded to GitHub

image

And appharbor just deployed

image

 

Now,it will be good if I let user switch implementation between memory saving  and database saving… in order to developers( that have installed the dll with  NuGet  ) switch easily to their database.

Created

BrowserUserHistoryRepositorySqlServer

and,after some implementing of IBrowserUserHistoryRepository,the method

public IBrowserUserHistoryRepository FilterByUser(string UserName)

put some problems – but solved with a private variable.

 

Now must decide the best way to switch between MemoryRepository and SqlServerRepository in

public static T AddOrRetrieveFromApplication<T>(HttpApplicationStateBase app)
where T:new()

First,we must retrieve at runtime the instance of the interface – so structuremap to the rescure.

Second,if we need to retrieve a class – must have at least a default constructor.

So the constraint of the T was gone away   – and the code is

T result;

if (typeof(T).IsInterface) {

result =(T) ObjectFactory.GetInstance(type) ;

}

else

{

result = (T)Activator.CreateInstance(type);

}

Also,in global.asax the following lines were added:

//ObjectFactory.Configure(ce => ce.For<IBrowserUserHistoryRepository>().Use<BrowserUserHistoryRepositoryMemory>());             //uncomment those for sql server ce             ObjectFactory.Configure(ce => ce.For<IBrowserUserHistoryRepository>().Use<BrowserUserHistoryRepositorySqlServer>());

Now,when deploy,AppHarbor will NOT found EntityFramework dll.

Added HintPath to csproj to find EF

<HintPath>..\packages\EntityFramework.5.0.0\lib\net40\EntityFramework.dll</HintPath>
as seen at
http://blog.appharbor.com/2012/04/24/automatic-migrations-with-entity-framework-4-3

and it works!

More,it works with sql server AppHarbor addon  and transformation of web.config.

image

 
It took 2 hours to do this thing,apparently simple.
image
Now you can find the code source on github at https://github.com/ignatandrei/MVCbrowserHistory
You can browse the application at http://browserhistory.apphb.com/

Next time: (maybe some tests and ) NuGET!


Posted

in

, , ,

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *