Category: Ikke kategoriseret (Page 9 of 14)
Jeg har gennem tiden skrevet et utal af tilbud baseret på udbudsmateriale, der var mere eller mindre gennemarbejdet.
Desværre har de fleste kravspecifikationer en stor fejl:
- De funktionelle krav har været skrevet i hvordan-form i stedet for hvad-form
Når man skriver kravspecifikation for funktionelle krav, er det en kunstform kun at beskrive det som systemet skal kunne (altså selve forretningskravene) og ikke hvordan systemet forventes at løse disse krav.
Når funktionelle kravspecifikationer er skrevet i hvordan-form giver det store vanskeligheder at udnytte standardsystemer til at løfte krav der dybest set kan håndteres af standardfunktionalitet, fordi der i kravene er indlagt krav til proces og præsentation.
Det bedste i sådan en stituation er at indgå i tæt dialog med kunden og gennem workshops søge at forstå selve hvad-essencen i kravene. Herefter er det så muligt via prototyping at vise hvordan krav kan løftes f.eks. via standardfunktionalitet.
Jeg kalder processen for “Transformation af forretningskrav med fast overfladeareal”. Det handler i virkeligheden bare om at forstå de basale forretningskrav og vise hvordan de kan løftes nemmest via standardfunktionalitet. Jeg har gennemført workshops med dette formål med masser af kunder. Senest med Københavns Universitet, hvor vi fik reduceret omkostningerne til projektet med næsten 25% ved, at løse krav med standardfunktionalitet, i stedet for at kode en løsning der opfyldte de oprindelige krav 100% uden brug af standardfunktionalitet.
Processen kan bruges i alle situationer, hvor der er tale om en løsning, hvor det er muligt at bruge et standardsystem til at løse store dele af forretningskravene.
The Service:
It all starts with a Data Service hosted somewhere:
http://server/service.svc
Basic queries:
You access the Data Service entities through resource sets, like this:
http://server/service.svc/People
You request a specific entity using its key like this:
http://server/service.svc/People(16)
Or by using a reference relationship to something else you know:
http://server/service.svc/People(16)/Mother
This asks for person 16’s mother.
Once you have identified an entity you can refer to it’s properties directly:
http://server/service.svc/People(16)/Mother/Firstname
$value:
But the last query wraps the property value in XML, if you want just the raw property value you append $value to the url like this:
http://server/service.svc/People(16)/Mother/Firstname/$value
$filter:
You can filter resource sets using $filter:
http://server/service.svc/People?$filter=Firstname eq ‘Fred’
Notice that strings in the filter are single quoted.
Numbers need no quotes though:
http://server/service.svc/Posts?$filter=AuthorId eq 1
To filter by date you have identity the date in the filter, like this:
http://server/service.svc/Posts?$filter=CreatedDate eq DateTime’2009-10-31′
You can filter via reference relationships:
http://server/service.svc/People?$filter=Mother/Firstname eq ‘Wendy’
The basic operators you can use in a filter are:
| Operator | Description | C# equivalent |
|
eq |
equals |
== |
|
ne |
not equal |
!= |
|
gt |
greater than |
> |
|
ge |
greater than or equal |
>= |
|
lt |
less than |
< |
|
le |
less than or equal |
<= |
|
and |
and |
&& |
|
or |
or |
|| |
|
() |
grouping |
() |
There are also a series of functions that you can use in your filters if needed.
$expand:
If you want to include related items in the results you use $expand like this:
http://server/service.svc/Blogs?$expand=Posts
This returns the matching Blogs and each Blog’s posts.
$select:
Some Data Services allow you to limit the results to just the properties you require – aka projection – for example if you just want the Id and Title of matching Posts you would need something like this:
http://server/service.svc/Posts?$select=Id,Title
You can even project properties of related objects too, like this:
http://server/service.svc/Posts?$expand=Blog&$select=Id,Title,Blog/Name
This projects just the Id, Title and the Name of the Blog for each Post.
$count:
If you just want to know how many records would be returned, without retrieving them you need $count:
http://server/service.svc/Blogs/$count
Notice that $count becomes one of the segments of the URL – it is not part of the query string – so if you want to combine it with another operation like $filter you have to specify $count first, like this:
http://server/service.svc/Posts/$count?$filter=AuthorId eq 6
This query returns the number of posts authored by person 6.
$orderby:
If you need your results ordered you can use $orderby:
http://server/service.svc/Blogs?$orderby=Name
Which returns the results in ascending order, to do descending order you need:
http://server/service.svc/Blogs?$orderby=Name%20desc
To filter by first by one property and then by another you need:
http://server/service.svc/People?$orderby=Surname,Firstname
Which you can combine with desc if necessary.
$top:
If you want just the first 10 items you use $top like this:
http://server/service.svc/People?$top=10
$skip:
If you are only interested in certain page of date, you need $top and $skip together:
http://server/service.svc/People?$top=10&$skip=20
This tells the Data Service to skip the first 20 matches and return the next 10. Useful if you need to display the 3rd page of results when there are 10 items per page.
Note: It is often a good idea to combine $top & $skip with $orderby too, to guarantee the order results are retrieved from the underlying data source is consistent.
$inlinecount & $skiptoken:
Using $top and $skip allows the client to control paging.
But the server also needs a way to control paging – to minimize workload need to service both naive and malicious clients – the OData protocol supports this via Server Driven Paging.
With Server Driven Paging turned on the client might ask for every record, but they will only be given one page of results.
This as you can imagine can make life a little tricky for client application developers.
If the client needs to know how many results there really are, they can append the $inlinecount option to the query, like this:
http://server/service.svc/People?$inlinecount=allpages
The results will include a total count ‘inline’, and a url generated by the server to get the next page of results.
This generated url includes a $skiptoken, that is the equivalent of a cursor or bookmark, that instructs the server where to resume:
http://server/service.svc/People?$skiptoken=4
$links
Sometime you just need to get the urls for entities related to a particular entity, which is where $links comes in:
http://server/service.svc/Blogs(1)/$links/Posts
This tells the Data Service to return links – aka urls – for all the Posts related to Blog 1.
$metadata
If you need to know what model an OData compliant Data Service exposes, you can do this by going to the root of the service and appending $metadata like this:
http://server/service.svc/$metadata
This should return an EDMX file containing the conceptual model (aka EDM) exposed by the Data Service.
Microsoft har udgivet 10 screencasts der kan bruges som udgangspunkt for at komme i gang med at udvikle løsninger på SharePoint 2010:
Vi har lige netop afleveret materiale til prækvalifikation på et kommende udbud om ny hjemmeside. I materialet bedes leverandørerne beskrive referencer på Intranet og Internet.
På et møde hvor vi kort gik vores referencer igennem var der en person der mente at vi var lidt tynde på referencer på Internet – altså eksterne hjemmesider.
Så var det jeg anførte at de sidste 3 Intranet vi har leveret langt overgår de foregående 3 Internet i kompleksitet og samtidigt er baseret på samme teknologi.
Normalt skelner man mellem tre forskellige typer af web-løsninger:
- Intranet
- Extranet
- Internet
1). Intranet dækker over en løsning der udelukkende kan tilgås af brugere på ”indersiden” af firewallen, dvs. typisk personer der har et ansættelsesforhold til en virksomhed eller organisation.
2). Extranet dækker over en løsning der både kan tilgås af Intranet-brugere samt brugere der kommer udefra som f.eks. samarbejdspartnere eller kunder. En forudsætning for at tilgå et Extranet er oprettelsen af dedikeret brugerkonti og kodeord.
3). Internet dækker over en løsning der kan tilgås af alle uanset forholdet til en virksomhed eller organisation. Et typisk eksempel på en Internet løsning er en hjemmeside for en virksomhed som f.eks. www.traen.com eller for en organisation som www.regionsjaelland.dk.
Traditionelt bruger man mange resourcer på at sikre at grafisk design og layout på en Internet løsning er i overensstemmelse med en virksomheds visuelle identitet. Det er naturligt da hjemmesider for mange virksomheder udgør den primære kommunikationskanal til kunder og brugere. Samtidigt har man traditionelt ikke lagt så meget vægt på grafisk design og layout på Intranet og Extranet løsninger, da det primære fokus var indholdet og funktionaliteten. Indhold skal være målrettet eller personaliseret til den enkelte bruger, så man ikke skal bruge unødig tid på at søge efter indhold.
Over de sidste par år har vi set en forandring, eller rettere en sammensmeltning, af kravene til Intranet, Extranet og Internet. Hvis en virksomhed har en vis størrelse så er det vigtigt at kunne kommunikere vision, mission osv. til medarbejderne mha. den visuelle identitet. Det kræver at man til Intranet nu også skal have fokus på grafisk design og layout – samtidigt med at indholdet skal være målrettet. For Internet er tendensen at indhold til målrettes til den aktuelle bruger, så brugeren ikke skal spilde tid på at finde indhold.
Et moderne Intranet, Extranet og/eller Internet skilles stort set kun af om brugerdatabasen indeholder ansatte eller ej.
Vi har netop leveret et nyt Intranet til et stort universitet i København. Det er en løsning med skarp fokus på visuel identitet og kommunikation (som et Internet), mulighed for adgang for eksterne registrerede brugere (som et ekstranet) samt personaliseret og målrettet indhold til alle baseret på automatiske og personlige indstillinger (som et Intranet).
Fra min stol er der ikke så stor forskel på Intranet og Internet projekter som der har været.
Type in Command prompt:
net use s: \docs.live.net@SSL{CID}
Where {CID} is replaced by your CID on SkyDrive.
10 years ago Enterprise Achitecture (EA) was (among other things) about connecting systems using the Service Oriented Architecture (SOA) pattern.
Building and connecting systems using SOA was hard, most of the vendors has slightly different interpretations of SOA and thus different implementations hereof causing most systems you wanted to connect to require some middleware component that could translate between different dialects of SOA.
Technology itself was in the way, no matter how much EA and SOA you could throw at a problem integrating systems to get that illusive business advantage, you still had to tackle different endpoint implementations, type conversions and mapping between huge XML schemas from this standard to that standard.
ZapThink even published an explanation of the tenets of SOA using Lego bricks to make it easier to understand.
Fast forward 10 years and people are still talking SOA and most public RfPs still cite SOA as a requirement. The main difference is that SOA now just works.
The entire Web2.0 stack is based on SOA using communication between systems based on Web Services. The Cloud may be driving in huge datacenters that reduce the cost for computing, storage and delivery but the fuel is the ability to connect systems across technologies, vendors and data.
Now is the time to finally apply EA to business problems and gain real value.
From basic vector-based drawings to professional three-dimensional graphics built with Live Effects, Ted LoCascio covers the full range of possibilities in Getting Started with Expression Design. He starts by explaining Expression Design’s interface and how to work with documents, then moves on to cover working with objects and applying fills, strokes, and effects for best results. Exercise files accompany this training.
Getting Started with Expression Design – lynda.com Online Training Library®
In Getting Started with Expression Blend , Lee Brimelow covers all the basics that every designer and developer of WPF and Silverlight content needs to know. He starts with an overview of how Expression Blend fits into WPF and Silverlight workflows, then guides viewers through the process of creating and manipulating objects, building timeline-based animations, and exporting compositions into XMAL for use in Visual Studio.
Getting Started with Expression Blend – lynda.com Online Training Library®

