Improving Copy Web in Visual Web Developer


I’ve spent a lot of time in the last week evaluating the Copy Web experience inside Visual Web Developer.  When using it, I ran into some confusion and I wanted to see what your opinons were.  If you have used Copy Web, let me know your thoughts.

What do you expect this feature to actually do?
What does it do in your opinion?
What is confusing?  What works well?

For me, I initially saw this tool as an integrated FTP tool that enables you to easily move files around.  This understanding, now that I know more about the implementation today, isn’t 100% correct.  First, the tool is more of synchronization tool.  It binds your local Website with the defined root of the remote site.  It keeps a database of the files that exist on both sides, which is what enables it to keep the sites synchronized. It makes it simple to keep files and directory structures across the remote and local versions in sync, but doesn’t give you ‘FTP’ like functionality.  Currently, you can’t create remote folders.  You can’t move files from a place on the local project to a different place on the remote project, since everything is bound to some root node.  Is this how you would expect it to work? Some work we are considering for B2 or RTM:

1) Asynchronus — allowing you to get a more responsive, feedback oriented synch — this way we can still update the IDE during a copy and you use as a user can continue to work, open other programs, and not get a white screened UI window.
   Does this matter to you?  How important is it to continue to have the application be 100% responsive during an upload?  Does this matter?

2) Folder 2 folder assocations – this would change the root level binding to be folder based — enabling a more FTP like experience, moving files from the root on local site to a different place on the remote site.  Imagine making a new directory called “testme” and then moving some files into that folder remotely.  Today, this isn’t possible — with F2F assocations, it would be and you would still continue to get the improved DB experience that tracks deletions and timestamps.

3) UI work — some work to simplify the UI and add more context sensitive (right click) functioanlity

Another question – how many people typically log into a web server (ftp://myhost.com u: me pw: me) and then have more then 1 subfolder that contains sites.  I think of this as the I manage 20 sites, all off 1 login to a shared host, and then work off subfolders to deploy sites.  Is this something you experience?

What about — ftp://myhost.com/  username: a  which binds to /mysite1/  and ftp://myhost.com/ username: b which binds to /mysite2/

different logins go to different roots off the same domain name — I”ve historically had hosting scenarios where this is the case… how about you?

Give me your thoughts and feedback … Today, I think Copy Web does a great job of helping keep a local / remote site in synch and deploying that application — as long as you go in understanding this is how it works.  No doubt this is a big win for customers.  But, what else could we do, either with 2005 or in “Orcas” to really deliver the best possible deployment tool.

Comments (5)

  1. Stuart says:

    This sounds like the question is phrased backwards. "What do you want Copy Web to do?" presumes the existence of a Copy Web function when that might not be what we want in the first place.

    Seems to me that there are two separate functions that require different terminology in the UI. Furthermore, both of them are valuable in different situations and both should be provided.

    One is the FTP-like interface most people are used to. This is very useful if you need detailed control over the arrangement of files on the other side, or if you want to manually copy individual subsets of files, etc. I’d call this something like "Manage live server files" or something (hopefully you can do better than that) to make it clear that operations beyond simple one-way copying are permitted (although perhaps this name goes too far the other way and the name should include some hint that copying is possible using this tool).

    Another is the synchronization function that you’re describing in current VS05. I’d call this "Synchronize Web" or "Sync to Live Server" or something because it’s very definitely not a "Copy" operation ("Copy" strongly implies a once-off operation, not an ongoing process of synchronization).

    Note that I didn’t call either of these "Copy Web" 🙂

  2. John S. says:

    It currently works like every other FTP or web dev program I’ve used (asks for server, user/pass and default directory), which is good. It’s fairly simple (for web devs especially) and makes good use of familiar site transfer conventions. These are big plusses for me

  3. Jeff Parker says:

    Peronsonally it works exactly like I expect it to.

    I have to agree with stuart your talking about with Syncronization. I think that would be a new feature that needs to be defined in the UI seperately. When you talk of Syncronization here is what I envision and what I see as really useful.

    A defined web project. All code is on a dev server or local PC. You can set up the live server, or servers as in a web farm or a distribution point as in a simple directory. When you get all your change control aproved and your ready to cut the project you simply click a button and the code required to run gets blasted out to the production environment. However would be nice to be able to configure this per web site and have a static way to just set deploy or copy options options and leave it alone.

    Now here is the key thing, if you do anything like Front page does it, well then it is useless we do not want extra stuff added to our pages because of this feature. To the web project file, fine, no extra stuff to our pages. Also allow options not to delete new content on the server, for example one of my bigger sites allows uploading of files and so on this site is extremely dynamic, user files constantly change, Code base and ASPX rarely change. But if I am in sync mode and I delete something non .net like a pdf file or something on the test environment, I do not want VS to delete it on syncronization. Instead I would like to have the live site pull that dynamic content down and delete the deleted user stuff from my dev site. That way my dev site is more in sync with what is going on in the real environment.

    Hope that helps you out, I really love the copy feature, but give me a sync feature that works like that I am golden

  4. Tim Hibbard says:

    I think it works well. I only use it for web services and my personal site. I don’t like that it asks you to overwrite files halfway though the process. It makes it hard to push Copy Web and go away for a couple minutes. Maybe an option that says "Always overwrite files".

  5. John Hoge says:

    In my development projects, I like to do as much as possible in SQL Stored Procedures. My present workflow is to use Dreamweaver for front end UI work and Query Analyser to write SPROCs. That way I can build up a file of ALTER PROC and ALTER TABLE statments to go along with a new set of files I am sending with dreamweaver. Once I successfully run the SQL commands and upload the files to a test server, I can do update the production server with confidence.

    If Visual Web Developer writes a lot of the stored procedures through the GUI, how do you maintain a set of changes to be applied to test and production servers? If there is no way to do this, then all the automation features of VWD have a chance of making a big mess in a production environment.

    Thanks