Tải bản đầy đủ (.pdf) (460 trang)

Beginning SharePoint 2013 Development pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (20.94 MB, 460 trang )

www.it-ebooks.info
ffirs.indd iffirs.indd i 19/01/13 11:47 AM19/01/13 11:47 AM
www.it-ebooks.info
BEGINNING
SHAREPOINT® 2013 DEVELOPMENT
INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiii
 PART I GETTING STARTED WITH SHAREPOINT 2013
CHAPTER 1 Introduction to SharePoint 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
CHAPTER 2 Overview of the SharePoint 2013 App Model . . . . . . . . . . . . . . . . . . . . . . 33
CHAPTER 3 Developer Tooling for SharePoint 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
CHAPTER 4 Understanding Your Development Options . . . . . . . . . . . . . . . . . . . . . . . 89
CHAPTER 5 Overview of Windows Azure for SharePoint . . . . . . . . . . . . . . . . . . . . . . . 119
PART II FUNDAMENTAL SHAREPOINT 2013 DEVELOPMENT
BUILDING BLOCKS
CHAPTER 6 Developing, Integrating, and Building Applications
in SharePoint 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
CHAPTER 7 Packaging and Deploying SharePoint 2013 Apps . . . . . . . . . . . . . . . . . 175
CHAPTER 8 Distributing SharePoint 2013 Apps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
CHAPTER 9 Overview of the Client-Side Object Model and REST APIs . . . . . . . . . 219
CHAPTER 10 Overview of OAuth in SharePoint 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . 255
 PART III ADVANCED DEVELOPER TOPICS IN SHAREPOINT 2013
CHAPTER 11 Developing Integrated Apps for O ce
and SharePoint Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
CHAPTER 12 Remote Event Receivers in SharePoint 2013 . . . . . . . . . . . . . . . . . . . . . 307
CHAPTER 13 Building Line-of-Business Solutions Using Business
Connectivity Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
CHAPTER 14 Developing Applications Using O ce Services . . . . . . . . . . . . . . . . . . . 343
CHAPTER 15 Developing Workfl ow Applications for SharePoint 2013 . . . . . . . . . . . 369
APPENDIX A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
ffirs.indd iffirs.indd i 19/01/13 11:47 AM19/01/13 11:47 AM


www.it-ebooks.info
ffirs.indd iiffirs.indd ii 19/01/13 11:47 AM19/01/13 11:47 AM
www.it-ebooks.info
BEGINNING
SharePoint
®
2013 Development
ffirs.indd iiiffirs.indd iii 19/01/13 11:47 AM19/01/13 11:47 AM
www.it-ebooks.info
ffirs.indd ivffirs.indd iv 19/01/13 11:47 AM19/01/13 11:47 AM
www.it-ebooks.info
BEGINNING
SharePoint
®
2013 Development
Steve Fox
Chris Johnson
Donovan Follette
ffirs.indd vffirs.indd v 19/01/13 11:47 AM19/01/13 11:47 AM
www.it-ebooks.info
Beginning SharePoint® 2013 Development
Published by
John Wiley & Sons, Inc.
10475 Crosspoint Boulevard
Indianapolis, IN 46256
www.wiley.com
Copyright © 2013 by John Wiley & Sons, Inc., Indianapolis, Indiana
Published simultaneously in Canada
ISBN: 978-1-118-49584-1
ISBN: 978-1-118-49586-5 (ebk)

ISBN: 978-1-118-65477-4 (ebk)
ISBN: 978-1-118-65487-3 (ebk)
Manufactured in the United States of America
10 9 8 7 6 5 4 3 2 1
No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means,
electronic, mechanical, photocopying, recording, scanning or otherwise, except as permitted under Sections 107 or 108
of the 1976 United States Copyright Act, without either the prior written permission of the Publisher, or authorization
through payment of the appropriate per-copy fee to the Copyright Clearance Center, 222 Rosewood Drive, Danvers,
MA 01923, (978) 750-8400, fax (978) 646-8600. Requests to the Publisher for permission should be addressed to the
Permissions Department, John Wiley & Sons, Inc., 111 River Street, Hoboken, NJ 07030, (201) 748-6011, fax (201)
748-6008, or online at />Limit of Liability/Disclaimer of Warranty: The publisher and the author make no representations or warranties with
respect to the accuracy or completeness of the contents of this work and speci cally disclaim all warranties, including
without limitation warranties of  tness for a particular purpose. No warranty may be created or extended by sales or pro-
motional materials. The advice and strategies contained herein may not be suitable for every situation. This work is sold
with the understanding that the publisher is not engaged in rendering legal, accounting, or other professional services.
If professional assistance is required, the services of a competent professional person should be sought. Neither the pub-
lisher nor the author shall be liable for damages arising herefrom. The fact that an organization or Web site is referred to
in this work as a citation and/or a potential source of further information does not mean that the author or the publisher
endorses the information the organization or Web site may provide or recommendations it may make. Further, readers
should be aware that Internet Web sites listed in this work may have changed or disappeared between when this work was
written and when it is read.
For general information on our other products and services please contact our Customer Care Department within the
United States at (877) 762-2974, outside the United States at (317) 572-3993 or fax (317) 572-4002.
Wiley publishes in a variety of print and electronic formats and by print-on-demand. Some material included with stan-
dard print versions of this book may not be included in e-books or in print-on-demand. If this book refers to media such
as a CD or DVD that is not included in the version you purchased, you may download this material at
http://book-
support.wiley.com
. For more information about Wiley products, visit www.wiley.com.
Library of Congress Control Number: 2012955721

Trademarks: Wiley, the Wiley logo, Wrox, the Wrox logo, Wrox Programmer to Programmer, and related trade dress are
trademarks or registered trademarks of John Wiley & Sons, Inc. and/or its af liates, in the United States and other coun-
tries, and may not be used without written permission. Microsoft and SharePoint are registered trademarks of Microsoft
Corporation. All other trademarks are the property of their respective owners. John Wiley & Sons, Inc., is not associated
with any product or vendor mentioned in this book.
ffirs.indd viffirs.indd vi 19/01/13 11:48 AM19/01/13 11:48 AM
www.it-ebooks.info
For my wife.
—S F
For the delights of my life, Heather, Courtenay, and
Morgan.
—D F
For the loves of my life, Vicki, Sam, and Kate.
—C J
ffirs.indd viiffirs.indd vii 19/01/13 11:48 AM19/01/13 11:48 AM
www.it-ebooks.info
ffirs.indd viiiffirs.indd viii 19/01/13 11:48 AM19/01/13 11:48 AM
www.it-ebooks.info
ABOUT THE AUTHORS
STEVE FOX is a Director in MCS for Microsoft with more than 17 years of IT
experience ranging from natural language to Of ce and SharePoint and most recently
to Windows Azure development. His current focus is enabling the cloud for enterprise
organizations.
DONOVAN FOLLETTE is a Sr. Technical Evangelist for Microsoft with more than
25years of experience designing and building enterprise business applications.
Hiscurrent focus is on developers and helping them wrap their mind around the
all-new cloud app model for Of ce and SharePoint 2013.
CHRIS JOHNSON is an avid developer and a speaker. He is the General Manager
ofProvoke Solutions, Inc. and a Microsoft Gold Partner in Seattle, Washington, that
isone of the world’s most renowned and sought-after online experience consultancies.

Provoke Solutions specializes in software solutions for SharePoint and the Microsoft
technology stack (
). In November 2011, Chris
left Microsoft Corporation after nine and a half years where he most recently was a
Senior Technical Product Manager for the SharePoint product group in Redmond,
Washington, managing SharePoint’s professional developer audience technical marketing programs.
Chris moved to Redmond in 2007 to work on the softwareengineering team on the SharePoint
2010 release after working for Microsoft New Zealand. In New Zealand he consulted for customers
across the Asia Paci c region on designing and implementing Content Management Server and
SharePoint deployments. Chris’s background is in Microsoft software development and he enjoys
all things technical. He is a speaker at numerous conferences around the world such as Tech.Ed,
SharePoint Best Practices Conference, SharePoint Connections, and the worldwide SharePoint
Conference. Chris holds a Bachelor of Computer Science and enjoys throwing himself out of
perfectly good airplanes from time to time. Contact Chris on his blog at
www.looselytyped.net.
ffirs.indd ixffirs.indd ix 19/01/13 11:48 AM19/01/13 11:48 AM
www.it-ebooks.info
ffirs.indd xffirs.indd x 19/01/13 11:48 AM19/01/13 11:48 AM
www.it-ebooks.info
ABOUT THE TECHNICAL EDITOR
ANDREW CONNELL is a developer, author, instructor, and co-founder of Critical
Path Training, a SharePoint education–focused company. He has a background in
content management solutions and Web development that spans back to his time
as a student at the University of Florida in the late 1990s managing class sites.
He has consistently focused on the challenges facing business today to maintain
a current and dynamic online presence without having to rely constantly on Web
developers or have a pro ciency in Web technologies.
Andrew is an eight-time recipient of Microsoft’s Most Valuable Professional
(MVP) award (2005–2012) for Microsoft Content Management Server (MCMS) and Microsoft
SharePoint Server. He has authored and contributed to numerous MCMS and SharePoint books over

the years, including Professional SharePoint 2007 Web Content Management Development
(Wrox, 2008), Inside Microsoft SharePoint 2010 (MSPress, 2011) and (Wrox, 2010), and Real
World SharePoint 2010 (Wrox), among others, and is the author of numerous articles both for the
Microsoft Developer Network (MSDN) and for various magazines.
Andrew has presented at numerous conferences in the United States, Europe, and Australia.
You can  nd Andrew on his blog (
www.andrewconnell.com/blog) or follow him on
Twitter @andrewconnell.
ffirs.indd xiffirs.indd xi 19/01/13 11:48 AM19/01/13 11:48 AM
www.it-ebooks.info
ffirs.indd xiiffirs.indd xii 19/01/13 11:48 AM19/01/13 11:48 AM
www.it-ebooks.info
CREDITS
Acquisitions Editor
Mary James
Project Editor
Victoria Swider
Technical Editor
Andrew Connell
Production Editor
Christine Mugnolo
Copy Editor
Paula Lowell
Editorial Manager
Mary Beth Wakefi eld
Freelancer Editorial Manager
Rosemarie Graham
Associate Director of Marketing
David Mayhew
Marketing Manager

Ashley Zurcher
Business Manager
Amy Knies
Production Manager
Tim Tate
Vice President and Executive Group
Publisher
Richard Swadley
Vice President and Executive Publisher
Neil Edde
Associate Publisher
Jim Minatel
Project Coordinator, Cover
Katie Crocker
Proofreader
Sarah Kaikini, Word One New York
Indexer
Robert Swanson
Cover Designer
Elizabeth Brooks
Cover Image
© Stefano Borsani / iStockphoto
ffirs.indd xiiiffirs.indd xiii 19/01/13 11:48 AM19/01/13 11:48 AM
www.it-ebooks.info
ffirs.indd xivffirs.indd xiv 19/01/13 11:48 AM19/01/13 11:48 AM
www.it-ebooks.info
ACKNOWLEDGMENTS
FIRST, thanks to the acquisitions and editorial staff at Wiley. It’s great to continue to work with such
a good crew of people. Next, thanks to Andrew Connell for helping steer us in the right direction
through technical editing. Also, thanks to Victoria Swider who tirelessly moved us through the

editing and production process. Additionally, thanks to the many Microsoft folks who gave their
time for technical questions and conversations. And last, thanks to you, the developer community.
Without you, this book would not even be possible.
—S F
THANKS to Andrew Connell, technical editor, for providing his technical expertise and insight and
Victoria Swider, project editor, for her patience as the authors juggled busy travel and conference
schedules to  nd time-slices for writing. I would also like to acknowledge my Microsoft colleagues
whom I learned much from as Of ce and SharePoint 2013 were taking shape: Mauricio Ordonez,
Rob Howard, Mike Ammerlaan, Rolando Jimenez Salgado, Gareth Pinto, Stephen Oliver, and
Brady Gaster. You are all a pleasure to work with and greatly respected. And thanks to you, the
reader, My hope is that this book will introduce you to the opportunity for developing a new class
of productivity solutions in the form of Apps for Of ce and SharePoint, and that your solutions,
whether built and provided behind the  rewall or installed from Of ce.com, will  nd their way into
the hands of the all-important end users, whose day will be a bit better because they are using your
software. Enjoy!
—D F
THANKS must go out to our wonderful editors and staff at Wiley for ushering me through my  rst
technical book project. Their patience and  exibility were invaluable given the authors’ hectic day
jobs, speaking engagements, and travel schedules. I know at times it was like herding cats! A huge
debt of gratitude to the one and only Andrew Connell who provided the elite technical air cover
and expertise to keep us all on the straight and narrow and accurate! Thanks to Nick Swan and the
team at Lightning Tools for their insights into real-world SharePoint application metrics. Finally, to
all the folks at Microsoft who assisted with answering questions, providing support, and generally
being really helpful as I wrote this book — Thank you all.
—C J
ffirs.indd xvffirs.indd xv 19/01/13 11:48 AM19/01/13 11:48 AM
www.it-ebooks.info
ffirs.indd xviffirs.indd xvi 19/01/13 11:48 AM19/01/13 11:48 AM
www.it-ebooks.info
CONTENTS

INTRODUCTION xxiii
PART I: GETTING STARTED WITH SHAREPOINT 2013
CHAPTER 1: INTRODUCTION TO SHAREPOINT 2013 3
Getting to Know SharePoint 4
Defi ning SharePoint by Function 5
Defi ning SharePoint by User 5
Introducing the User Interface 6
Introducing the Structure 8
Addressing the Needs of the Developer 9
Extending SharePoint 2013 10
Breaking It Down for Developers 12
SharePoint 2013: The Platform 15
SharePoint Installation Types 16
SharePoint 2013 Capabilities 18
Site Collections and Sites 20
SharePoint 2013 APIs 24
SharePoint Central Administration 26
Application Management 27
Monitoring 28
Security 28
General Application Settings 28
System Settings 28
Backup and Restore 29
Upgrade and Migration 29
Confi guration Wizard 29
Apps 29
Summary 29
Recommended Reading 31
CHAPTER 2: OVERVIEW OF THE SHAREPOINT 2013 APP MODEL 33
SharePoint 2013 App Model 33

Apps for O ce 34
Apps for SharePoint 35
Moving to the Cloud 37
ftoc.indd xviiftoc.indd xvii 19/01/13 11:50 AM19/01/13 11:50 AM
www.it-ebooks.info
xviii
CONTENTS
Understanding the Three Apps for SharePoint Deployment
Models 38
SharePoint-Hosted 38
Autohosted 44
Provider-Hosted 49
Summary 52
Recommended Reading 53
CHAPTER 3: DEVELOPER TOOLING FOR SHAREPOINT 2013 55
SharePoint Development Across Developer Segments 56
Web-Based Development in SharePoint 57
Site Settings 58
Developing SharePoint Applications Using SharePoint
Designer 65
Developing SharePoint Applications Using Napa 69
Developing SharePoint Applications Using Visual Studio 2012 74
Other Tools for SharePoint Development 82
Developing with Expression Blend 83
Debugging Using Fiddler 85
Summary 85
Recommended Reading 87
CHAPTER 4: UNDERSTANDING YOUR DEVELOPMENT OPTIONS 89
Application and Solution Types 90
Common Developer Tasks 93

Creating Web Parts 93
Creating SharePoint-Hosted Apps 101
Working with SharePoint Data 106
Creating Cloud-hosted Apps 109
Creating Event Receivers 109
Creating ASPX Pages 112
Creating Master Pages 114
Summary 116
Recommended Reading 117
CHAPTER 5: OVERVIEW OF WINDOWS AZURE FOR SHAREPOINT 119
Defi ning the Cloud 120
Defi ning Windows Azure 121
ftoc.indd xviiiftoc.indd xviii 19/01/13 11:50 AM19/01/13 11:50 AM
www.it-ebooks.info
xix
CONTENTS
Windows Azure Platform 122
Data Layer 123
Services Layer 123
Integration Layer 123
Developing Windows Azure Applications 124
SharePoint and Windows Azure 133
Understanding SharePoint Cloud-Hosted Apps and Windows Azure 134
Creating a Simple Autohosted SharePoint App 136
Summary 146
Recommended Reading 147
PART II: FUNDAMENTAL SHAREPOINT 2013 DEVELOPMENT
BUILDING BLOCKS
CHAPTER 6: DEVELOPING, INTEGRATING, AND BUILDING
APPLICATIONS IN SHAREPOINT 2013 151

Development Models Available in SharePoint 2013 152
Application Integration Options in SharePoint 2013 153
User Interface Integration 154
Events and Logic Integration 166
Data Integration 168
Summary 171
Recommended Reading 173
CHAPTER 7: PACKAGING AND DEPLOYING
SHAREPOINT 2013 APPS 175
Anatomy of an App 176
Manifest and Assets 178
SharePoint Solution Package 179
Web Deploy Package 180
Database Package 181
Packaging and Publishing an App 182
Packaging an App 182
Private Publishing in an App Catalog 183
Deploying an App 184
SharePoint-Hosted App Deployment 185
Provider-Hosted App Deployment 188
Autohosted App Deployment 196
Summary 199
Recommended Reading 200
ftoc.indd xixftoc.indd xix 19/01/13 11:50 AM19/01/13 11:50 AM
www.it-ebooks.info
xx
CONTENTS
CHAPTER 8: DISTRIBUTING SHAREPOINT 2013 APPS 201
Publishing Apps in the SharePoint Store 203
Creating a Client ID and Secret 204

Pricing and Licensing Apps 206
Submitting Apps 208
Getting Apps Validated 211
Application Life Cycle 212
Using Seller Dashboard Metrics 213
Upgrading Apps 214
Summary 216
Recommended Reading 217
CHAPTER 9: OVERVIEW OF THE CLIENTSIDE
OBJECT MODEL AND REST APIS 219
Introducing Remote APIs in SharePoint 2013 220
Client-Side Object Model (CSOM) Basics 221
Managed Code (.NET) 222
Setup 223
Querying 224
JavaScript 228
Setup 229
Querying 230
Security and Cross-Domain Calls 236
Windows Phone 237
Setup 238
Querying 239
REST and OData 241
Getting Started with REST and OData 242
Filtering and Selecting 244
Creating, Updating, and Deleting 246
Client-Side Object Model API Coverage 250
Summary 252
Recommended Reading 253
CHAPTER 10: OVERVIEW OF OAUTH IN SHAREPOINT 2013 255

Introduction to OAuth 256
OAuth in SharePoint 2013 257
Creating and Managing Application Identities 258
ftoc.indd xxftoc.indd xx 19/01/13 11:50 AM19/01/13 11:50 AM
www.it-ebooks.info
xxi
CONTENTS
Application Authentication 263
App and User Context in API Calls 266
Managing Tokens in Your Application 266
Application Authorization 269
Requesting Permissions Dynamically 271
App-Only Policy 271
On-Premises App Authentication with S2S 272
Summary 275
Recommended Reading 276
PART III: ADVANCED DEVELOPER TOPICS IN SHAREPOINT 2013
CHAPTER 11: DEVELOPING INTEGRATED APPS
FOR OFFICE AND SHAREPOINT SOLUTIONS 279
The New App Model for O ce 280
The O ce JavaScript Object Model 286
Document-based Apps 286
Functional Capabilities by O ce Client 291
Mailbox-based Apps 292
App Security 297
Integrating Apps for O ce with SharePoint 298
Standalone Apps for O ce 299
Apps for O ce Integrated with an App for SharePoint 300
Summary 305
Recommended Reading 306

CHAPTER 12: REMOTE EVENT RECEIVERS IN SHAREPOINT 2013 307
Introducing Remote Event Receivers 308
App-level Life-cycle Remote Event Receivers 318
Summary 319
Recommended Reading 320
CHAPTER 13: BUILDING LINEOFBUSINESS SOLUTIONS USING
BUSINESS CONNECTIVITY SERVICES 321
Business Connectivity Services in SharePoint 2013 322
BCS in Apps for SharePoint 328
Building a BCS-enabled Business Solution 332
Summary 339
Recommended Reading 341
ftoc.indd xxiftoc.indd xxi 19/01/13 11:50 AM19/01/13 11:50 AM
www.it-ebooks.info
xxii
CONTENTS
CHAPTER 14: DEVELOPING APPLICATIONS USING
OFFICE SERVICES 343
WOPI and the New O ce Web Apps Server 344
What’s New in Excel Services 348
Word Automation Services and the New PowerPoint
Automation Services 355
The New Machine Translation Services 359
What’s New in Access Services 362
Summary 366
Recommended Reading 368
CHAPTER 15: DEVELOPING WORKFLOW APPLICATIONS FOR
SHAREPOINT 2013 369
Introducing Workfl ow Manager 370
The Big New Features for SharePoint Designer 371

Visio Professional, SharePoint Designer, and Workfl ow 372
Workfl ow and Visual Studio 383
Workfl ow in Apps for SharePoint 390
Summary 397
Recommended Reading 398
APPENDIX A: ANSWERS TO EXERCISES 399
INDEX 407
ftoc.indd xxiiftoc.indd xxii 19/01/13 11:50 AM19/01/13 11:50 AM
www.it-ebooks.info
INTRODUCTION
SHAREPOINT IS AN AMAZINGLY BROAD collaborative platform; it is used by many people for a range
of collaborative activities such as content management, project management, social networking,
information governance, and so on. In SharePoint 2013 you will  nd some signi cant and evolution-
ary leaps — speci cally the movement toward a cloud-based approach to building and deploying
SharePoint apps. For those of you who are new to SharePoint, this won’t seem like such a radical
evolution — especially those of you who are Web developers today. However, for those of you who
are returning SharePoint enthusiasts, SharePoint 2013 is quite an evolution for how you build and
develop SharePoint applications.
What you’ll learn in this book is that SharePoint 2013 has a lot to offer the developer. You can move
from the small-scale development project where you’re building custom apps such as Web Parts, to
the larger, enterprise-grade solution that leverages cloud-hosted apps and services, and integrates with
other Microsoft and non-Microsoft technologies. This is the incredible part about SharePoint — it is
a platform with huge potential in multiple directions. If you’re a beginning SharePoint developer, you
should strap yourself in, because you’re in for a great ride.
WHO THIS BOOK IS FOR
Simply put, this book is aimed at the developer who is new to SharePoint. The book assumes that
you have some programming experience and a passion to learn how to develop for SharePoint, but
this book does not assume that you’ve programmed against SharePoint before.
With regard to your general development background, the two assumptions in this book are that
you have some familiarity with Web development, and you have an understanding of .NET pro-

gramming. With regard to Web development, this book assumes that you understand HTML, and
you might have an understanding of Cascading Style Sheets (CSS), Extensible Markup Language/
Extensible Stylesheet Language (XML/XSL), and dynamic languages such as JavaScript. You might
also have a light understanding of ASP.NET and are looking to better understand how to leverage
these skills with SharePoint. In any case, you have some understanding of the fundamentals of Web
and .NET development, and are looking to apply that knowledge to the SharePoint space.
As you work throughout this book, your knowledge will certainly grow in the previously mentioned
areas. The authors recommend that you take some time to ensure you’re up to speed on the HTML5
standards and how you can leverage JavaScript as well as the many JQuery libraries that are becom-
ing increasingly important in Web development. Understanding the design concepts behind cloud
computing is also bene cial.
If you are already familiar with SharePoint, then you’re starting from a point of advantage.
For example, you’ll recognize SharePoint artifacts such as lists, document libraries, and of course
you’ll see familiar APIs in the Server Object Model and Client-Side Object Model. However, don’t
flast.indd xxiiiflast.indd xxiii 19/01/13 11:49 AM19/01/13 11:49 AM
www.it-ebooks.info

×