Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Large application design (WPF/Silverlight)

Aside from the MVVM, as well as MVC patterns for the overall structure of a WPF app, how exactly do you break up the model/controller aspect of an app into subcomponents? The reason I ask is that I have no problem architecting the solution from the perspective of the patterns mentioned above, but when it comes to actually writing the backend; I feel that i'm fudging a lot of it. I end up with high quality apps from the user perspective, but my design asthetics don't allow me accept this.

To clarify; a lot of my business logic cannot be refactored into a class (or class hierarchy, with all associated interfaces) in any easy or meaningful way without having to change the entire app. I've been developing professionally for a year and a half now, so it may be an issue of inexperience; but I feel that it's still no excuse. Any pointers to this admittedly open ended question?

Edit: code request (in Silverlight)- The following is a -snippet- from a mousebuttonup handler in a drag-drop allocation application that's part of a much larger app-

I just really don't like how blunt the logic is, and hate the way that it's all completely unfactorable, since everything is getting stuffed into event handlers.

       //determine if there is a previously existing allocated sale corresponding to this purchase's ID

                SaleWS allocSaleExisting = colltoaddsale.FirstOrDefault(s => (s.p_TRADEID == allocPurch.TRADEID));


                if (allocSaleExisting != null && allocSale.TRADEID == allocSaleExisting.TRADEID)
                {
                    PurchaseWS allocPurchExisting = colltoadd.First(p => p.TRADEID == allocPurch.TRADEID);

                    //allocPurchExisting.AMOUNT += allocPurch.AMOUNT;
                    allocSaleExisting.AMOUNT += allocSale.AMOUNT;


                    allocPurchExisting.AMOUNT += allocSale.AMOUNT;
                    allocPurch.AMOUNT -= allocSale.AMOUNT;


                    colltoaddsale.Remove(allocSale);


                    //colltoadd.Remove(allocPurch);

                }

                else
                {


                    //Create new "split" item in the data source for the source table
                    PurchaseWS splitAllocPurch = new PurchaseWS { COMMODITY = allocPurch.COMMODITY, CONTRACTNUMBER = allocPurch.CONTRACTNUMBER, AMOUNT = allocPurch.AMOUNT - allocSale.AMOUNT, FORM = allocPurch.FORM, GRADE = allocPurch.GRADE, LOCATION = allocPurch.LOCATION, SHIP_DATE = allocPurch.SHIP_DATE, TRADEID = allocPurch.TRADEID, UNITS = allocPurch.UNITS };

                    //update the source table's selecteditem datacontext with the target allocation id

                    allocPurch.s_TRADEID = allocSale.TRADEID;

                    allocSale.p_TRADEID = allocPurch.TRADEID;

                    allocPurch.AMOUNT = allocSale.AMOUNT;




                    colltoadd.Insert(colltoadd.IndexOf(allocPurch) + 1, splitAllocPurch);







                }


            }
like image 653
Jason Watts Avatar asked Jun 12 '09 19:06

Jason Watts


People also ask

Can I move between Silverlight and WPF and Windows Runtime?

In an active open source project you’re likely to see interested people pick up and add the types of features that make moving between Silverlight, WPF and the Windows Runtime possible. There are a number of MVVM toolkits, for example, which are mostly portable across the different flavors of XAML.

What is companion app in WPF?

Companion AppThis is a simultaneous code-sharing, or cross-compilation, scenario for WPF and Silverlight application developers who want to develop companion Windows Store apps for Windows 8 at the same time.

What is the best toolkit for XAML?

Consider Open Source Toolkits Many of the best XAML/C# toolkits are open source. In an active open source project you’re likely to see interested people pick up and add the types of features that make moving between Silverlight, WPF and the Windows Runtime possible.

What is WinRT XAML for Windows Store apps?

Windows Runtime (WinRT) XAML for new Windows Store apps is the latest member of the XAML and C#/Visual Basic family many of us have come to love. It all officially started in 2006 with the Microsoft .NET Framework 3.0 and “Avalon” (later named Windows Presentation Foundation, or WPF).


1 Answers

Take a look at the Composite Application Guidance from the Patterns and Practices group.

It's geared specifically towards this, including using MVVM for WPF/Silverlight in large scale applications, and how to handle business logic concerns, etc.

like image 174
Reed Copsey Avatar answered Oct 31 '22 13:10

Reed Copsey