-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdescription.html
223 lines (203 loc) · 13.1 KB
/
description.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head><link rel="stylesheet" type="text/css" href="description/Combined.css,0:HeaderFooterSprite,0:Header.NonMtps,1:LinkList;/Areas/Centers/Themes/StandardDevCenter/Content:0,/Areas/Epx/Themes/Base/Content:1&amp;hashKey=62DBC035A4A8AD76676CA11B61CB6C59" xmlns="http://www.w3.org/1999/xhtml" />
<link type="text/css" rel="stylesheet" xmlns="http://www.w3.org/1999/xhtml" />
<link rel="stylesheet" type="text/css" href="description/5bfd43cc-808d-4397-8478-c2bcd8ea1846Combined.css,0:HeaderFooterSprite,0:Footer.NonMtps,1:LinkList;/Areas/Centers/Themes/StandardDevCenter/Content:0,/Areas/Epx/Themes/Base/Content:1&amp;hashKey=60546B18CCC226DE9D7A404EDD74623E" xmlns="http://www.w3.org/1999/xhtml" />
<link type="text/css" rel="stylesheet" xmlns="http://www.w3.org/1999/xhtml" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Fix It app for Scott Guthrie's Building Real World Cloud Apps with Windows Azure</title>
<link href="description/Galleries.css" type="text/css" rel="Stylesheet" /><link href="description/Layout.css" type="text/css" rel="Stylesheet" /><link href="description/Brand.css" type="text/css" rel="Stylesheet" />
<link href="description/iframedescription.css" rel="Stylesheet" type="text/css" />
<script src="description/offline.js" type="text/javascript"></script>
<style type="text/css">
#projectInfo {
overflow: auto;
}
#longDesc {
clear:both;
margin: 25px 0 10px 0;
}
#SampleIndexList{
margin-left: 15px;
}
</style>
</head>
<body>
<div id="offlineDescription">
<h1>Fix It app for Scott Guthrie's Building Real World Cloud Apps with Windows Azure</h1>
<br/>
<div id="projectInfo">
<div class="section">
<div class="itemBarLong tagsContainer">
<label for="Technologies">Technologies</label>
<div id="Technologies">
C#, ASP.NET, Microsoft Azure, .NET Framework, ASP.NET MVC 4, Windows Azure SQL Database
</div>
</div>
<div class="itemBarLong tagsContainer">
<label for="Topics">Topics</label>
<div id="Topics">
ASP.NET, Microsoft Azure, Web Development, Windows Azure Queues, Windows Azure Web Sites, Windows Azure Cache Service
</div>
</div>
<div class="itemBarLong">
<label for="Platforms">Platforms</label>
<div id="Platforms">
Web, Cloud
</div>
</div>
<div class="itemBarLong">
<label for="Requirements">Requirements</label>
<div id="Requirements">
</div>
</div>
<div class="itemBar">
<label for="LastUpdated">Primary language</label>
<div id="LastUpdated">en-US</div>
</div>
<div class="itemBar">
<label for="LastUpdated">Updated</label>
<div id="LastUpdated">8/22/2014</div>
</div>
<div class="itemBarLong">
<label for="License">License</label>
<div id="License">
<a href="license.rtf">Apache License, Version 2.0</a></div>
</div>
<div class="itemBar">
<div class="viewonlinecont">
<a data-link="online" href="http://code.msdn.microsoft.com/Fix-It-app-for-Building-cdd80df4">View this sample online</a>
</div>
</div>
</div>
</div>
<script type="text/javascript">
function initializePage() {
var otherTabClass = 'otherTab';
var hiddenPreClass = 'hidden';
var htmlDecode = function(encodedData) {
var decodedData = "";
if (encodedData) {
var div = document.createElement('div');
div.innerHTML = encodedData;
decodedData = div.firstChild.nodeValue.replace( /\\r\\n/ig , '\r\n');
}
return decodedData;
};
Galleries.iterateElem(Galleries.findElem(null, 'div', 'scriptcode'), function (index, scriptBlock) {
var titleElem = Galleries.findElem(scriptBlock, 'div', 'title')[0];
var labelElems = Galleries.findElem(titleElem, 'span');
if (labelElems.length == 0) {
labelElems = titleElem;
}
var languageSpans = Galleries.findElem(scriptBlock, 'span', 'hidden');
var pres = Galleries.findElem(scriptBlock, 'pre');
if (languageSpans.length > 0 && pres.length > 1) {
Galleries.iterateElem(labelElems, function(index, elem) {
var codePre = pres[index];
var labelSpan = elem;
var languageSpan = languageSpans[index];
elem.code = codePre.innerHTML.replace( /(\r(\n)?)|((\r)?\n)/ig , '\\r\\n');
codePre.className = codePre.className.replace(hiddenPreClass, '');
languageSpan.parentNode.removeChild(languageSpan);
});
pres = Galleries.findElem(scriptBlock, 'pre');
Galleries.iterateElem(labelElems, function(index, elem) {
var codePre = pres[index];
var labelSpan = elem;
if (index == 0) {
scriptBlock.activeTab = 0;
}
else {
labelSpan.className += otherTabClass;
codePre.className += hiddenPreClass;
}
Galleries.attachEventHandler(labelSpan, 'click', function(e) {
var activeTab = scriptBlock.activeTab;
labelElems[activeTab].className += otherTabClass;
pres[activeTab].className += hiddenPreClass;
codePre.className = codePre.className.replace(hiddenPreClass, '');
labelSpan.className = labelSpan.className.replace(otherTabClass, '');
scriptBlock.activeTab = index;
});
});
var preview = Galleries.findElem(scriptBlock, 'div', 'preview');
if (preview.length == 0) {
preview.push(pres[pres.length - 1]);
}
Galleries.iterateElem(preview, function(index, elem) {
elem.parentNode.removeChild(elem);
});
if (window.clipboardData && clipboardData.setData) {
var copyLink = document.createElement('a');
copyLink.href = 'javascript:void(0);';
copyLink.className = 'copyCode';
copyLink.innerHTML = 'Copy code';
Galleries.attachEventHandler(copyLink, 'click', function (e) {
clipboardData.setData("Text", htmlDecode(labelElems[scriptBlock.activeTab].code));
return false;
});
scriptBlock.insertBefore(copyLink, scriptBlock.childNodes[0]);
}
}
});
}
Galleries.onWindowLoad(function(){
initializePage();
});
</script>
<div id="longDesc">
<h1>Introduction</h1>
<p>This is a Visual Studio project that accompanies the e-book <a href="http://www.asp.net/aspnet/overview/developing-apps-with-windows-azure/building-real-world-cloud-apps-with-windows-azure/introduction">
Building Real-World Cloud Apps with Windows Azure</a>. The code demonstrates best practices for cloud apps as presented in the e-book, such as:</p>
<ul>
<li>Storing automation scripts with code in source control </li><li>Using automation scripts for environment creation and deployment </li><li>Asynchronous programming </li><li>Dependency injection </li><li>Data partitioning </li><li>Blob storage </li><li>Transient fault handling </li><li>Instrumentation </li><li>Queue-centric work pattern </li></ul>
<h1><span>Building the Sample</span></h1>
<p>There are two versions of the app you can run:</p>
<ul>
<li>The base version is designed to run in a Windows Azure Web Site. </li><li>The queues version has a front-end web site and a back-end service. The front-end communicates with the back-end via Windows Azure Storage Queues. The front-end is designed to run in a Windows Azure Web Site, the back-end is designed to run in a Windows
Azure Cloud Service. </li></ul>
<p>The following instructions apply to the base version:</p>
<ol>
<li>Install <a href="http://www.visualstudio.com/en-us/downloads">Visual Studio 2013 or Visual Studio 2013 Express for Web</a>.
</li><li>Install the <a href="http://go.microsoft.com/fwlink/p/?linkid=323510&clcid=0x409">
Windows Azure SDK for .NET for Visual Studio 2013.</a> </li><li>Download the .zip file. </li><li>In File Explorer, right-click the .zip file and click Properties, then in the Properties window click Unblock.
</li><li>Unzip the file. </li><li>Double-click the .sln file to launch Visual Studio. </li><li>From the Tools menu, click Library Package Manager, then Package Manager Console.
</li><li>In the Package Manager Console (PMC), click Restore. </li><li>Exit Visual Studio. </li><li>Start the <a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh403989.aspx">
Windows Azure storage emulator</a>. </li><li>Restart Visual Studio, opening the solution file you closed in the previous step.
</li><li>Make sure the FixIt project is set as the startup project, and then press CTRL+F5 to run the project.
</li></ol>
<p>Instructions that explain how to use the included PowerShell scripts to deploy the application to Windows Azure, and how to run and deploy the queues version of the application, are in
<a href="http://www.asp.net/aspnet/overview/developing-apps-with-windows-azure/building-real-world-cloud-apps-with-windows-azure/the-fix-it-sample-application">
Appendix: The Fix It Sample Application</a>.</p>
<h1>Description</h1>
<p>The sample app is a simple work item ticketing system called “Fix It!” When you need something fixed, you create a ticket and assign it to someone, and others can log in and see the tickets assigned to them and mark tickets as completed
when the work is done.</p>
<p>It’s a standard Visual Studio web project. It is built on ASP.NET MVC and uses a SQL Server database. It can run locally in IIS Express and can be deployed to a Windows Azure Web Site to run in the cloud. For the queues version, the back-end
code that processes the queue messages is deployed to a worker role in a Windows Azure Cloud Service.</p>
<p><img id="104147" src="description/image001.png" alt="" width="631" height="582"></p>
<p>You can log in using forms authentication and a local database or by using a social provider such as Google.</p>
<p><img id="104148" src="description/image002.png" alt="" width="632" height="463"></p>
<p>Once you’re logged in you can create a ticket, assign it to someone, and upload a picture of what you want to get fixed.</p>
<p><img id="104150" src="description/image004.png" alt="" width="619" height="577"></p>
<p><img id="104151" src="description/image005.png" alt="" width="621" height="575"></p>
<p>You can track the progress of work items you created.</p>
<p><img id="104152" src="description/image006.png" alt="" width="621" height="368"></p>
<p>You can see tickets that are assigned to you and select one to see the details.</p>
<p><img id="104153" src="description/image007.png" alt="" width="620" height="309"></p>
<p><img id="104154" src="description/image008.png" alt="" width="621" height="744"></p>
<p> </p>
<h1>Source Code Folders</h1>
<ul>
<li>Automation - PowerShell scripts for environment creation and deployment. </li><li>MyFixIt - The Web project. </li><li>MyFixIt.Logging - Instrumentation code (logging interface and implementation).
</li><li>MyFixIt.Persistence - Code for handling storage and retrieval of Tasks and their image files.
</li><li>MyFixIt.Tests - Unit tests. </li><li>MyFixIt.WorkerRole - Worker role project, used for queues version of the app only.
</li><li>MyFixIt.CloudService - Windows Azure Cloud Service deployment project, used for queues version of the app only.
</li><li>packages - NuGet packages. </li></ul>
<h1>More Information</h1>
<p>For more information, see <a href="http://www.asp.net/aspnet/overview/developing-apps-with-windows-azure/building-real-world-cloud-apps-with-windows-azure/introduction">
Building Real-World Cloud Apps with Windows Azure</a>.</p>
</div>
</div>
</body>
</html>