Hallo,
ich plane derzeit eine Software, die die Arbeit mehrerer Mitarbeiter einteilt, je nach Auftrag der Kunden. Es soll Kollisionen bei der Bearbeitung mehrerer Aufträge erkennen, einen Auftrag auf mehrere Tage verteilen können und Urlaub einteilen können etc.. Da die Daten an mehreren Rechnern eingegeben werden, sollte es ein Netzwerkfähiges Programm werden.
Das Programm selbst soll koordinieren wann welcher Mitarbeiter für welche Arbeit (mit Angabe des Kundens) eingeplant ist. Ich hatte nun vor, auch wenn ich so etwas vorher noch nie realisiert habe, das ganze als Server Client Architektur aufzubauen.
Zuerst dachte ich das alles in ein zentrales textfile zu schreiben, was aber natürlich sehr ineffizient wäre und vorallem sollen meherere Benutzer gleichzeitig auf die Daten Zugriff haben. Dazu wollte ich nun einen MySQL Server auf einem rechner im Netzwerk laufen lassen. Alle anderen Rechner sollen ein in VB .Net programmierten Client bekommen, die die Datenbank auslesen und manipulieren können. Meine Fragen:
1. Ich habe weder jemals einen SQL server installiert und eingerichtet noch habe ich jemals eine Netzwerkanwendung in VB .Net geschrieben.
--> Ich habe mich über Winsock Programmierung informiert, ist das der richtige ansatz um vom Client an den Server zu kommen? Ado.Net (als stichpunkt zur Datenbankanbindung)?
2. Wie richte ich den Server ein? (Und die Tabellen?) Wie läuft das mit den ODBC Treibern, müssen die auf allen clients installiert werden?
3. Sollte ich ebenfalls ein Serverprogramm als zwischenstück von Datenbank und Clients programmieren oder die Clients direkt auf die Datenbank zugreifen lassen?
4. IST DER GESAMTE ANSATZ ÜBERHAUPT SINNVOLL?
Gibt es vielleicht irgendwelche Tutorials oder wisst ihr wo ich brauchbare infos finde oder kann jmd das zusammenspiel (Datenbank, DBMS,Server,Client in Bezug auf Netzwerk und VB.Net) einmal kurz erklären?
Ich finde vieles zu Netzwerk und zur Datenbankprogrammierung aber nicht in Kombination :(
Danke im Vorraus
Gruß
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
Hi!
Dein Ansatz ist schon soweit (und grob betrachtet) ok. Immerhin wird er von den ganzen "dicken" Paketen, die firmenweit eingestetzt werden genutzt (SAP, Navision, SSA/Baan, P2plus, Oracle usw.).
Die Art der Produktionsplanung und Steuerung, die dir letztendlich vorschwebt, trennt allerdings die Dateneingabe noch zusätzlich von der Verrechnung. Ich wiess nicht, ob dir das schon klar ist: wenn du die Berechnung vom Client durchführen lassen würdest, müssten alle Daten über's Netz. Zusätzlich hättest du noch Probleme, wenn zwei Leute die Verrechnungen parallel anstossen und andere noch Daten hinzufügen.
Die Lösung dieses Dilemmas ist daher i.d.R. noch Programme oder Routinen auf dem Server einzurichten. In der Praxis trennt man dabei die Datenerfassung von der Verrechnung. Die Clients erfassen dann Daten wie Aufträge oder die Kalenderdaten der Mitarbeiter (aus den Kalendern geht hervor, wann wer da ist). Zu gewissen Zeiten wird dann auf dem Server ein Programm angestossen, dass dann die Verrechnung durchführt und die Produktion plant (Batchlauf).
Was die Datenbankinstallation auf dem Server angeht, würde ich nach entsprechenden Tutorials suchen. Das ist ja schliesslich eine Aufgabe, die schon andere lösen mussten. ;-)
Gerade vom MS SQL-Server gibt es ja die Express-Version (kostenlos). Da dürfte MS auf den Supportseiten auch Tutorials bereitstellen. Bei Oracle wird das mit der kostenlosen Testversion auch so sein.
Je nach VB.Net-Umgebung, werden bestimmt native Datenbanktreiber mitgeliefert, so dass man sich um die Einrichtung von ODBC-Treibern keine Gedanken machen muss. falls doch, dann steht bestimmt in einem Tutorial, wie es geht. ;-)
Meine Suche nach Tutorials zum Thema "Zugriff auf SQL-Server unter VB-Net" würde so starten: http://www.google.de/search?hl=de&q=sql-server+zugriff+vb.net&btnG=Suche&meta=
Über konkrete Fragen zum Design der Tabellenstruktur sollte man sich auch noch vor dem Start unterhalten. Ohne saubere Planung in diesem bereich, kann es hinterher haarig werden. ;-)
Bis dann
Andreas
Hey danke für die ausfürhliche Antwort!
Also das ER Modell hab ich im Kopf
Hmm ich habe mir jetzt statt MySQL die Express Version von Microsoft SQL besorgt.
So nun tun sich mir einige konkrete Fragen auf:
Wie erstelle ich ein mdb-File bzw wie modelliere ich jetzt die Tabellen?In der eingabeaufforderung? steig da nicht ganz durch
und dann noch das (nur in der Annahme die Clients würden später direkt auf die Datenbank zugreifen):
Dim objConnection As OleDb.OleDbConnection = _
New OleDb.OleDbConnection _
("Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=D:\Data\Kapitel09\Rechnungen.mdb")
(quelle: klick)
Kann statt dem lokalen pfad da auch ein Netzwerkpfad stehen??
--> In Bezug darauf denke ich aber ich werde es so machen: Ich schreibe ein Server programm, dass wie oben die Datenbankdatei lokal implementiert und auf die Nachrichten der Clients wartet. Ich werde dazu Nachrichten verschicken, die syntakitisch immer gleich aufgebaut sind, quasi wie ein eigenes Protokoll....
Mit der Netzwerkverbndung selbst sollte ich hinbekommen.
Gruß!
Hi!
Zu den Details der Kommunikation und der Anbindung der Clients an die Datenbank, kann ich dir nicht viel sagen - die Systeme, die mich ärgen, haben dass immer bereits. ;-)
Mit dem MS SQL-Server hab' ich privat noch nicht näher zu tun gehabt. Ich würde erwarten, dass es eine Art "Datenbank-Assistenten/Manager/Console" gibt, mit dem man die Tabellen am Server anlegen kann.
Den Server mit einem Netzwerkgebundenen Listener auszustatten ist schon eine Möglichkeit, aber IMHO ist das eigentlich unnötig: wenn die Clients Zugriff auf die Datenbank haben, dann können sie direkt Daten laden und speichern (der Handshake zwischen Datenbankserver und der Clientseite ist damit dann schon erschlagen). Ein eigenes Protokoll wäre dann nicht mehr nötig.
Die Systeme, die ich näher kenne, nutzen zwar ein eigenes Protokoll, dass liegt aber daran, dass sie ihr Client keine eigene Intelligenz besitzt (und der Applikationsserver alle Programme ausführt und den Zugriff auf die Datenbank abwickelt). Die Clients sind dann quasi kleine Terminalserver, die nur Information abfragen und Usereingaben entgegennehmen.
Klassisch sind das spezielle Clients (also auf dem Client ausführbare Programme). Man geht aber zu plattformunabhängigen Clients über, die webbasiert funktionieren (z.B. als Java-Applikation im Webbrowser).
Bis dann
Andreas
Hi!
Ich hab' mir noch ein paar Gedanken durch den Kopf gehen lassen. Mein Arbeitgeber setzt eine selbstentwickelte PHP-basierte Auftragserfassung für Supportzwecke ein. Die Oberfläche bzw. der Client ist dann einfach eine HTML-Seite im Browser.
Wenn mann deine Sache nicht zu komplex ansetzt, dann wäre dass evtl. eine Alternative für dein Vorhaben: Anzeige und Erfassung der Daten mit Hilfe einer PHP basierten Anwendung auf dem Server. Neben der Datenbank muss dann natürlich ein Webserver laufen.
Das erfassen von Aufträgen und die Zuordnung zu einem Mitarbeiter (und die Erfassung der ganzen Stammdaten) müsste man so problemlos abwickeln können. Die Verrechnung bzw. den Planungslauf an sich, könnte man dann über eine auf dem Server laufende Anwendung abwickeln, die z.B. vom Client aus angestossen wird. Da kann man natürlich dann auch wieder VB.net einsetzen.
Muss man IMHO abwegen, was am wenigsten Aufwand bedeutet.
Bis dann
Andreas