Categories
.NET C# Entity Framework WPF

Understanding HB Code – Line of business application for WPF – Part I

 

HB Code – Line of business application for WPF

MVVM Architechture Overview

This project is made available as open-source and hosted freely on www.codeplex.com.

Prerequisites

  • Object-oriented programming using C#.NET and LINQ.
  • Nuget package usage.
  • Basic knowledge of WPF application building such as input controls, container controls, triggers, styles, templates.
  • Entity Framework, currently knowing any of versions of Entity Framework will work to check the working sample.
  • Sql Server 2005 database configuration and Sql queries.

Built

Technologies: .NET 4.0, WPF, Entity Framework 4.3 Code First,

Control toolkits: Avalon Dock, Avalon Dock MVVM, WPF Toolkit, WPF Extended toolkit, Microsoft Ribbon for WPF

Tools: Visual Studio Professional 2010, Sql Server 2005 Express, Entity Framework Power tools extension, Nuget Package Manager.

Please note: Current implementation is kept intentionally strongly typed to keep it easy to understand and reduce development time at initial stage.

Solution Projects Overview

  • HBCode Application (View)

This is the main entry point of the application. In this part, we have all the WPF and UI specific code implementations. It basically contains the WPF resources, WPF converters, Extended User Controls, Images, Application and Database Configurations, and Views (UserControls) used in the application.

  • HBCode Business Logic (Model)

This project contains all the business modules, business logic validation, and database connectivity, property change notifications implementations. Currently it uses Entity Framework 4.3 Code First with migrations to connect with the database. The Entity Framework 4.3 building blocks such as Database Context, Models, and Migration classes exist in this project.

  • HBCode Presentation (ViewModel)

This project contains the middle-tier ViewModel classes. View Model contains Collection of models, single models and sometimes aggregate properties for display purposes. The UserControls aka View are Databound to ViewModels containing model instances. ViewModels are built considering the UI layout and requirements. Such as if we consider a Sales billing UI will be containing Item list in grid and there will be one ComboBox column to display items to select from, so to Databound the Combobox we could either List<ItemModel> property in ViewModel at top-level or we can implement List<ItemModel> per row instance in List<ItemSaleModel> which would be bound to grid.

This project is made available as open-source and hosted freely on www.codeplex.com. You can download the source from www.hbcode.codeplex.com.

 

Categories
.NET ASP.NET C# Winforms WPF

Getting started with Multifile assembly

What is Multi-file assembly?

It is an application assembly either web-based or desktop-based which spans across many files to support extensibility and dynamically adding new features.

What is Modules?

Modules means class files such as Program.cs or frmMain.cs, in context of assemblies.

Usage of Multi-file assembly

  • Using different modules written in different .NET based programming languages such as C#.NET and VB.NET .
  • To optimize an application by putting less used types in a module that is loaded only as when needed or required i.e Lazy-loading assemblies.
  • Reduce application start-up by loading only required assemblies at start-up and then load less used assemblies in background thread or parallel Task-based threads.
  • Extend the application features by implementing plugin-based architecture, like we have in Orchard CMS and NopCommerce for web-based applications and in StockTrader application for desktop-based applications.
  • We can incrementally release application features or fix a bug & release a patch without completely recompiling the main assembly or application.
  • For multi-language applications releasing new languages support via custom language module packages.

Conceptual example of Multi-file assembly

For example, you have an e-commerce web application at hand which supports online booking goods & payments also, you currently have an account in PayPal so you create a main package containing Payment related interfaces and then reference it back to main application and in package which will be containing the actually concrete classes for PayPal implementation. And then plan and release new packages with more payment gateways such as Authorize.NET at later stage. This is a working example and implemented in NopCommerce web application.
PS: I will come with a demonstration application for building real plugin-based applications in my future posts.

Advantages of Multi-file assembly

  • Desktop Application with plug & play architectures are benefited.
  • Change of application behavior or add more services at later stage in spiral SDLC model.
  • More number of developers can work concurrently on larger projects independently on assigned modules.
  • Supports agile application development approach.
  • Complex projects can be built easily by Separation Of Concerns.

Disadvantages of Multi-file assembly

  • Increases development time as developers need to write without being aware of the main application and needs to communicate with various teams while integrating as a whole.
  • Small-scale projects do not get its benefit as it would increase cost of development and time both.

Detailed steps to create and use multi-file assemblies can be found at AspAlliance.com article here and you can download sample from AspAlliance.com MultifileAssembly.zip

I would like if you would share your thoughts on this topic with me.

Thanks.

 

Related Articles & links:

Importing multiple extension assemblies in C# with MEF
Building a Multifile Assembly on MSDN
Managed Extensibility Framework

Categories
.NET Setup

Installing .NET 3.5 service pack 1 along with application setup

Many of us would have been creating setups for applications either using WinForms or WPF and other such, but we really ignore the fact that users might not have all the prerequisites that our application requires to work.

Possibilities for that might be one or more as below:

  1. User do have .NET framework even installed.
  2. Users .NET framework installation is older or newer but not the required one.
  3. For example, user have .NET framework version 3.5 but not 3.5 SP1
  4. You have disabled to check .NET framework exists before application installs so application will not start all after installation, so users frusts and uninstalls your application.
  5. You have enabled to check and install .NET framework along with your application online, but you have ignored the fact that user might have no internet access on their system.
So what could we do for this ?
Solution is to include the .NET framework standalone setup installation in your application setup.
And steps to install the .NET framework 3.5 with the application are as follows:

Step 1 – Download the combined installation package for the .NET Framework 3.5 from Microsoft download site dotnetfx35.exe.
Folder view

 

Step 2 – After downloading this package, you have to extract the contents by running dotnetfx35.exe /x and it will prompt you with a location to extract the contents to a path.

Command prompt

 

Step 3 – Copy the contents of files and folder from {extracted path}\WCU\dotNetFramework to C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFX35SP1
please note that to change ‘Program Files’ to ‘Program Files (x86)’ in above path if working on 64-bit system.

 

Step 4 – If you wish to get rid of the build warnings, you can update your PublicKey in the Product.XML with the following value: 3082010A0282010100A2DB0A8DCFC2C1499BCDAA3A34AD23596BDB6CBE2122B794C8EAAEBFC6D526C232118BBCDA5D2CFB36561E152BAE8F0DDD14A36E284C7F163F41AC8D40B146880DD98194AD9706D05744765CEAF1FC0EE27F74A333CB74E5EFE361A17E03B745FFD53E12D5B0CA5E0DD07BF2B7130DFC606A2885758CB7ADBC85E817B490BEF516B6625DED11DF3AEE215B8BAF8073C345E3958977609BE7AD77C1378D33142F13DB62C9AE1AA94F9867ADD420393071E08D6746E2C61CF40D5074412FE805246A216B49B092C4B239C742A56D5C184AAB8FD78E833E780A47D8A4B28423C3E2F27B66B14A74BD26414B9C6114604E30C882F3D00B707CEE554D77D2085576810203010001
Use this for both of the XPSEPSC* files.
Product.xml is located in ‘DotNetFX35SP1’ directory itself

 

Step 5 – In Visual Studio 2010, right-click on Setup project > Properties -> Prerequisites -> Select .NET Framework 3.5 SP1 > Below select the option “Download the prerequisites from the same location as my application” > Save changes

 

Step 6 – And last step is to rebuild the setup project and Test.

 

Reference links: