Semantic web support for asp.net - asp.net

I'm doing a project and asp.net is one of my possible choices (the other one being php). I need to implement some semantic functionality to improve searches.
I know some php frameworks support semantics but i want to know if asp.net has any[The most used] tool (3rd party or built in) that will also support this.
I've been reading more about this subject and i think what i'm really looking for is tools in order to deliver more accurate results to user searches by not only matching word but its meanings.
I'm sorry if the semantic web term caused confusion but my guide teacher called it like that

You should look into dotNetRDF and ARC PHP.
Other good resources
Executive’s Quick Start Guide to Web 3.0 and the Semantic Web
RDF Primer
Wikipedia: Semantic Web
RDFa Primer
That last one is about the recommended way to markup HTML with semantic meaning. Improving your search results to include meaning can be done a number of ways and may or may not include using the semantic web technology stack per se. Perhaps you only mean adding tags to blogs, or faceted searching such as that provided by SOLR. You may need to clarify what kind of searching you want to do.

As others have said you need to clarify what you want to do, while you have clarified your question a little it is still not clear whether you actually need a full Semantic Web technology stack.
Your project may be completely doable without any Semantic Web tech just using standard text indexing systems like Lucene and SOLR. I'm fairly sure both of these are available in .Net, I'm not a PHP developer myself so not sure if there are usable PHP equivalents.
If you need a full Semantic Web technology stack then either of the options harschware has suggested are good (disclaimer - I develop dotNetRDF). Whether they actually do what you need them to do depends on what parts of the Semantic Web technology stack you need. Both have good RDF and SPARQL support but minimal OWL support.

"Semantic Web" just means using the appropriate html tags for their defined (semantic) purpose. This is accomplished by not ignoring less-used tags (label, legend, fieldset, cite, etc), using table only for tabular data, and especially not using div or span when more-specific tags are really a better fit... things like that.
With this in mind, of course asp.net supports a semantic web. You can put any html you want into asp.net pages. MVC makes this easier, but you can do it with webforms, too.
With that constraint out of the way, my standard advice when beginning a new project is to start with what you know. If you already know php or asp.net, stick with that. It will allow you to be a lot more productive, more responsive to issues, and make fewer mistakes than you will if you're learning a new platform from scratch.

Related

How can I rate the accessibility of my ASP.NET MVC3 HTML5 web application?

Is there a formal standard I can use to to rate the accessibility, especially for visually impaired people, of my MVC3 web application? If there are various standards, as I suspect, which should I give preference to for a web application primarily targeted at people with no or minimal visual impairment, but strongly wanting to offer as much as possible to visually impaired people? This is a learning management application, so wide accessibility is important.
I am trying to stick to best practices in terms of HTML and CSS semantics and such like things, documented in the handful of books I have, and I am using HTML5 validation in Visual Studio for my Razor views. What other tools can I use, preferably on the development side, before I deploy and can use the various online validators? Are the any online rating tools?
Standard (and reference list)
The W3C standard is WCAG 2.0.
The WCAG 2.0 Recommendation tries to be technologically agnostic and to apply to all kinds of websites, even web apps but the consequence is that it's rather unspecific. HTML/CSS/Script Techniques (as well as the Failure ones and Flash/Pdf/Smil if you use them) and the Understanding part are good reads.
For daily auditing I prefer to use:
AccessiWeb 2.2 reference
list,
"a methodology to verify conformance to WCAG 2.0" that "facilitates
(its) understanding and implementation".
There are references to WCAG 2.0 Success Criteria and Techniques but alas no links. Hyperlinks exist on the french version but weren't added on the english one, alas (I'll try to fix it with them this month).
The script part, essential to webapps, is again partly unspecific but that's because it's hard to be so without having 10x as tests! There are thousands of things to do with JS when there are a hundred of HTML elements.
EDIT 2014: this checklist has been updated to new techniques in HTML5/ARIA (an awesome work imho) but only in french. AccessWeb HTML5/ARIA (in french) May be translated in english in 2014 or 2015 or try an online translation service ;) 70% of tests are common with AccessiWeb 2.2 and the new tests are up to date HTML5/ARIA techniques already working in modern websites with the browsers and screen readers quoted in Annexes.
ARIA, as in Accessible RIA, is another work from W3C-WAI:
(ARIA) especially helps with dynamic content and advanced user
interface controls developed with Ajax, HTML, JavaScript, and related
technologies.
No doubt this is the future of accessible web apps but its support is a work in progress in browsers and assistive technologies. Also old screen readers'll never be compatible with ARIA and they're very slowly being replaced for newer versions because they cost A LOT (thousand(s) of USD/EUR for JAWS).
Thus webdevs must always create apps compatible with both old plain techniques (using tab key and space to access information and interact with it) and new ones (manipulating a tree with arrow keys, being informed of changes in a Live region while reading another part of the page).
ARIA is complicated, needs time and experience, etc
ARIA doesn't replace WCAG 2.0; huge improvements'll be seen with WCAG 2.0 only.
not everything is as complicated as a tree implementation. Landmark roles are very easy to add in any website for example.
If you use jQuery UI, there exists an accessible version of popular modules/scripts: http://hanshillen.github.com/jqtest/
It isn't perfect yet but it's far better than the original. In my experience, you can't mix the legacy jQuery UI scripts and these ones (though I didn't try for too long, I could easily be wrong).
Testing
I wrote about 2 useful services, Opquast and Tanaguru, in another answer. The other answer from BrendanMcK related to automated tests is a must read.
WAVE (fluffmyboner already wrote about it in the other answer) both exist as a toolbar and as a webservice. Main difference afaik: the WAVE toolbar'll analyze the DOM of your page while the webservice'll analyze the HTML+CSS sent but won't execute any JS
TAW (select inglès than WCAG 2.0) is another service for analyzing a few criteria
Wave is my go-to for accessibility validation, although I'm not too sure about what you can use to check pre-deployment.

Web Application Designer Position - What should we be looking for?

I work for a small data management/warehousing company that also focuses heavily on web applications. We are looking to "beautify" our existing web apps into something along the lines of mint.com or sifterapp.com or any of the 37signals sites for example. We are a .Net shop so whatever framework used on the front end would need to play nice with a .net back end and also use asp.net.
My question is what skills should we be looking for and what is the proper title for a person that knows how to create very nice looking web applications like the ones I've mentioned? I think having some experience with photoshop is always necessary, but it seems like a lot of the design patterns can be done using css and/or other front end technologies, or am I off base here? Basically, what skills should we be looking for in a candidate if we are looking for them to have skills in creating beautiful web apps that are both very nice looking and also very usable and what is that position called? Web developer? Designer? UI Engineer? Web Experience Designer?
I am also aware of some UI oriented frameworks like YUI, is this something that we should be looking for in a candidate, experience with this? Is a likely candidate going to be someone with a graphic design/artist degree or will it be someone more programming oriented? Is this actually a task for 2 separate people, one doing the graphics and another doing the user experience/css layout? It just seems very confusing to figure out what exactly we should be looking for so the interviews have been rather hit and miss so far.
Thanks!
you need a Graphic Artist, a usability expert and a web developer.
it is rare/unlikely that you will find one person who excels at all three
the good news is that you'll only need the graphic artist and usability people short-term
I would look for a Javascript developer with experience in integrating with ASP.NET. You need to explicitly require experience with CSS layouts, Javascript, frameworks such as jQuery, Prototype, etc. I know a lot of people that are ASP.NET developers and think they are good web developers just because they can drop a few controls on a page and have no understanding of what is happening on the client-side. Also, make sure that they provide you a portfolio.
There are almost always 3 parts of a website:
1.) Design: The designer(s) is(are) planning the layout of the website, with the following in mind:
- maximalization of usability
- nice looking
- using only needed components (no elements to "fill the void")
2.) Backend: The backend guy(s) is(are) working on the functionality of the server
3.) Frontend: The frontend guy(s) is(are) working on the frontend
The backend and frontend guy might be one person, but programmers are code writers (with no artistic inclination), designers are artists. If you put a designer to write code (for example CSS), he might not solve the problems well enough, the same is the situation if you put a programmer to make a design. In my opinion you should hire a designer (some designers work for a very low salary) and a programmer.
In my opinion nobody can honestly say that he/she is a good backend and frontend developer and a good designer in the same time. For example I'm a good backend guy, a decent frontend guy, but I'm not a designer.

Designing a CMS to allow complete page design

Currently whenever a client wants a website I provide my own CMS however I have been wondering whether a 3rd party CMS may be easier.
At the moment I have built it in ASP.Net & ASP.Net MVC (I'm thinking of moving to Ruby on Rails). A master page has 5 pagecontent areas, top, left, middle, right & footer.
I then create usercontrols such as Image_Top, Image_Left etc. In the CMS the user can create a page and then choose how they want that page to look by choosing from the list of usercontrols. This gives them complete control over their page.
Would you say this is a good approach or is there a better way to allow them to design their pages? I was thinking of instead of maintaining my CMS I would recommend using Joomla, Drupal, DNN, SiteInfinty or whatever to manage the backend. However do 3rd party CMS's allow for that much control or am I better off sticking to my own CMS? Is using a 3rd party CMS as easy as plug and play?
Thanks
DOWN THIS PATH LIES MADNESS.
As someone who has been a developer for two commercial CMS products, and implemented at least 4 others for projects of varying complexity and completeness I can only say DON'T DO IT.
The CMS is the technical equivalent of invading Afghanistan ... everyone has had a turn, but no-one wins.
Find some technology you are comfortable with, learn it's nuances and annoyances, and concentrate on the things that are interesting and add value.
Editing content is a commodity.
Personally I like Wordpress, but depends on your use-cases and requirements.
What you are descriping is possible with modX using template variables.
It got a quite steep learning curve in the beginning, but i think you'll like it.
It's open source and runs on PHP and MySQL.
Give it a go.
I think you need to investigate, perhaps build and try each so that you can accurately match the capabilities against your requirements. You may find that different CMS fit different scenarios, but you will need to determine which is which. Unfortunately the general answer is "It depends" and only you can really decide which is the best option.
In some respects CMS systems like Joomla have security and version features that may offer you an advantage. Potentially you can incorporate these features into your framework if you have the time.
There is nothing really wrong with rolling your own framework. If you've saved time and created something that your clients like, then this is a good thing. It brings the benefit to you in that you get the learn how to implement the CMS features with a variety of platforms. Why toss this out if it has worked for you?

Collaboration platform for developers and designers

Recently our newest web designer asked me why we use ASP.NET for our website. Reading through his question to the real one, I started thinking about it myself. Why are we using ASP.NET for web development?
The problem we find so far is colaboration between the design team and developers. Typically our designers create some snazzy cool look crayon laced web pages, then show them off for approval in all their glory. Once approved, the developers rip the HTML out and shove it in to ASP master and detail pages, and huzzah! out comes pretty website.
Since Dreamweaver doesn't play nice with Visual Studio, this is the same process for even small tweaks and changes. I would prefer to just write the backend and let the designers draw the pretty pictures and fancy CSS. Our current websites have plenty of reason to use ASP on nearly every page, so I can't do half in HTML, the other half in ASP.
I have no aversion to doing something else, another language, CMS platform, some other random buzzword, etc...
What are your experiences with this design situation? Are we doing it the hard way? Should we consider alternate platforms and languages? Are there any good, proven ways to allow designers to work on ASP (while still using Dreamweaver)?
Start learning Asp.net MVC as soon as possible. Designers will love you for that. :) And you'll be up to date with new development technologies that will also make your solutions much more robust and less complicated.
But otherwise. Designers should be able to read XHTML fluently. Learning asp.net semantics shouldn't be too hard. Then give then Visual Studio where they can manipulate content. As long as they know how asp.net web forms work things should be fine. They'll probably be able to do majority of things using just CSS. I know I can. Sometimes I do have to check resulting HTML, but it works.
Aside from Wicket (a java web framework), I don't know of any framework or language that would allow designers to continue to work on the design once developers have started to add logic to it.
I would suggest two things though:
Use a MVC framework - ASP.NET MVC, Ruby on Rails, Django, etc since this allows for far more separation of presentation and logic
Keep your presentation layer as stupid as possible and use helpers as much as possible or even better, put the logic in the domain objects. The view should only show or get data with absolutely no logic for processing data, this will keep the pages much more designer friendly.
I find your question very interesting because no matter what kind of technology the project uses the interfaces between the different roles will always cause some friction. I am not sure if there is a technological solution to this communication issue because the designer and developer speak literally different languages.
Depending on the skillset of your designers and developers an additional layer might help you out. I do not know how ASPX works but i am sure there will equivalents to the concepts of other technologies.
In case you have mainly static content which can be expressed in XML than you could provide the backend which delivers the content in XML with a defined Schema and your designers could describe the transformation in XHTML and CSS via XSLT. Given that your designer are capable using XHTML and CSS the addtional effort to learn XML and XSLT is not that huge. I find this solution much powerful than template languages which try to emulate the richness of the serverside scripting language in their own limited constructs. In case you have dynamic elements on the clientside like DHTML, AJAX or you name it you could define your own xml tags which are transformed to richer client side objects after the designer did their work. I guess the designer will understand the usage of these special tags and you provide the proper translation into client side objects.
I used this approach with some coworkes based on PHP. PHP was only the driver for the transformation. The content was assembled into xml with special tags which were transformed into XHTML and CSS via XSLT. Once the objects and the transformation for the different objects is defined you build up a library which can help to shorten the developement cycle of new pages of you webapplication. The benefit of the extra work is, that you designer can change the layout of the page without ever touching you server side code.
Maybe this helps.
Consider using either Expression Web or SharePoint Designer. The latter is now free.
I know you specify dreamweaver, but have you looked at Blend? It plays very nice with Visual Studio and is quite a nice app. to work with.

How can I make a framework for quickly building similar, but different, sites?

I have the need to build lots of sites that are very similar, but not exactly the same, using ASP.NET 2.0.
I'm trying to find the best way to make generating these sites quick and easy.
The sites will be used to collect information about a user, and there will be multiple steps for each site.
The sites will all collect similar information, but some sites may require less or more information than others. Additionally, certain form fields will need to be populated from different database tables, based on the site.
I would like to use a Microsoft patterns & practices solution, but I'm not sure that there is one that fits this scenario.
My current thinking is that I will put as much business logic as possible into an external assembly and then write a custom Web user control for each step for each site. I will include these user controls in a master page's Panel control.
I don't like this solution because each site will be nearly duplicating the code for the other sites.
How can I improve upon this design?
The main obstacle is that the sites are similar, but sufficiently different.
Thanks!
Alex
you can create base classes which handle all of the common functionality and then have your site specific controls inherit from their respective base classes and then implement their specific implementations.
We face this problem all the time. What we do is to have a common library that all our sites use, and to bury shared functionality in classes or utility modules in this library. Each site can then use those objects or utility functions as is, or extend the common classes. Keep in mind that these shared classes can include all kinds of things, including code-behind for pages and user controls that you can inherit from and extend.
Deciding what goes in the app and what goes in the common library is one of the hardest things about our business, though. Put it in the common library and you lose flexibility; put it in the app and you risk having duplicate code to maintain.
If you have a fairly complex database setup, it might be worth your time to come up with a framework for specifying your db schema in XML and having your app enforce that schema and build any additional SQL infrastructure that you need based on that definition (e.g. utility views, stored procedures, etc). We did this and it resulted in a huge productivity boost.
Have you looked into Monorail (www.castleproject.org) this is an implementation of themvc pattern, similar to Ruby on rails with a few nice view engines, I prefer Nvelocity.
from castle project as well you can use n implementation of ActiveRecord that makes life real nice. if you are on that trail also have a look at coln ramsay screencasts .
To be honest all ms solutions are real fat
another great thing about the castleproject is that is totally open source so you can learn loads from their code
How about using an Application Framework like DotNetNuke or mojoportal?
They both provide flexibility and enable you to develop websites very quickly with common functionality. Leaving you to develop custom modules where the functionality you require may be different. There are also thousands of other modules that can be bought which provide excellent functionality.
However we chose to use WCSF and enhanced upon it.
All the above mentioned projects are open source and some good examples of code to learn from.
I know it may be a late answer but I hope it helps

Resources