Thanks for the tips. I definitely agree that being flexible, as far as possible, and changing things in response to design challenges that arise is important.
phil2415
Posts
-
Writing A Database As Back-End For Application Developed By Others -
Writing A Database As Back-End For Application Developed By OthersThanks for the advice. I'm already devising the data model for the database. My idea is that before the developers even arrive, the bulk of the database will be written and SPs in place for handling fundamental operations. I've no doubt that changes will need to be made once the development team starts, but hopefully the basic foundations should be fairly sound.
-
Writing A Database As Back-End For Application Developed By OthersLove the tag, I might have to steal that some time! All the more pleased with it given that I actually did know it!
-
Writing A Database As Back-End For Application Developed By OthersI've written lots of small applications where I work, developing the databases in SQL Server, which is my forte, and the front ends in ASP.NET. When I've been doing it all myself it's been easy because, as the application developer, I know the databases and have no trouble writing ad-hoc queries in the application or, more often, calling Stored Procedures that I've written, knowing what parameters are required, and so on. But now I'm embarking on a much larger project, for which we'll be hiring developers to write the application. I'm just writing the database. My plan was to write well-documented Stored Procedures to perform every operation required on the database - inserting, updating, deleting, retrieving records, and so on, and then letting the developers just call these procedures from the application without them needing to know the database's structure, effectively creating an API. If I have time, I also intended to write web services as an intermediate level for them to use, so that they call these services rather than the Stored Procedures. I don't know how much benefit there is to doing this for the core .NET application, but since we intend to also create mobile apps down the line, the same services could be used for those as well. This morning I've been reading about CRUD and writing RESTful services and so on (not completely understanding it all), and now I'm starting to wonder if I'm missing something. I want to set up an API, so to speak, that will seem sensible, easy to work with and perhaps even familiar to our experienced developers after they are recruited, but since this is the first time I've worked in this way I'm not really sure what they'll be expecting. I want to work in line with best practice to deliver a successful project and an excellent product. Does my proposed plan fit this requirement, or should I be doing something else? EDIT: Maybe I'd get more useful replies if this was in the Web Development thread? Can a mod move it?
-
Best Web Language For ProjectI'm not looking for a definitive answer here, or an argument, but just some clues and some debate. We may be undertaking project soon to develop a reasonably large application for use in-house by several hundred users. It'll have an MSSQL backend and development would likely be on-going to enhance the product after the initial launch. Although I haven't come to a firm conclusion in my mind, I'm very much leaning towards the belief that a browser-based application is the way to go, as opposed to client software installed on users' machines. My question is: What is/are the important languages to consider writing such a web-based application in? I won't be developing this myself, we'll be hiring developer(s), so I need to know which developers to target. I need to know which languages are most ubiquitous, making recruitment of additional/replacement developers easier in future. Are there considerations over speed of development? Which are and are not proprietary, leading to us being vulnerable or otherwise to their owners moving the goalposts or going out of business? Which provide for the fastest, most responsive pages? Which lend themselves to good UX design? I'm quite experienced coding with ASP.NET and VB.NET, and if the applications was written with those I'd be very comfortable as I'd understand it and could potentially even do some of the development myself. I suspect, though, that most of you will suggest ASP.NET doesn't meet my criteria - if so, why not? I don't accept "It's by Microsoft" as an argument (though I do understand why you might make it). If ASP.NET really isn't a viable way to go, I'd like to start learning the basics of whatever language we do decided to go with so that I can at least understand the principles of what's going on. All constructive debate/advice very welcome!
-
iPads, tablets... Does anyone use them for WORK? (Or anything REAL?)Surface is a tablet...
-
iPads, tablets... Does anyone use them for WORK? (Or anything REAL?)I use my Windows Surface tablet extensively for work. With OneNote, it's superb for preparing for meetings, taking notes during them and then writing them up afterwards. Throw in Word and PowerPoint too and it's extremely useful. Also got a lot of mileage from it when writing revision notes for an exam I was revising for recently, taking it down to Starbucks for a change of scene. For that, the touch cover keyboard was invaluable.
-
Off-Server Storage Faster?Ok, maybe some cleverer people than myself can help with this one. We have a business-critical application which runs with a MSSQL backend and generates a lot of documents (letters, etc., in Word and PDF format). At present the documents are just stored in a share on the same server as the database, with the filenames stored in a table and the documents called directly from the application on client computers when requested (I didn't design this, by the way!). A little while ago, due to storage space issues on the server, I decided to move the documents off the server and onto a dedicated NAS (Netgear ReadyNAS 2100) with lots of capacity rather than just beef up the server's disk space. My reasoning was that the network load would be spread between the server and the NAS, instead of the server's NIC handling both database and document traffic. In practice, the performance of opening documents actually decreased dramatically for those departments which I migrated to the NAS, to the point where I halted the migration. Sometimes documents on the NAS open perfectly quickly, and a user will have no speed issues for several minutes or hours. Then, suddenly, one file will take literally a minute or more to open. These are only small Word documents and I'm only talking about a few dozen users who have been migrated. ANYWAY, what I'm getting to is that it's time to replace all of this hardware anyway. I'm about to purchase a very powerful, fast server to replace the DB server. Reviews suggest that its I/O performance is exceptional. But I was also going to purchase a new, high-performance NAS and stick with the topology I've already described. My theory is that the speed issues are being caused by some deep-level communication problem between the Netgear ReadyNAS and the clients, which neither they nor I have been able to get to the bottom of. It still seems like sound reasoning to me that separating database and documents will result in a spread network load and increased performance. Am I wrong? I don't know the technicalities involved in opening a document in a network share. Is it perhaps the case that the process of establishing a connection to the share and opening a file, at least the first time in a session, is much slower than opening the same file stored on the database server, to which a 'connection' is already established due to the user having been using the database? Any discussion or advice on this topic would be greatly appreciated. If stuffing the database server full of disks and
-
Dayta or Darta?I'm definitely a "Dayta" guy. This use of longer forms of vowels to try and sound clever or proper is getting out of control. I got so mad the other day when I heard a newsreader talking about "Irarq" and, worst of all, "Parkistarn". Near where I live a local car dealer used to advertise on the radio (maybe still does). He had a Nissan dealiership and he used to end his adverts with the Nissan slogan of the time, "You can with a Nissan." Except he used to say "You caaaaan with a Nissun." He pronounced the 'a' in Nissan very quickly, like in "doberman". He seemed to have completely missed the point that the slogan was supposed to rhyme! :laugh:
-
Problem Reading Network Packet DataLuc Pattyn wrote:
slightly complex
Slightly?! :p Thanks for the help, I'll crack on and read the documentation!
-
Problem Reading Network Packet DataAnd here was me thinking I'd had a difficult time up until now! I like your analogy - but if this packet contains data in a 'foreign language', what does speak this language? So in theory if I create a loop which works through every byte in the string looking for characters with ASCII values between 32 and 126 and adds them to a string if they match those criteria that should work? /sigh
-
Problem Reading Network Packet DataBy "non-user content" are you referring to the header information and so forth? I'm already ignoring all of that, this is just the part identified as "data" by the packet sniffer. Is there a way to have my code continue to look for text in the string after it encounters a null byte? Or just to read the last characters of the string, which seem to constitute the client name?
-
Problem Reading Network Packet DataI hope nobody gets upset about me starting a new thread - I've posted a couple about this project already but the problems I'm encountering are different each time. The server application I've written in Visual Basic is receiving a packet of data from a client. I have had nothing to do with how the client communicates, and I can't change it - I'm sort of trying to 'reverse engineer' an existing application. A packet sniffer tells me what the data of the packet from the client contains. In hex it is:
414D464D1A000000BD020012FB21CC1F0600000053746F636B73
The same packet sniffer software tells me that this converts to:AMFM....½...û!Ì.....Stocks
The word 'Stocks' at the end is the client name, so obviously that's what I'm trying to obtain. I have no idea what the other bits mean. But when the little application I've written receives this packet and displays the data received it only displays "AMFM". Nothing else. If I change my code to display the hex received and not the ASCII conversion it shows the whole hex code, just as the packet sniffer does. Why does it only show me these first four characters (plus the mysterious box)? How can I get the rest? Oddly enough, when copying the output from the packet sniffer to the clipboard as I wrote this, even though I selected the whole string when I pasted it into my browser window it only pasted "AMFM". What's going on?! -
Replicate Application Network BehaviourAlright, well it seems as if the TCP connection is being established now. The next packet that the client sends contains 26 bytes of data, which I've intercepted and read with a packet sniffer. My VB code receives this package and I've written it to display what's received, but it doesn't show the whole lot, for some reason. While the packet sniffer shows that the packet data contains the client name I only get the first four or five bytes of data displayed from my VB code. The rest seems to be ignored, even though a line I've written in to count the number of bytes indicates that the whole lot is being received. I've used a 'Do While' loop to make sure that the buffer is empty before displaying the data but still I only get those few bytes. Any idea why the packet sniffer is intercepting data in the packet which my application isn't receiving/displaying?
-
Replicate Application Network BehaviourYes, I think it is. But how do I get my application to respond in the same way as the one I'm copying does and allow the connection to be made? Once the server has returned a packet with the syn=1 flag it sends another packet telling the client that it was registered successfully.
-
Replicate Application Network BehaviourWell this is my third post resulting from this project I'm working on, which is taking me right out of my comfort zone! I'm trying to replicate the behaviour of a server application we have which controls various display screens around the building over the network. The application itself is overly complex for our admin staff to use and I want to make my own which replicates just one small function of the original with a very simple UI. I think the networking side is fairly simple but although I'm quite experienced with vb.net I've never delved into the networking side of things before and it's a whole new scary world. Up until now I've successfully got my version to broadcast a UDP packet with the required data, to which the display screens respond with an ICMP echo request. My server automatically replies to the echo (I didn't code that, the machine just does it). After that the client starts sending TCP packets in attempt to register itself with the server, and now that's where I'm stuck. The client is sending a packet which apparently has no data but does have the SYN flag set to 1 and contains various 'options' (I'm getting this from a packet sniffer). When the real application receives that packet it responds with its own packet with the SYN flag as 1 and the ACK flag as 1, as well as the same options. However, because I haven't got the real application running my server machine just responds with a TCP packet with ACK=1 and RST=1, and no options. My question is how do I code in vb.net the receipt of these packets from the client and respond with the correct flags and options? There are some good tutorials online for coding client/server communications using the Sockets class and I've got as far as I have by following these but none of them explain how to set flags and such. I suspect what I'm trying to do is at a lower level. Do I even need to manually create these packets? I'm a bit out of my depth so any help would be very gratefully received!
-
Send Hex code by UDPOk, with a lot more Googling and trial and error I think I finally cracked it!
Dim sText As String = "00 00 84 00 00 00 00 02 00 00 00 00 0A 4D 61 67 69 63 69 6E 66 6F 53 06 4D 4C 49 4E 4B 53 04 5F 75 64 70 05 6C 6F 63 61 6C 00 00 0C 00 01 00 00 00 00 00 1E 1C 31 33 38 32 35 33 31 35 32 30 39 31 30 30 39 32 30 37 4D 61 67 69 63 69 6E 66 6F 53 00 C0 17 00 0C 00 01 00 00 00 1E 00 02 C0 34" Dim sData() As String Dim iByte As Long, lByteCount As Long sData = Split(Trim(sText), " ") lByteCount = UBound(sData) + 1 Dim BData(lByteCount - 1) As Byte For iByte = 0 To lByteCount - 1 BData(iByte) = CByte("&H" & sData(iByte)) Next iByte
-
Send Hex code by UDPThat's really useful, I think I understand now, thank you. But given what you've said what code would I need to actually convert my long string of hex code into a byte array that I can send by UDP?
-
Send Hex code by UDPHello, I'm pretty au fait with VB.NET but a complete novice to programming anything to do with networking. I'm trying to replicate the behaviour of one small part of an application we have so that I can build my own application which will be much simpler for our staff to use to perform that one function. The application is a server program. Anyway, using various network sniffers I've identified the packets that the application sends. It seems that when it starts up it broadcasts a UDP packet over the network, and then the clients respond with ICMP echos, after which further TCP packets are sent to the clients. Well, I'm stuck at the first hurdle! I need, to begin with, to replicate that initial UDP broadcast. Using .NET and lots of Googling I've been able to produce code which will send a UDP packet to the right IP and port. What I'm struggling with is the data of the packet. Because I have the packet as captured in SoftPerfect Network Protocol Analyser (much more user-friendly than Wireshark for my money) I know exactly what the packet should look like and I can even copy the hex of the original packet. I can't then simply stick this hex code into a string and send it over UDP, it doesn't work. Presumably it needs to be in some kind of array, but all the references I can find to this online seem to involve CONVERTING a string to hex or hex to bytes. Surely since I already have the hex no conversion should be necessary? I just want to send it exactly as it is! When I did convert it to a byte array (if that's the right term, this is very new to me) and then sent it the network sniffer picked it up and the data in the packet was very different and much longer than the original one I'm trying to replicate. Any help or advice would be greatly appreciated, from general tips about replicating network packets to actual code I can copy! Thanks in advance.
-
DWORD Time PuzzleThat is fantastic, thank you so much for taking the time. Your code worked perfectly for me and I've been able to extrapolate from that how to convert in the other direction too. I was very close to the code you've written, I'm not exactly sure where I was going wrong, but I don't care any more! Thanks again.