Developing SharePoint 2010 and Silverlight web parts
1. Developing SharePoint 2010
and Silverlight Web Parts –
Tips and Tricks
Ovidiu Becheș-Puia
SharePoint Developer
EBS Romania
ovidiu.beches@ebs.ro
@ itcampro # itcamp12 Premium conference on Microsoft technologies
2. Architecture &
ITCamp 2012 sponsors Best Practices
@ itcampro # itcamp12 Premium conference on Microsoft technologies
3. Architecture &
Agenda Best Practices
• SharePoint Developer Tools
• ASP.NET and Silverlight Web Parts
• SPG (SharePoint Pattern&Practices Guidance)
• Unit Testing in SharePoint
• DEMOS
@ itcampro # itcamp12 Premium conference on Microsoft technologies
4. Architecture &
Intro Best Practices
What means to me developing and working with SharePoint ?
@ itcampro # itcamp12 Premium conference on Microsoft technologies
5. Architecture &
Intro Best Practices
@ itcampro # itcamp12 Premium conference on Microsoft technologies
6. The SharePoint Developer Toolbox
TOOLS
@ itcampro # itcamp12 Premium conference on Microsoft technologies
7. Architecture &
TOOLS Best Practices
• SPM 2010
@ itcampro # itcamp12 Premium conference on Microsoft technologies
8. Architecture &
TOOLS Best Practices
• ULS Viewer
@ itcampro # itcamp12 Premium conference on Microsoft technologies
9. Architecture &
TOOLS Best Practices
• .NET Reflector / JustDecompile
@ itcampro # itcamp12 Premium conference on Microsoft technologies
10. Architecture &
TOOLS Best Practices
• Fiddler2 / Firebug
@ itcampro # itcamp12 Premium conference on Microsoft technologies
11. Architecture &
TOOLS Best Practices
• CKS – Community Kit for SharePoint
@ itcampro # itcamp12 Premium conference on Microsoft technologies
12. Architecture &
TOOLS Best Practices
• SPSF – SharePoint Software Factory
@ itcampro # itcamp12 Premium conference on Microsoft technologies
13. Architecture &
TOOLS Best Practices
• Linq to SharePoint DSL Extension for VS2010
@ itcampro # itcamp12 Premium conference on Microsoft technologies
14. Developing ASP.NET and Silverlight WebParts
WEB PARTS
@ itcampro # itcamp12 Premium conference on Microsoft technologies
15. Architecture &
Web Parts Best Practices
@ itcampro # itcamp12 Premium conference on Microsoft technologies
16. Architecture &
Web Parts Best Practices
My GOLDEN RULE (GOAL)
It would be so much easier if we could avoid using
SharePoint server to develop Web Part / anything
The F5 Build/Deploy/Test cycle is slow….
@ itcampro # itcamp12 Premium conference on Microsoft technologies
17. Architecture &
Web Parts Best Practices
When not to use SharePoint:
-if your WebPart does not use SharePoint calls
-use a simple ASP.NET Web Application – test harness
-statically declare WebParts in aspx – so no need to
handle personalisation
The F5 Build/Deploy/Test cycle is slowww..
@ itcampro # itcamp12 Premium conference on Microsoft technologies
18. SharePoint 2010 Pattern & Practices Guidance
SPG
@ itcampro # itcamp12 Premium conference on Microsoft technologies
19. Architecture &
SPG Best Practices
(Coding) Challenges when creating enterprise
applications:
• Testability
– can you isolate your classes
• Flexibility
– Can you update or replace code without
recompiling
• Configuration
– How do you manage configuration settings?
@ itcampro # itcamp12 Premium conference on Microsoft technologies
20. Architecture &
SPG Best Practices
(Coding) Challenges when creating enterprise
applications:
• Logging and exception handling
– How do you log ? Consistent across the team
• Maintainability
- How can you maintain code that is always
evolving
• Can your code run in the Cloud (Office 365)
- Without Full trust proxy
@ itcampro # itcamp12 Premium conference on Microsoft technologies
21. Architecture &
SPG Best Practices
• Main patterns illustrated (with reference
applications in the SPG)
-Service Locator pattern
-MVP pattern (Model-View-Presenter)
-MVVM pattern (Model-View-ViewModel)
-Repository pattern
@ itcampro # itcamp12 Premium conference on Microsoft technologies
22. Architecture &
SPG: Service Locator pattern Best Practices
@ itcampro # itcamp12 Premium conference on Microsoft technologies
23. Architecture &
SPG: Service Locator pattern Best Practices
Mappings add on Farm level
Can be added using only:
-farm feature / CA Web App
-console app
Mappings add on Site Coll. level
Get Service Locator
-Site Collection (if SPContext )
-Farm
@ itcampro # itcamp12 Premium conference on Microsoft technologies
24. Architecture &
SPG:MVP (Model-View-Presenter) Best Practices
-MVP originated in early 1990s
-MVP is a derivative of MVC
-Two types of implementation
– Passive View
– Supervising Controller
-Presenter assumes the functionality of the
MVC controller
-View is responsible for handling UI events
-Model becomes strictly a Domain Model
@ itcampro # itcamp12 Premium conference on Microsoft technologies
26. Architecture &
SPG:M-V-VM Best Practices
• Largely based on MVC
• Specialization of the MVP pattern known as
Presentation Model
• Build specifically for the WPF and Silverlight
• ViewModel is a “Model of the View”
-it extends the Model with Behaviours the View
could use
-Data binding between View and Model
-Passes commands between the View and Model
@ itcampro # itcamp12 Premium conference on Microsoft technologies
27. Architecture &
SPG:M-V-VM Best Practices
@ itcampro # itcamp12 Premium conference on Microsoft technologies
28. Architecture &
SPG:M-V-VM Best Practices
The Model - which provides a view-independent
representation of your business entities
The View - which is the user interface. It displays information
to the user and fires events in response to user interactions
The ViewModel - which is the bridge between the view and the
model.
@ itcampro # itcamp12 Premium conference on Microsoft technologies
29. Architecture &
SPG:M-V-VM Best Practices
How about JavaScript / HTML5?
@ itcampro # itcamp12 Premium conference on Microsoft technologies
30. Architecture &
SPG: Repository Pattern Best Practices
@ itcampro # itcamp12 Premium conference on Microsoft technologies
31. Architecture &
SPG: Repository Pattern Best Practices
Choosing a SharePoint Data Access Technology
@ itcampro # itcamp12 Premium conference on Microsoft technologies
32. Unit Testing in SharePoint World
UNIT TESTS
@ itcampro # itcamp12 Premium conference on Microsoft technologies
33. Architecture &
UNIT TEST Best Practices
Only Integration Tests with MSTest
- Visual Studio 2010 SP1
SPListCollection – internal ctors.
Isolation Frameworks:
-Typemock – not free
-Pex and Moles – free
@ itcampro # itcamp12 Premium conference on Microsoft technologies
34. Architecture &
UNIT TEST Best Practices
Mocking the „Principle of Isolation‟
@ itcampro # itcamp12 Premium conference on Microsoft technologies
35. Architecture &
UNIT TEST Best Practices
TDD and SharePoint
-reducing the cost of change
-in a typical SharePoint project, the portion
where TDD is actually applicable is very small
which is the writing code part Sahil Malik
TDD + SharePoint ? Not worth it IMHO.
@ itcampro # itcamp12 Premium conference on Microsoft technologies
36. Architecture &
UNIT TEST Best Practices
TDD and SharePoint
a typical SharePoint project:
• Customer communication and prototyping
• Plenty of attention to the IT Pro side, where you
decide logical and physical layouts of your servers,
networks, and your site collections
• A significant effort in branding Sahil Malik
• Focus on scalability
• Writing some code
• Establishing roles within your team (overlap with IT
Pro guys)
• Training required
• large portions of XML
@ itcampro # itcamp12 Premium conference on Microsoft technologies
37. Architecture &
UNIT TEST Best Practices
Pex and Moles - Peli de Halleux – Microsoft Research
@ itcampro # itcamp12 Premium conference on Microsoft technologies
38. Vă mulțumesc
Q&A
@ itcampro # itcamp12 Premium conference on Microsoft technologies
39. Architecture &
Conclusions Best Practices
@ itcampro # itcamp12 Premium conference on Microsoft technologies
Hinweis der Redaktion
-class A uses Service A & B – high coupling-can not replace easy, at runtime the Service classes
If a type mapping for a particular interface is defined at both the site collection scope and the farm scope, then the site collection mapping will take precedence. If an SPContextobject is not available—in a timer job, for example—then the GetCurrent() method will return a service locator that loads farm-only type mappings. A second overload, GetCurrent(SPSite), will load type mappings from the specified site collection and merge them with the farm-scoped type mappings. This method overload is useful when an SPContext object is not available but you want to use type mappings defined in a particular site collection.
The Model-View-ViewModel (MVVM) pattern is an application pattern that isolates the user interface from the underlying business logic. MVVM belongs to a class of patterns called Separated Presentation. These patterns provide a clean separation between the UI and the rest of the application. This improves the testability of the application and allows the application and its UI to evolve more easily and independently. The MVVM pattern consists of the following parts:The Model, which provides a view-independent representation of your business entities. The design of the model is optimized for the logical relationships and operations between your business entities, regardless of how the data is presented in the user interface. The View class which is the user interface. It displays information to the user and fires events in response to user interactions. The ViewModel class, which is the bridge between the view and the model. Each View class has a corresponding ViewModel class. The ViewModel retrieves data from the Model and manipulates it into the format required by the View. It notifies the View if the underlying data in the model is changed, and it updates the data in the Model in response to UI events from the View.