Meeskond:MS-TO

From ICO wiki
Jump to navigationJump to search

MS-TO

Meeskonna liikmed

  • Margus Roo
  • Silja Saar
  • Tõnis Luik
  • Ott Kingisepp

Retsensioonid

  • XML faili kodutöö retsensioon meeskonnale /* Anonüümsed koodikommentaatorid */ [1]


Käesolevas retsensioonis analüüsitakse meeskonna “Anonüümsed koodikommentaatorid” poolt koostatud XML andme-, skeemi- ning transformatsiooni faile.


XML faili teemaks on filmikogu, mis sisaldab loetelu filmidest, koos informatsiooniga nende žanrite, valmimisaasta, sisu ning näitlejate kohta. Samuti sisaldub failis teemakohane pildimaterjal.


XML faili struktuur on loogilise ülesehitusega. Selles leidub XML-andmetele kohustuslik versioonideklaratsioon ning juurelement. Parema loetavuse huvides on kasutatud treppimist. Filmide sisukirjelduste juures on kasutatud CDATA-t, millega on tagatud, et HTML-is võib koodi kasutada muretsemata, et kirjelduse tekstis sisalduvad märgid võiksid XML faili struktuuri hilisemat kasutamist häirida. Koosatud XML fail valideerub.


Skeemifail on koostatud korrektselt, komplekstüüpe on kasutatud otstarbekalt. Lisaks on kasutatud required-elementi, mis viitab sellele, et meeskond on detailidele piisavat rõhku pannud. Samuti on positiivne minOccurs-i / maxOccurs-i kasutamine, mis näitab skeemifaili head läbimõeldust.


Transformatsiooni faile on esitatud kaks – pisut erineva informatsiooni hulga ning rõhuasetusega. Failide ülesehitus on otstarbekas. Kasutatud on css-i. Samatüübiliste andmete korduste jaoks tsükli loomiseks puhul on kasutatud for-each, select käsklust. Meeskonna poolt esitatud transformatsiooni failid annavad XML struktuuriga loodud sisu edukalt edasi.


Kokkuvõtteks: Meeskonna töö tulemusest väljendub, et meeskonna liikmed oskavad XML- ja XSL failidega töötada. Samuti teostada XML formaadilt HTML formaadile üleminekuid ning valdavad XSL võimalusi. Soovituseks niipalju, et ühtlase stiili hoidmiseks tuleks valida kas kasutada elementide nimedena läbivalt eesti- või inglise keelt.


XML andmefail

XML fail

<?xml version="1.0" encoding="UTF-8" ?>

<people xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3schools.com people.xsd">

	<person id="37303140314" age="41" sex="M">
		<fname><![CDATA[Margus]]></fname>
		<lname><![CDATA[Roo]]></lname>
		<email><![CDATA[margus@roo.ee]]></email>
		<phones>
			<phone status="active" number="+3725148780"/>
			<phone status="active" number="+3725148781"/>
			<phone status="unactive" number="+3725148784"/>
		</phones>
	</person>
	<person age="31" sex="M" id="38209064511">	
		<fname><![CDATA[Tõnis]]></fname>
		<lname><![CDATA[Luik]]></lname>
		<email><![CDATA[tonisluik@hotmail.com]]></email>
		<phones>
			<phone status="active" number="+3725148786"/>
			<phone status="active" number="+3725148787"/>
			<phone status="unactive" number="+3725148788"/>
		</phones>
	</person>
	<person age="32" sex="F" id="48209064522">
		<fname><![CDATA[Silja]]></fname>
		<lname><![CDATA[Saar]]></lname>
		<email><![CDATA[silja.saar@live.com]]></email>
		<phones>
			<phone status="active" number="+3725148111"/>
			<phone status="active" number="+3725148222"/>
			<phone status="unactive" number="+3725148333"/>
		</phones>
	</person>
	<person age="32" sex="M" id="38209164533">
		<fname><![CDATA[Ott]]></fname>
		<lname><![CDATA[Kingisepp]]></lname>
		<email><![CDATA[ott.kingisepp@gmail.com]]></email>
		<phones>
			<phone status="active" number="+3725118711"/>
			<phone status="active" number="+3725128722"/>
			<phone status="unactive" number="+3725128733"/>
		</phones>
	</person>
</people>

XML skeemifail

<?xml version = "1.0" encoding = "UTF-8"?>
<xsd:schema xmlns:xsd = "http://www.w3.org/2001/XMLSchema">

  <xsd:element name = "people">
   <xsd:complexType>
    <xsd:sequence>
     <xsd:element ref = "person	" maxOccurs = "unbounded"/>
    </xsd:sequence>
   </xsd:complexType>
  </xsd:element>

<xs:element name="person">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="fname" type="xs:string"/>
      <xs:element name="lname" type="xs:string"/>
      <xs:element name="email" type="xs:string"/>
	  <xs:element name="phone">
  	  	<xs:complexType>
    		<xs:sequence>
      			<xs:element name="number" type="xs:string"/>
    		</xs:sequence>
    		<xs:attribute name="status	" type="xs:string" use="required"/>
  		</xs:complexType>
	</xs:element>
    </xs:sequence>
    <xs:attribute name="id" type="xs:int" use="required"/>
    <xs:attribute name="age" type="xs:int" use="required"/>
    <xs:attribute name="sex" type="xs:string" use="required"/>
  </xs:complexType>
</xs:element>

</xs:schema>

XSLT failid

HTML [2]

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:output method="html"/>
	<xsl:template match="/" >
		<htm>
		<head>
			<title>Persons database</title>
		</head>
		<body>
		<xsl:for-each select="people/person">
			<p><xsl:value-of select="concat(position(),' - ',fname,' ',lname)"/></p>
			<p>ID: <xsl:value-of select="@id"/></p>
			<p>Age: <xsl:value-of select="@age"/></p>
			<p>Sex: <xsl:value-of select="@sex"/></p>
			
			<p>Phones</p>
			<xsl:for-each select="phones/phone">
				<p><xsl:value-of select="@number"/></p>
			</xsl:for-each>
			
			<hr/>
		</xsl:for-each>
		</body>
		</htm>
	</xsl:template>
</xsl:stylesheet>

HTML 2 [3]

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:output method="html"/>
	<xsl:template match="/" >
		<htm>
		<head>
			<title>Persons database</title>
		</head>
		<body>
			<h2> Meesterahvad </h2>
				<table border='1'>
					<tr bgcolor="#BFBFBF">
					  <th>Eesnimi</th>
					  <th>Perenimi</th>
					  <th>Sugu</th> 
					 </tr>
						<xsl:for-each select="/people/person[starts-with(@id, '3')]">
						<xsl:sort select="lname" order="ascending" />
						<tr>
							<td><xsl:value-of select="fname"/></td>
							<td><xsl:value-of select="lname"/></td>
							<td><xsl:value-of select="@sex"/></td>        
						</tr>
				
						</xsl:for-each>
				</table>	
		</body>
		</htm>
	</xsl:template>
</xsl:stylesheet>


Veebiteenuse analüüs

Teenus võimaldab hallata sõidupäeviku andmebaasi. Samuti kontrollib teenus kasutaja õigust teenust kasutada:

  • Kas kasutaja ja tema salasõna ühtivad
  • Hoiab kasutaja tegevuste kohta statistikat
  • Kasutaja tegi ühe CRUD tegevustest

Veebiteenus pakub SOAP tüüpi WSDL kirjeldusfailiga tutvustatud teenuseid, millede kaudu on võimalik pöörduda C# keeles koostatud objektide poole. Objektid pakuvad CRUD meetodeid objektile: Company, User, Car, Usage, BindUserCarCompany, Usage, ServiceUser. Vastavate objektide atribuutid salvestatakse andmebaasi.

Olemid

Company

  • attributes: id, name, created, modified
  • methods: add, modify, delete

Car

  • attributes: id, name, created, modified
  • methods: add, modify, delete

User

  • attributes: id, name, created, modified
  • methods: add, modify, delete

Usage

  • attributes: id, name, created, modified
  • methods: add, modify, delete

BindUserCarCompanyUsage

  • attributes: user, car, company, usage, created, modified
  • methods: add, modify, delete

ServiceUser

Tuleneb nõudest kasutajate halduse ja piirangute haldamisest

  • attributes: id, username, password, maxAllowedAccess, accessCounter, created, modified
  • methods:add, modify, delete

Antud iteratsiooni tulemusena tekib:

  • Kirjeldatud veebiteenuse pöördumispunkt
  • WSDL
  • C# keeles realiseeritud CRUD meetodid olemitele
  • Admebaas olemite atribuutide hoidmiseks

Veebiteenus

http://margus.roo.ee/SPWcfServiceLibrary_final.zip

Siin zipis VS2013 solution. Avada SPWcfServiceLibrary.sln ja panna startup projectiks SPWcfServiceHost. Seejärel panna käima ilma debuggimiseta.

Klientrakendus

http://margus.roo.ee/WebAppForSP_final.zip

Siin on klientrakendus koos admin paneeliga. Tõmmata alla ja käivitada WebAppForSP.sln. Kui on "credentialite" probleeme, siis esmalt teha Teenusele "Update Service Reference" ja seejärel läbida see (https://wiki.itcollege.ee/index.php/Praktikum:_Windows_Communication_Foundation_teenuse_turvamine,_VR2.9 ) juhend.

Projekti dokumentatsioon

Projekti dokumentatsioon [4] sisaldab nii veebiteenuse kui klientrakenduse funktsionaalsuse ja arendusprotsessi kirjeldust ning kasutajajuhendit.