Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>David did a great job at explaining how you should manage deployment of your library. But besides that you need to make a change in your architecture to support this rather dynamic scenario.</p> <p>First, instead of working with an implementation, your application should work with an interface. Let's assume your library allows you to calculate taxes and that the implementation of this tax calculator changes every few weeks. You don't want to change your application each time for this, and clearly, a WCF service isn't an option for you.</p> <p>Now you could implement it as follows:</p> <ul> <li>Class Library: <strong>TaxCalculator.Contracts</strong> containing the ITaxCalculator interface.</li> <li>Class Library: <strong>TaxCalculator.ImplementationABC</strong> containing the ABCTaxCalculator class which implements the ITaxCalculator interface.</li> <li>Class Library: <strong>TaxCalculator.ImplementationDEF</strong> containing the DEFTaxCalculator class which implements the ITaxCalculator interface (a few weeks later).</li> <li>etc...</li> </ul> <p>Your ASP.NET MVC website would only work with the ITaxCalculator interface. Using <a href="http://msdn.microsoft.com/en-us/library/dd460648.aspx" rel="nofollow">MEF</a> you could scan a folder (LocalResource) for any assembly containing a class which implements the ITaxCalculator interface. As a result you decoupled the web application from the tax calculator library.</p> <p>Like David already explained, you could store the latest version of the library in blob storage and download it locally (in a LocalResource) before loading the assembly with MEF. This way the original application remains unchanged and you'll still be able to make the necessary changes to your library.</p> <p>In order to notify each instance that a new version has been released you have a few options. You could have a timer running that checks for changes in the container, you could use Service Bus Topics (each instance would subscribe to the topic), ... But like David already explained, you'll need to manage the rolling upgrade of the application yourself.</p> <p>The alternative would be to redeploy your application, and instead of having a timer constantly polling for changes in the blob container, you could simply have a startup task that downloads the latest version of the library.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload