Silverlight or MVC for Web Development [closed] - asp.net-mvc

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 12 years ago.
I was just wondering about the opinions out there. What do you think promotes faster development times for a web application? Silverlight or .Net MVC?
And could Silverlight be a replacement for a true http web application?
Feel free to rant or give as much details as necessary.

could Silverlight be a true replacement for a true http web application?
No. Just as Flash can't, Silverlight and any other presentation viewing plugin will never be an acceptable replacement for good HTML.
I can cite a million reasons but here are the highlights:
Plugin-availability (especially on other platforms, phones, etc)
Performance is awful compared to HTML
Maintenance is a PITA, requires complete recompilation and uploading. You just edit what you need in HTML.
Accessibility!
I can't comment on speed but I frankly think it's irrelevant. You shouldn't use Silverlight/Flash/whatever to build a full website.

What technology to use depends completely of your requirements. You should start there.
As far as Silverlight (or Flash for that matter) goes, you will be creating a web application but not a web site.
Disadvantages?
People will be reluctant to install Flash or Silverlight plugin.
Flash/Silverlight sites will not be visible to search engines.
People won't be able to bookmark them and share the links.
Back/Forward/Reload browser buttons will not work
No/partial support in Mac world
Advantages?
Rich UI
My personal opinion is that you shouldn't use Flash/Silverlight except in cases where raw HTML/CSS won't work. And HTML 5 with CSS 3 are quite powerful. Web is full of pointless Flash sites which do nothing interactive just present a few static pieces of information. It could easily be done with ordinary pages. Somebody thought a Flash site was cool, but it isn't. It's heavy, slow and inaccessible.

Silverlight and MVC/ASP.NET both have there places:
MVC/ASP.NET are great for things things like blogs informational web sites, online stores
basically when your application needs to be spidered by search engines.
For online applications like Turbo Tax or Sales Force basically applications that at one time where on your desktop but for many reasons have been moved to the web I would use Silverlight or Flex.
With the above in mind:
Having worked with MVC/ASP.NET and Silverlight extensively I find Silverlight development much faster once you get the hang of xaml.

This is repeated many times, but I never seen anyone mention such disatvantage of the "modern" technologies like Flash/Silverlight as lack of years of browser/usability support:
you generally can't copy text of arbitrary item
you don't have things like Stylish, AdBlock, or Greasemonkey at your fingertips to improve what "designers" think is good for you
browsers doesn't know about your forms and can't provide autocompletion or save values after crash/reload
accessibility solutions like zoom methods or third-party formatters do not work
And I can continue. From users prospective, Flash/Silverlight is a nightmare, stone-age, while HTML-based applications have all the modern usability stuff available for users.
Yes, there're development problems (nothing beats FireBug even in HTML area) but what matters is, please, be kind to your users. Even corporate people are people.

IMO - I look at Silverlight/Flash/HTML forming the "View" part of the website/web application.
If you can structure you site/application code properly, the View should be interchangeable and/or can support multiple formats of the view for the end user/device to choose from.
IMO - it is very hard to predict the user usage patterns of the site/application and there might be devices which need to be supported in the future. So, might as well develop applications which are structured in a way to help make that move a lot simpler in the future, in which case the rendering of the view can be anything you want to meet your current goals...
HTH.

A previous answer makes the statement "You just edit what you need in HTML". While this is true for a simple static web site. It is not true for a web 'application' as is stated in the OP. The functionality is not in the HTML. You might have some functionality in Javascript that yhou could edit this way, but doing edit-in-production of Javascript is NOT recommended.
For all but the simplest static web sites I would recommend that any change to a production web site or application should be managed in an source versioning system, tested, and reviewed before deploying to production. In such an environment adding a compile step is trivial.
I would never recommend Silverlight to replace what could be done in a static website. I cannot imagine that anyone would. HTML is designed for static content. Silverlight is not.
To address the performance issue: the statement that Silverlight performance is awful is just wrong. Certainly, it takes longer to load a Silverlight application than to load a web page, but once loaded the user interaction of a well designed Silverlight application is much faster than continually rendering complete web pages.
The lack of portability for Silverlight has been significanly overstated in some of the responses here. Silverlight has the same capability on MAC that it does on PC. Linux availability via Moonlight is not far behind. MonoTouch for the iPhone, soon to come Mono support for the Android and the Silverlight programming environment for the upcoming Windows Phone 7 also bring a lot of possibilities for mobile environments.
Having said all of that, I would not use Silverlight to develop many types of web applications. I would be reluctant to do a consumer oriented e-commerce site using Silverlight (or Flash) because of the previously mentioned reluctance by some to download the runtime. But for the SaaS application that I am currently doing that is not an issue, the vast majority of users a more than willing to do a small download to get the far richer user interface.
It is possible to achieve some of the same improved user interface 'richness' by applying Ajax/JavaScript, but I find the Silverlight development experience to be more productive. One thing to consider is generally an Ajax/Javascript application while giving a better user experience than traditional web application will still look and feel like a web application and a Silverlight application will feel more like a traditional windows application. This may or may not be a factor in your decision.
I find it a bit disappointing that a repsonse that misses the point of the OP and does not seem to understand the difference between a web application and a web site has gotten more up votes than some answers that were on point.
The response by Anthony is spot on.

Related

How to make a master-detail database Web site as fast as making the same with Delphi. [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
I hope that this question gets clear to everyone.
What I find great about Delphi is that with RAD (rapid application development) we can pick components and put them directly to the form and connect them to other components and methods.
It's so good that when I need to make an application that share information I use a remote online database server, but I don't make a Web site. I use zeos library and make a Delphi application.
But it is become dangerous as my clients are beginning to ask for use with tablets and smartphones.
What I hate about Web is the hard manual development of the interface and connection with the controllers.
But I might be wrong as there could exist great tools and Delphi like ide to work as fast as the real Delphi.
*Does anyone experience that? *
I tried rad php xe but I find it very complicated to code as you have to mix php and javascript in the same files and does not have a good mvc structure.
Dreamweaver is full of bugs and does not have a debug
PhpEd has good code control but does not have interface editor.
So,How to make a master-detail database Web site as fast as making the same with Delphi. Which visual IDE should I use?
DevExpress offers beautiful grids and other controls in case that's what you are looking for. It's not for Delphi but ASP.NET.
ASP.NET Controls, MVC Extensions at DevExpress
There are a number of large and small considerations to make when developing a website, that differ from making a desktop application. It's easy to imagine a RAD IDE environment that allows you to drag and drop components onto a page, and have the work done for you to convert it into a website that responds to requests, but it in general this will hide a lot of important properties of the website that have a big impact on its operation and performance.
A website is hosted on a webserver (or several webservers), generally serves concurrent requests for multiple users, and streams content to a web-browser that renders the page on screen. Any self-respecting modern website will also use smaller AJAX requests to add data to an existing page, and use client-side scripting for validation and navigation. Not to forget alternate views for the visually impaired, mobile devices, or other applications that want to hook up to an API.
The truth is a platform that does all this for you could exist, but in my opinion will underperform, produce overly large pages and will have made important decisions for you, you will run into as soon as the applications gets more complex, or needs to perform under a certain load.
There is a reason cutting-edge web-developers work close to the code (HTML, JavaScript, CSS...) and even prefer to have pieces of code and server-side logic in the same source files, like PHP,ASP,Cold Fusion,Ruby,Python... I wanted to combine this with the speed and power of the Delphi compiler and started http://xxm.sf.net/ that enables you to create both small and huge projects, keep in close touch with the code that constructs the response for a request, and lets you choose how and where you host the website.
I hope this in part answers your question, though you did not ask for ways to make a master-detail website with Delphi.
I suggest Delphi using IntraWeb. I've used it in the past, and it worked fairly well.
I suggest looking at the thread Alternatives for IntraWeb in Delphi? as a starting point which also discusses IntraWeb like products.
A description of IntraWeb from that thread:
Intraweb is a framework for developing web applications using Delphi/VCL. In the IDE you design and code using Delphi language and components. Intraweb's engine generates HTML pages using JavaScript/Ajax and those pages look and behave more or less like Delphi forms and components, but in the browser context. An Intraweb application is deployed using a webServer of some sort, which serves up those pages to browser based clients. – Mikey May 21 '11 at 6:09
You would, of course, have to host the app on a Windows server, since the code that Intraweb creates will only run on Windows.

What are the advantages of using a traditional MVC framework Vs Using an HTML + Javascript + Services application? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
Im right now architecting a Web application and the customer is not sure about using ASP.NET MVC or any other MVC Framework (Rails, Djando or other apply also).
The customer doesnt see value in using these frameworks. They prefer to use traditional HTML and call Web Services via JavaScript to get all the data. For them SOA is very important and they want all the application to be SOA oriented. In the current development, we are returning some data to the views for the initial loading of the home page(using an ORM tool and doint all calculations in the controllers and returning the model to the view), and any updates to the page are executed calling Rest Services using JavaScript. The customer is complaining about returning data to the views using the controllers. They want all data to be returned via the web services, so the MVC framework for them is useless. What can i say to the customer to "sell" the use of the MVC framework?
What are the Pros and Cons of using each architecture?
Thanks
ASP.net MVC, you can make use of a service-oriented architecture and continue using MVC for the back end, the front end will meet your html, javascript to use (front-controller) and use SOA to connect to your back end for message passing (JSON) in your back end can have a MVC architecture to manage your services
It all depends....
You can, of course, use the MVC pattern from within JavaScript. You can also hook an MVC application into a service-oriented architecture.
I think the question comes down to "where do you construct the page" - front end, or server-side.
The benefits of constructing the page in the browser are obvious. You can scale more easily, because a lot of heavy lifting happens in the client. You are forced to create loosely coupled services, which you can compose in lots of interesting ways.
The drawbacks are perhaps a little subtler. Most search engines won't execute the JavaScript, so the HTML rendered by your services may well be invisible to them. As the number of browsers increases (smart phones, smart TV, etc.), testing this kind of application logic can become overwhelming. Practically, there may well be a limit to the amount of business and application logic you want to put into JavaScript - download time and execution time can become a problem, and it requires a lot of discipline from the development team. Depending on the page logic, you may not be able to cache quite as much as when constructing pages on the server.
Benefits of server-side page construction are also fairly obvious: you can take advantage of well-established libraries and frameworks. Your pages can be cached on the browser or CDN. By testing the business and/or application logic on the server, you can be confident it will work on all devices (though the user interface may well break). It's probably easier to expose server-generated pages in different formats when constructing them on the server (e.g. HTML and RSS versions).
Drawbacks of server-side page generation include not easily being able to pull apart different components and re-use them unless you design that in from the start. Where a web application depends on lots of services, the back-end code may not earn its keep.

What do you think of uniGUI, the framework for creating web applications and win32 applications at the same time? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
I've just been redirected by a firend on the uniGUI website. In a previous question I asked about a comparison between Raudus and ExtPascal.
Now this unigui seems to be an alternative to Raudus, that moreover has the advantage of allowing you to compile the win32 exe at the same time with the same source code (of course if you limit yourself to use only uniGUI approved UI components).
I think this is amazing, even if this idea at a first sight willnot make happy all the web apps purists, but in my opionion having this kind of tool is great.
There are many (even small) applications, that can benefit for this code once, get a double UI.
Anyway which are your feelings about this? Do you think it has a future?
ADDITIONAL NOTE: In order not to start a general discussion please try to answer by mentioniong uniGUI specifically, not only a general answer. Thanks.
I started developing uniGUI (or whatever name it may adopt in future) around two years ago. Since then it has evolved a lot. Initial version was based on VCL for the Web. With addition of ExtPascal and Ext JS it has become a very advanced tool to develop Web apps based on Delphi.
uniGUI simply defines itself as a Web Application Development framework. The concept of Web Application has been controversial since its first inception. Some people claim that Web is stateless but applications are statefull, one should not mix these two. However, nowadays with an increasing demand for web applications such notions only remain as a philosophical point of view.
More and more people want to access their desktop apps from the internet. Companies want their local accounting software to be accessible to other branches. A security company wants a web gateway for their access control software. These are all examples for the increasing demand for web apps.
We can consider uniGUI as an abstraction layer for Delphi VCL controls which extends them to the Web. Like all other abstraction layers it helps developer to focus on application logic rather than the development tool itself. It tries to fully integrate the RAD approach into Delphi based Web development.
Dual nature of uniGUI is simply a plus. I'm referring to its ability to deploy same application to both web and desktop using same codebase. This feature maybe useful for some developers but useless for others and it can be completely ignored by those who focus on Web development only.
As for the scalability, the best target for uniGUI and other similar tools seems to be the intranet where the number of clients are predictable and connection speed is a non-issue.
That said, nothing prevents developers from developing web apps that target the internet. At end it is all Ext JS on the client side and Delphi event handlers on the server side. It all depends on how smart you design your app and how efficient you manage your resources. If each of your sessions consumes 10 MB of memory then you're likely to run out of memory very soon.
In conclusion, this framework will have a group of users which will find it best for their needs. There is no black or white here only big gray areas. Like any other tool it depends on the company, the particular project and the available deployment options to see if it is the right tool for you or not.
Web applications are very different from GUI ones. Mixing two approaches for something
more serious then simple form or several buttons I think is just wrong.
I think that the UniGUI idea is a great one. But I think that Embarcadero is the one that should offer that as one more option for developers instead of a independent one. Delphi developers always wanted an easy way to create web applications, and sincerely WebBroker is very poor.
Anyway which are your feelings about this? Do you think it has a future?
The general idea definitely has a future, if only in the PT Barnum sense. This particular implementation doesn't seem to be anything special - there's nothing in it that grabs me as being a great solution to any of the problems I currently have to deal with. But then, I see thick client apps, especially traditional Delphi 2 tier apps, as quite different from web apps.
I'd be more interested if uniGUI worked the other way, and provided a solid MVC framework for Delphi, then extended that to the web. That way you could more easily have your data + business logic + GUI in three connected pieces, rather than the traditional Delphi/RAD problem that business logic gets all tangled up in the GUI, then the web application is a pain to develop because the layers "have to be" separated. This smells like "solving" that problem by letting you leave the business logic mixed into the GUI when you move to the web.

Raudus vs ExtPascal: Delphi web developement alternatives that use ExtJS [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
Delphi developers has several tools (several alternatives to ASP.NET) for building web applications.
While No.1 framework is Intraweb, there is a lot of interest around ExtJS, that has 2 incarnations:
1) the opensource ExtPascal
2) the closedsource Raudus
Now the products are different, Raudus never supports the latest ExtJS version (while ExtPascal does because as far as I read it "almost automatically updates itself to the latest ExJS version"), Raudus "seems" much RAD (much similar to Intraweb from the RAD point of view).
Anyway why chose one or the other?
Why Raudus (since it is free) cannot become Open Source? Or does Raudus use ExtPascal behind the scenes?
Comment: uniGUI seems at first sight to combine the good part of Raudus (the RAD part) and ExtPascal (being based on extPascal).
Talking about Raudus, I'd be careful! You can download it for free, indeed. I was about to start using it when I realized there's no single word on its usage license. There's no license in fact, or I was unable to find it under "standard" locations (website? no. installer? no. README / LICENSE file? no.)
Thus I'd be careful with using library which doesn't specify it's license. Especially if you're about to start some project which will use it intensely - just imagine what happens when it comes out that you need to pay big amount of money for using it ...
Why use any of them? RAD in the form of Intraweb and tools like it, is not appropriate for web programing. It doens't separate the GUI from bussines logic well. In other words there is no true MVC approach there. Maybe ExtPascal is different here, but the point is elsewhere.
ExtJS is a very well written RAI JS library. It feels almost like putting blocks of code together in a very object oriented way. You can easily build whole GUI with ExtJS without any backend support. This way your whole GUI is in javascript files and no backend is needed. Backend only processes the ajax call and provides data / processes data. This way you have a clear separation of concerns.
This can be easily done without any frameworks. Yes framework would come in handy but it would have to be done in a ASP.NET MVC or Ruby on Rails way. No RAD and no visual designers. New web developers often make those mistakes. But if you program for the web long enough you come to appreciate the separation of GUI and logic and the simplicity of HTML. Web programming is different from desktop programming at least to a degree.
To answer your question. From what I have seen, I like ExtPascal better. It seems a purer web development tool than Raudus. But I admit I have only seen both from the surface and from demo videos, so I cannot judge, only speculate :)
The Raudus developer put up a new blog post in late October and claims, well I'll let you read the snippet for yourself:
"Raudus license is freeware as written in license.txt. You CAN use Raudus in commercial projects. Raudus sources are not available yet."
Edit: There is a license statement at the bottom of the http://www.raudus.com/ page.
"License
Raudus is freeware. You can freely use Raudus for commercial purposes."
As to contacting the author, try this from the same page: E-mail: igor#klopov.com
After using Raudus for a few months I decided to post my own answer.
The framework is improving, Sencha touch support now it is not complete but sufficient to create usable web applications optimized for mobile devices.
RFE, a new front end, not based on Sencha Touch is under developement and in next Raudus release (that should be out soon) there will be a usable preview of the new controls set.
So while ExtPascal seems frozen, Raudus is in progress and promising.
Update: I stopped using Raudus, it dropped ExtJs support and now it ships with own controls, that will never match the beauty and richness of extjs components. I am now going for IW + cgdevtools components that are Jquery UI for IW.
user193655 --> Depending on what you do be carefull with both approaches. I am really a big fan on Delphi or Freepascal/Lazarus - I am not very certain if the approach of bringing 3GL bindings to the Javascript stuff is wise.
MVC - depending on what you do - in PHP you have the Yii Framwork or Prado. Maybe the second has some ideas from .net built in which are very easy to understand by Delphi developers. PRADO is an event driven approach while YII Framework is absolutely cool and unix like.
After using Raudus it seems that it is not practical for large scale of applications.
According to their documentation and I have also sampled, it serializes all client request into single main thread. However it process client request and response generation part in multi-threaded enviornment.
But main thread issue is quite important as it directly impact the response time if one action is taking more time in the main thread, others will keep waiting.
Any suggestions to resolve this issue?
Raudus:
Relies upon Delphi, in which:
Is verbose;
Relies upon Microsoft Windows;
High-cost to adapt to or to maintain;
Quote from raudus.com: "Raudus is freeware. You can freely use Raudus for commercial purposes. Raudus sources are not available yet." — This, to me, will be never a license. On the homepage, simply there is no documentation about Terms of Service or something like that. Hence I won't deal with their services.

Web development for a Computer Scientist [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
I have BS in Computer Science, and thus have experience developing software that runs at the command line or with a basic GUI. However, I have no experience making real, functional, websites. It has become apparent to me that I need to expand my skills to encompass web development. I have been using Ruby to develop applications, but I am aware that it is quite popular for web development. I want to use my skills as a programmer to assist me in developing a personal website for a band.
I have experience with HTML, but very little with CSS. I want to leverage my skills with programming languages to create a website containing pictures, audio clips, a dynamic calendar, a scheduling request tool, and other features common to band websites.
What kind of resources are available for a competent desktop programmer to learn the entire process for developing a website? Is it best to use free CSS templates and WordPress as a foundation for my site or make it from scratch? Should I use GUI tools or write it all in Vim/Emacs? Is Ruby on Rails sufficient for my personal website, or should I consider a more mature development platform?
My main goal for this project is to come up to speed on current web design technology, and actually understand the entire process for building a website.
I think one really important thing to understand in web development is HTTP. HTML and CSS are important, but I think it's more critical to understand the stateless nature of the web, and how each of the HTTP verbs work, and what they can/can't do.
http://www.freeprogrammingresources.com/http.html
A good tool for seeing how HTTP works is Fiddler.
If it's as much a learning exercise as anything then take an iterative approach. Build revise. Build revise. My (very) rough guideline below:
Client
Start with the structure of a website and concentrate on the client.
Use notepad and build a bunch of static pages for your band. i.e. Hand code initially. Try to build all your pages with CSS. No table markup. Then play around with some Javascript to bring things to life. (Navigational menu\ Calendar selections\etc). Learn about how to import and link to Javascript and CSS files.... and how these files are treated re:caching etc.
Try to learn up to the limits of what you can do on the client (generally). Factor in the nuances of 3-4 browsers (Firefox/IE6/IE8/Chrome) re:DOM and client side eventing.
Server
Then start looking for what you might want to change across pages/sessions. i.e. what needs to be manipulated server side. And pick a server side technology.
Start with basic post-back processing. Forget databases at this point. Learn how your framework of choice maintains state..... not just the name of the technology but the real nuts and bolts of it. One of your single greatest assets as a web developer is understanding the state model(s) of the technology you're using.
Then go for a deep dive on the web server technology of choice (and in general). Understand the full request pipeline from client to server and back. This will teach you forms, http and its verbs, web server, filters and modules, server to framework hand off, page and control life cycles, back to the client.
Now start working on dynamic content injection and the like. How to make and use reusable components in your web pages.
Databases, caching, performance and diagnostics.
Then get into into all the fun stuff like ajax, etc. Replace your javascript with jQuery, etc.
Then you got the whole Webservices\XML\JSON\etc side of things to discover.
Resources
Well the web obviously. For client side stuff, going to the sites of companies who make third party web controls can be quite interesting. Asking how the hell they did that? Viewsource is your friend. Look at how they structure and build their pages. Pick a couple of good web designer sites, and you find a plethora of rants about browser wars etc that will give you good (under the hood) info.
Once you hit server side, I'd go for white paper type learning from your vendor of choice for your technologies.i.e. webservers/frameworks/etc. Again find a 3rd party howto/evangelist site (I used to use a lot of "4 guys from Rolla" for example) that will demonstrate how to do various things. Language learning is ongoing. Basically just do the best you can till you find a better way.... and always be on the lookout for a better way.
You really need to understand html, forms and css to get anywhere. I say forms as this will give you the round trip needed to understanding the stateless nature of web dev.
To further labour the point, I have interviewed many people who think you can only have one form on a page and can only have one submit button per form. This is all down to a lack of foundation knowledge.
So for that I'd recommend starting with htmldog.com.
After that, a lot of web development is done with frameworks. Gone are the days where you do it yourself (well mostly) but my above point still stands. You do need to be able to peep under the hood with some confidence.
I've been doing web development for 12 years and started out with Perl on Solaris and Linux. Since then I've also done Java and more recently ASP.NET. However, I'm slowly falling for Django in my private projects.
What I've found over the years is that the inherent problems - cookies, javascript, presentation, state, authentication are all the same but just handled differently. So ultimately its down to you and your language preference. Plus a little of enlightened self interest when it comes to potential employment.
Programming aside, you should also become familiar with web servers (Apache and IIS spring to mind), Http codes and headers, Mime types and encoding and FTP. As well as Javascript (mentioned already), plugins, browser platforms and good development practises such as using Firebug, Fiddler and so on. It also wouldn't hurt to have a good idea of the image formats available, image optimisation, CSS sprites, content compression, caching and the like.
All depends on where you want to start!
For a newbie, I'd pick Django and (obviously) Python. Good, clean language with cheap startup options, low cost IDEs (ie free) and hosting your sites is very affordable.
But that's just a subjective opinion.
If your goal is to
My main goal for this project is to
come up to speed on current web design
technology, and actually understand
the entire process for building a
website.
Then start from scratch in Ruby, PHP, Java, ASP.NET, etc...
When you run into a design problem or just want to know how others have approached something, then look at the frameworks.
Once your up to speed, and your website is starting to grow, then segway into a framework, to get up to speed on the frameworks.
I agree with John on this one.
As you know from your own experience in pursuing your BSc, understanding the basics of any language is what makes you even more capable in expanding that knowledge or specializing.
With that in mind, it would be best to understand the basics of HTML and CSS.
Understanding the syntax and overall language will help in the future when you want to pursue large projects using frameworks like Django and Rails. The basics will also especially help with tweaking CMS' like Wordpress to be more customizable to your needs.
One thing in particular that I'd like to mention is that web programming, like many other forms of programming has its own special structure and "proper" way of doing things.http://www.w3.org is a great way to ensure that your work is passing general web design standards, most sites don't follow this because it is tedious, but from a learning perspective it ensures that you get a nice strong foundation.
www.w3schools.com is also a great resource for detailed help on web programming. Lastly, I like colourful code, so I like using basic text editors such as notepad++ or notepad2 or gedit to do my web coding. GUIs like dreamweaver may tend to fill up your code with extra junk and spaces, so I don't recommend them, but they are still great tools.
Don't bother with Rails yet -- write CGI scripts in Ruby. It will be very similar to what you have done for class.
After you have about thirty of those under your belt, you'll know what you want out of a web framework.
I'm a Computer Scientist and a web programmer and I would suggest you learn both HTTP and CGI:
CGI Made Really Easy
HTTP Made Really Easy
As the titles of the above tutorials claim, they made the concepts "really easy" for me.
Once you've got CGI and HTTP down pat, I'd suggest checking out following sites that provide a wealth of articles and references for web programming:
webmonkey
w3schools
Mozilla Developer Center
Assuming you want to concentrate on writing web apps, then Perl, PHP, Python and Ruby are all fine choices (I myself use Perl predominantly) and I'd suggest doing some research into the popular web frameworks available for each language.
Most importantly, pick something simple as your first web app, e.g. a form and a page that shows the results of submitting that form. Some good examples (using Perl's CGI module) can be found here:
CGI.pm - a Perl5 CGI Library -- see the first set of links on this page.
When you want to start writing web apps that use a database, read up on SQL and popular libraries/modules in your chosen language for database manipulation, especially ORM (Object-Relational-Mapping) interfaces that allow you to deal with records in an Object-Oriented fashion.
Good luck with it! Being a web programmer is fun because your audience is teh intarwebz! :)
If you are starting from scratch as per John MacIntyre's suggestion, you may lean towards PHP. With all of its shortcomings, it does have one really good user manual. It is also easy to get started with and is installed on pretty much every host and goes well with Apache.
Also, w3 schools is good to begin learning about CSS and XHTML but don't forget to check out the specs at W3C.
Also, please read this Stack Overflow question & answers.
For what you're describing, Rails or Django might be slight overkill but it wouldn't hurt to learn them. Django, in particular, might be good because of the notion of a project containing multiple apps (e.g. calendar).
Whether you use a framework or write everything yourself, though, you'll need to know HTML and CSS. CSS is extremely simple if you have a BS in CS...you could read a tutorial and know it in five minutes.

Resources