Here's some thoughts on a potential design for a file transfer application. I welcome any input you may have: Purpose Provide a real-time file transfer service that allows users to upload/download files to/from a server and to provide automatic synchronization between the server and the user machines. A user-specified folder structure can be defined on the local machine. When a file or folder is added, modified, or deleted (Known as a Change) in any file or folder in this structure is the added, modified, or deleted on the server accordingly. When a Change occurs, all users must be notified, and automatic folder/file synchronization between the server and the local file structures must be automatic and transparent to the users. Proposed Solution (Prototype) - The local machine will run a FileSystemWatcher hosted by a windows service. - FTP wil be used to transfer files to/from the server. - A SignalR service will be hosted on the server and function as the mechanism for maintainin connection to and communicating Changes Messages between clients. A Change Message contains the following data: 1. Client Id (GUID) - The ID of the client originating the change 2. Item Type - File or Folder 2. Name - Full path and name of the file or folder 4. Action - Create, Modify, Delete 5. Location - Client or Server Use Case 1 - File Added A user drags a file into a folder called c:\TheApp\SomeFolder\MyFile.txt. The file does not already exist in the folder. The FileSystemWatcher detects the new file, FTP's it to the server with progress reporing. Once the upload is commplete then the client transmists a message to the server as such: Client: {6FD41E1C-0057-44E4-B1AA-E0A4A263ABA3} ItemType: File Name: "c:\TheApp\SomeFolder\MyFile.txt" Action New Location: Client The server recieves the message, verifys that the file exists on the server, then generates and sends the following message to all clients except the sender: Client: {6FD41E1C-0057-44E4-B1AA-E0A4A263ABA3} ItemType: File Name: "SomeFolder\MyFile.txt" Action New Location: Server The client recieves the message and then initiates an FTP of the file "SomeFolder\MyFile.txt" to "c:\TheApp\SomeFolder\MyFile.txt". Use Case 2 - Folder Deleted A user removes the folder c:\TheApp\SomeFolder\. The FileSystemWatcher detects the change and transmists a message to the server as such: Client: {6FD41E1C-0057-44E4-B1AA-E0A4A263ABA3} ItemType: Folder Name: "c:\TheApp\SomeFolde
zephaneas
Posts
-
File Sharing App (DropBox) Propose Architecture -
DropBox Type Of AppI'm not sure if I agree with that. From what I can see that's the whole point of WebSockets, and SignalR which is built on it - to maintain a connection to the clients for e purpose of real-time communication.
-
DropBox Type Of AppI am thinking of writing something like DropBox. I'm trying to decide on the right technologies. For the service I will need to upload/download files, and a way to call back to clients with notifications: 1. I tested WCF, but it has been difficult to get working. There's always come config setting that is not right which gives me strange errors. 2. I tested a SignalrR service which was very simple to set up and handles callbacks easily. but from what I can see SignalR doesn't do file upload/download. I thought of converting the file to a byte array, attaching it to a class and sending it to the server, but that doesn't feel right. I need to A) Upload/Download Files B) Call back to the client What's the right service to do with this? Thank you
-
Windows 10 - Taking the PlungeYa I'd be going from 7 to 10
-
Windows 10 - Taking the PlungeI've been curious about Win 10, so I think I'm going to install it on my laptop. Then I can evaluate it without mucking up my Dev PC, and if all goes well, I can use my laptop as a Win 10 test area. Any reason not to upgrade?
-
Specification SoftwareYears ago I looked into developing an app. Initially I thought of it as an app to create and manage specifications. There are some real benefits to this: [] As apposed to a printed spec, it's always up to date. [] Both customer requirements and functional spec could be created. [] A change in a customer requirement automatically updates the functional spec. [] A change in a customer requirement automatically identifies areas of the app that would be effected. [] Both specs could be automatically integrated with scrum or other planning tools. [] Other features such as task management could be included and linked directly to spec requirement items [] Test plans and code snippets could automatically be generated. I've researched Project Management software and what there is no shortage of is scrum/agile tools. I'm thinking that this app would be bigger than that. Consider a tool that initially has a tree like interface where each feature is a node and sub-nodes are subtasks. It could be broken down as far as needed. If smart enough it could produce a Requirements doc for the customer to sign, development/functional documents, test plans, docs, and Test methods directly in the code. I've got this grand idea in my head, and I've only listed some of it here. The ultimate goal would be to streamline the development process from start to finish. What do you guys think? Any value in this?
-
anyone with teaching experience?I ran the Computer Science department at Coleman University for two years. It was a very enjoyable experience. You certainly learn a lot, and there's a lot of enjoyment in seeing student's eyes open when the learn something new. Having said that, be prepared for the sticker shock. Teaching generally does not pay very well.
-
Interview QuestionFor a C# WPF position I got asked "You have an MVC unit- How do you get around dependencies?" I'm not looking for the answer.. I don't even understand the question. What are they asking here? Also, why would this have anything to do with WPF??
-
Considering DropBox ArchitectureI am in the design phase of an app that will have a component like DropBox. There's doesn't seem to be much info on their overall architecture. I'm guessing it's not much more than a folder watcher calling a WCF or MVC service. Any reason I should not follow that model?
-
One Of Life's Deeper QuestionsWhy do hot dogs come in packs of 8, and hot dog buns in packs of 10?
-
Looks like it was suicide:Why, if you're unhappy with life and want to die, do people feel the need to kill everyone around them at the same time.
-
Understanding Async / AwaitI am trying to understand Async, and I have 2 examples, but I don't see the difference: Example 1
static string sampleFile = @"C:\\Projects\\Sandbox\\Async1\\Async1\\somefile.txt"; static void Main(string\[\] args) { Console.WriteLine("Task 1 started"); Task task = new Task(ReadTheFile); task.Start(); task.Wait(); Console.WriteLine("The READ task was started"); Console.ReadLine(); } static void ReadTheFile() { int count = 0; using (StreamReader reader = new StreamReader(sampleFile)) { Console.WriteLine("Reading the file XXXX."); string v = reader.ReadToEnd(); count += v.Length; } Console.WriteLine("Count: " + count); }
Example 2
static void Main(string\[\] args) { Console.WriteLine("Task 1 started"); Task task = new Task(ProcessDataAsync); task.Start(); task.Wait(); Console.WriteLine("The READ task was started"); Console.ReadLine(); } static async void ProcessDataAsync() { Task task = HandleFileAsync(sampleFile); Console.WriteLine("Getting ready to read the file."); int x = await task; Console.WriteLine("Count: " + x); } static async Task HandleFileAsync(string file) { Console.WriteLine("HandleFile enter"); int count = 0; using (StreamReader reader = new StreamReader(file)) { Console.WriteLine("Reading the file."); string v = await reader.ReadToEndAsync(); count += v.Length; } Console.WriteLine("HandleFile exit"); return count; }
They both read in a text file with 1,000,000 lines. The first one actually seems faster. What is the real difference here? Thanks
-
HLOTD (History lesson of the day)They're installing it as a Flight Data Recorder on that plane
-
VS2012 Start Page TemplateThe problem is that all they've provided is the XAML for the start page. No code. It's referring to some resources that are internal to VS2010. And there's no real documentation that I can see.
-
VS2012 Start Page TemplateGoogle gave me lots of links too. But none seem to deal using the VS2010 resources in VS2012/13.
-
Trading Application Position QuestionI have 2 leads on C# WPF positions with Financial Trading Application companies. I'd be interested in hearing from anyone who's every worked in a role as a developer in a company like this. They didn't ask for any prior experience in the industry, but I'm mostly concerned about what prerequisite knowledge I will need going in. Is it math intensive? Do I need a lot of experience with financial calculations? I know every job/company is different, but I'm looking for some general feedback. Both positions are fairly high paying, so I'd like to find out what they're looking for before I dive too deep in. Thanks
-
Need Advice On How To Handle ThisBecause I talked to other people who are there.
-
Need Advice On How To Handle ThisYou misunderstood. I've been talking to the guy daily for 2 years. Since the first of Jan, I've had no contact. I've sent emails, left voicemails, and talked to others at the company and asked them to have him contact me.... no response. I KNOW he's in the office, I KNOW he's getting my messages. He just all of a sudden started ignoring me. I think he's probably decided he's done with the project and doesn't want to settle up. I agree with your prior post that it's only the 12th, but I'm seeing him disappear, so I want to nip it at the bud now. As far a legal, at least here in CA, when you're hired as an independent, YOU own the code. I typically hand over ownership once the project is done and they accept it. So for now, it's within my rights to deny them the use of the app. I don't really want to, but it would get his attention. I could put in a "Login Denied. Please contact..." kind of thing.
-
Need Advice On How To Handle ThisI'm assuming he's done with the project. If so, send me a check and we'll part ways.
-
Need Advice On How To Handle ThisI've been getting paid for 2 years on a monthly basis. Also, we went from talking at least once a day, sometimes twice, to no contact since the first. The app is a WPF app run from a click-once off my server. I could remote in, uninstall it, then disable the click-once. That would get his attention.