Siêu thị PDFTải ngay đi em, trời tối mất

Thư viện tri thức trực tuyến

Kho tài liệu với 50,000+ tài liệu học thuật

© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Expert C# 2005 Business Objectsn
PREMIUM
Số trang
696
Kích thước
9.1 MB
Định dạng
PDF
Lượt xem
1523

Expert C# 2005 Business Objectsn

Nội dung xem thử

Mô tả chi tiết

Expert C# 2005

Business Objects

Second Edition

Rockford Lhotka

6323_FM_final.qxd 2/27/06 7:07 PM Page i

Expert C# 2005 Business Objects, Second Edition

Copyright © 2006 by Rockford Lhotka

All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means,

electronic or mechanical, including photocopying, recording, or by any information storage or retrieval

system, without the prior written permission of the copyright owner and the publisher.

ISBN-13 (pbk): 978-1-59059-632-6

ISBN-10 (pbk): 1-59059-632-3

Printed and bound in the United States of America 9 8 7 6 5 4 3 2 1

Trademarked names may appear in this book. Rather than use a trademark symbol with every occurrence

of a trademarked name, we use the names only in an editorial fashion and to the benefit of the trademark

owner, with no intention of infringement of the trademark.

Lead Editor: Jonathan Hassell

Technical Reviewers: Dan Billingsley, Brant Estes, Petar Kozul

Editorial Board: Steve Anglin, Dan Appleman, Ewan Buckingham, Gary Cornell, Jason Gilmore,

Jonathan Hassell, James Huddleston, Chris Mills, Matthew Moodie, Dominic Shakeshaft, Jim Sumser,

Matt Wade

Project Manager: Kylie Johnston

Copy Edit Manager: Nicole LeClerc

Copy Editor: Damon Larson

Assistant Production Director: Kari Brooks-Copony

Production Editor: Laura Cheu

Compositor: Linda Weidemann, Wolf Creek Press

Proofreader: Elizabeth Berry

Indexer: John Collin

Artist: Kinetic Publishing Services, LLC

Cover Designer: Kurt Krames

Manufacturing Director: Tom Debolski

Distributed to the book trade worldwide by Springer-Verlag New York, Inc., 233 Spring Street, 6th Floor,

New York, NY 10013. Phone 1-800-SPRINGER, fax 201-348-4505, e-mail [email protected], or

visit http://www.springeronline.com.

For information on translations, please contact Apress directly at 2560 Ninth Street, Suite 219, Berkeley,

CA 94710. Phone 510-549-5930, fax 510-549-5939, e-mail [email protected], or visit http://www.apress.com.

The information in this book is distributed on an “as is” basis, without warranty. Although every precaution

has been taken in the preparation of this work, neither the author(s) nor Apress shall have any liability to

any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly

by the information contained in this work.

The source code for this book is available to readers at http://www.apress.com in the Source Code section.

6323_FM_final.qxd 2/27/06 7:07 PM Page ii

In memory of my Grandmother, Evylyn,

a true angel on earth, who now rests in heaven.

6323_FM_final.qxd 2/27/06 7:07 PM Page iii

6323_FM_final.qxd 2/27/06 7:07 PM Page iv

Contents at a Glance

About the Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv

About the Technical Reviewers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii

Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi

■CHAPTER 1 Distributed Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

■CHAPTER 2 Framework Design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

■CHAPTER 3 Business Framework Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

■CHAPTER 4 Data Access and Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

■CHAPTER 5 Completing the Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235

■CHAPTER 6 Object-Oriented Application Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321

■CHAPTER 7 Using the CSLA .NET Base Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361

■CHAPTER 8 Business Object Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405

■CHAPTER 9 Windows Forms UI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465

■CHAPTER 10 Web Forms UI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513

■CHAPTER 11 Web Services Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563

■CHAPTER 12 Implementing Remote Data Portal Hosts. . . . . . . . . . . . . . . . . . . . . . . . . . . . 601

■INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621

v

6323_FM_final.qxd 2/27/06 7:07 PM Page v

6323_FM_final.qxd 2/27/06 7:07 PM Page vi

Contents

About the Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv

About the Technical Reviewers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii

Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi

■CHAPTER 1 Distributed Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

Logical and Physical Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

Complexity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

Relationship Between Logical and Physical Models . . . . . . . . . . . . . . . . . . . 4

A 5-Layer Logical Architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

Applying the Logical Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

The Way Ahead . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

Managing Business Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

Potential Business Logic Locations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

Business Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

Mobile Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

Architectures and Frameworks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

■CHAPTER 2 Framework Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

Basic Design Goals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

N-Level Undo Capability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

Tracking Broken Business Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

Tracking Whether the Object Has Changed . . . . . . . . . . . . . . . . . . . . . . . . . 41

Strongly Typed Collections of Child Objects . . . . . . . . . . . . . . . . . . . . . . . . . 41

Simple and Abstract Model for the UI Developer . . . . . . . . . . . . . . . . . . . . . 42

Supporting Data Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

Object Persistence and Object-Relational Mapping . . . . . . . . . . . . . . . . . . . 49

Custom Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

Integrated Authorization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

vii

6323_FM_final.qxd 2/27/06 7:07 PM Page vii

Framework Design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

Business Object Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

N-Level Undo Functionality. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

Data Binding Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

Validation Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

Data Portal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

Custom Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

Integrated Authorization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

Helper Types and Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

Namespace Organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

■CHAPTER 3 Business Framework Implementation. . . . . . . . . . . . . . . . . . . . . . . . 91

Setting Up the CSLA .NET Project. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

Creating the Directory Structure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

Supporting Localization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

Csla.Core Namespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

IBusinessObject Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

IUndoableObject Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

IEditableCollection Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

IReadOnlyObject Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

IReadOnlyCollection Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

ICommandObject Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

ObjectCloner Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

BindableBase Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

NotUndoableAttribute Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

UndoableBase Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

BusinessBase Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

ReadOnlyBindingList Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

Csla.Validation Namespace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

RuleHandler Delegate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

RuleArgs Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

RuleMethod Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

ValidationRules Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

BrokenRule Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

BrokenRulesCollection Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

ValidationException . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

Csla.Security Namespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

RolesForProperty Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

AccessType Enum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

AuthorizationRules Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

viii ■CONTENTS

6323_FM_final.qxd 2/27/06 7:07 PM Page viii

Csla Namespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

BusinessBase Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

BusinessListBase Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

ReadOnlyBase Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

ReadOnlyListBase Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

■CHAPTER 4 Data Access and Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

Data Portal Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

Channel Adapter and Message Router Patterns . . . . . . . . . . . . . . . . . . . . . 161

Distributed Transaction Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164

Context and Location Transparency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

Enhancing the Base Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

Factory Methods and Criteria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

Save Methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

Data Portal Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174

Channel Adapter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

Csla.MethodCaller Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

Csla.Server.CallMethodException . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183

Csla.RunLocalAttribute Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184

Csla.DataPortalEventArgs Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184

Csla.DataPortal Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185

Csla.Server.IDataPortalServer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193

Csla.DataPortalClient.IDataPortalProxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194

Csla.DataPortalClient.LocalProxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194

Csla.DataPortalClient.RemotingProxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

Csla.Server.Hosts.RemotingPortal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

Csla.DataPortalClient.EnterpriseServicesProxy. . . . . . . . . . . . . . . . . . . . . . 200

Csla.Server.Hosts.EnterpriseServicesPortal . . . . . . . . . . . . . . . . . . . . . . . . 201

Csla.DataPortalClient.WebServicesProxy . . . . . . . . . . . . . . . . . . . . . . . . . . 206

Csla.Server.Hosts.WebServicePortal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208

Distributed Transaction Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

Csla.TransactionalTypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

Csla.TransactionalAttribute. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

Csla.Server.DataPortal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

Csla.Server.ServicedDataPortal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215

Csla.Server.TransactionalDataPortal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216

Message Router . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

Csla.CriteriaBase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

Csla.Server.SimpleDataPortal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218

■CONTENTS ix

6323_FM_final.qxd 2/27/06 7:07 PM Page ix

Context and Location Transparency. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

Csla.Server.DataPortalContext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225

Csla.Server.DataPortalResult . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228

Csla.Server.DataPortalException . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228

Csla.ApplicationContext. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229

Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

■CHAPTER 5 Completing the Framework. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235

Additional Base Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236

CommandBase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236

NameValueListBase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239

Custom Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243

BusinessPrincipalBase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246

Sorting Collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246

SortedBindingList. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247

Date Handling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262

SmartDate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263

Common Business Rules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273

CommonRules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273

Data Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276

SafeDataReader. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

DataMapper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280

Reporting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285

ObjectAdapter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286

Windows Data Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295

ReadWriteAuthorization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295

BindingSourceRefresh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301

Web Forms Data Binding. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303

CslaDataSource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305

CslaDataSourceView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307

CslaDataSourceDesigner. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310

CslaDesignerDataSourceView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310

ObjectSchema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314

ObjectViewSchema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315

ObjectFieldInfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316

Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

■CHAPTER 6 Object-Oriented Application Design . . . . . . . . . . . . . . . . . . . . . . . . . 321

Application Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322

Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323

x ■CONTENTS

6323_FM_final.qxd 2/27/06 7:07 PM Page x

Object Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326

Initial Design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326

Revising the Design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328

Custom Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339

Using CSLA .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339

Database Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343

Creating the Databases. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344

PTracker Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345

Security Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358

Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359

■CHAPTER 7 Using the CSLA .NET Base Classes . . . . . . . . . . . . . . . . . . . . . . . . . . 361

Business Object Life Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361

Object Creation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362

Object Retrieval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365

Updating Editable Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368

Disposing and Finalizing Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372

Business Class Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374

Common Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374

Class Structures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379

Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402

■CHAPTER 8 Business Object Implementation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405

ProjectTracker Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405

Setting Up the Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406

Business Class Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407

Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408

ProjectResources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429

ProjectResource. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434

Assignment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439

RoleList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442

Resource and Related Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444

ProjectList and ResourceList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446

Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449

Role . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453

Implementing Exists Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455

Custom Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457

PTPrincipal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457

PTIdentity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459

Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462

■CONTENTS xi

6323_FM_final.qxd 2/27/06 7:07 PM Page xi

■CHAPTER 9 Windows Forms UI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465

Interface Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465

User Control Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467

User Control Design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469

Application Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469

PTWin Project Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472

User Control Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472

WinPart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472

MainForm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474

Login Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481

Business Functionality. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482

MainForm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482

RolesEdit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486

Project List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494

Project Edit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497

Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512

■CHAPTER 10 Web Forms UI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513

Web Development and Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513

State Management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515

State on the Web Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516

Transferring State to or from the Client. . . . . . . . . . . . . . . . . . . . . . . . . . . . 518

State in a File or Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

Interface Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521

Application Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523

PTWeb Site Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525

Master Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526

Login Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531

Business Functionality. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537

RolesEdit Form. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538

ProjectList Form. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548

ProjectEdit Form. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552

Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562

■CHAPTER 11 Web Services Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563

Overview of Web Services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564

The SOAP Standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564

Message-Based Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565

SOAP and Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565

SOAP, Web Services, and the .NET Framework. . . . . . . . . . . . . . . . . . . . . . 566

xii ■CONTENTS

6323_FM_final.qxd 2/27/06 7:07 PM Page xii

Web Services and SOA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567

Services vs. Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567

Designing a Web Services Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571

Component-Based vs. Service-Oriented Design . . . . . . . . . . . . . . . . . . . . 571

Grouping Web Methods into Web Services . . . . . . . . . . . . . . . . . . . . . . . . . 572

Returning and Accepting Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573

Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575

Web Service Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576

Application Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576

PTWebService Site Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579

PTService . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580

Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580

Component-Based Web Methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584

Service-Oriented Web Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587

Web Service Consumer Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591

A Simple Smart Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594

Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599

■CHAPTER 12 Implementing Remote Data Portal Hosts. . . . . . . . . . . . . . . . . . . . 601

Data Portal Channel Comparison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602

Factors for Comparison. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602

.NET Remoting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605

Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605

Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609

Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610

Enterprise Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612

Creating the Proxy/Host Assembly. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612

Client Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618

Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619

■INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621

■CONTENTS xiii

6323_FM_final.qxd 2/27/06 7:07 PM Page xiii

6323_FM_final.qxd 2/27/06 7:07 PM Page xiv

Tải ngay đi em, còn do dự, trời tối mất!