|
I found that I must install windows app desktop templates !!
|
|
|
|
|
Hello friend! I am developing a Windows application (WinForms) to manage universities with c#, it is an application that is very complex because it is a Multi-user application, I want that for this application I can use a single database centralized by all users of this application, which will be managed by myself and my development team. Is this possible? What would be the best and least expensive solution, taking into account my capacity? Also in terms of cost, between a SQL SERVER EXPRESS database and a MySQL database, which one might be better for me? And which one is well suited to C#, using Crystal Report and Visual Studio as well? Your answers will help me a lot to make a decision and also develop an efficient solution.
I'm thinking about whether it's possible to host only my SQL SERVER EXPRESS, or MySQL database to which my Windows software or application designed in C# can connect remotely so that the various users of my device can access the remote database
Thank you for your help
modified 25-Apr-24 10:40am.
|
|
|
|
|
theo tuombe wrote: taking into account my capacity?
You didn't specify anything about capacity.
theo tuombe wrote: to manage universities with c#,
Manage what? Class schedules? Budgets? Lawn care?
theo tuombe wrote: What would be the best and least expensive solution
No idea. Even if you had all of the missing detail anyone that claimed that they could decide both of those would be, let us say, less well informed about the subject than one might hope.
theo tuombe wrote: And which one is well suited to C#
This is one of those factors where "best" has many meanings. If you plan on being a windows shop then staying with windows which means SQL Server is probably going to be the least amount of trouble.
Now if you or others that work on this have experience both in C# and other data persistence stores then there are other options. But then I suspect you would have already been able to evaluate that without asking here.
If you are VERY careful with how you write your code and your design then it is possible that you can switch databases relatively easily if you find you want a different solution. But unfortunately that again is probably dependent on experience.
|
|
|
|
|
Thank you very much Dear jschell for your answer to my question posed in the forum.
"taking into account my capacity?" I mean taking into account the cost,
"managing universities with c#" is really the input errors. To be clear with my question, I wanted to ask that I develop a WinForms application to manage universities with the programming language c#, the application I develop is an application that must manage the entire university including student management, budget management, course management etc.. It's an application that I want, after development, to be able to deploy to different universities, which are then the end users of my application. So I'm asking what solution I can use so that my application installed on different users' computers can use a single database! without error connection to database??
Thank you
modified 25-Apr-24 10:39am.
|
|
|
|
|
This is an extremely ambitious project for someone that doesn't know most database engines are already multi-user capable. The trick is writing your code correctly, so you don't introduce concurrency problems.
Why would you write a multi-user app like this as a desktop app and not as a web app? The one thing you forgot to mention in your description is security for these areas and data.
Do you even know what products universities already use for such management operations? Do you know that is your competition? Do you understand the market at all?
|
|
|
|
|
Thank you dear Dave Kreskowiak, To be clear with my question, I wanted to ask that I develop a WinForms application to manage universities with the programming language c#, the application I develop is an application that must manage the entire university including student management, budget management, course management etc.. It's an application that I want, after development, to be able to deploy to different universities, which are then the end users of my application. So I'm asking what solution I can use so that my application installed on different users' computers can use a single database! without error connection to database??
Thank you
modified 25-Apr-24 10:39am.
|
|
|
|
|
You already said that. Saying it again doesn't change the answers.
For such a massive project, you don't know what you're doing. Just the fact that you even mentioned SQL Server EXPRESS shows you are on a newb level with no idea the scale of the project you're describing.
Think of it this way. You're at a construction site, looking at a very small pile of bricks, trying to ask "how do I build a 100-story skyscraper?" You simply don't understand the scale of the project or the even the requirements of your own idea!
You want a database engine recommendation? Sure. How about SQL Server Enterprise or Oracle Database Enterprise.
|
|
|
|
|
Yes, thank you very much.
I'm not at all an expert in development software, and my experience is limited. In fact, I'm looking for a database engine solution that can work well with this project as I've described it. I was also looking for a database engine that can easily work with C# and Crystal Report because I'd like to use Crystal Report for Reports, and also a database engine that grants the possibility to be deployed either on a server or on a cloud, finally that the application install on different computers users use and access this database that is deployed on a remote server or on cloud.
Your recommendations, suggestions and advice will help me great and will also enable me to develop high-performance software.
Thank you
|
|
|
|
|
Yes, thank you very much.
I'm not at all an expert in development software, and my experience is limited. In fact, I'm looking for a database engine solution that can work well with this project as I've described it. I was also looking for a database engine that can easily work with C# and Crystal Report because I'd like to use Crystal Report for Reports, and also a database engine that grants the possibility to be deployed either on a server or on a cloud, finally that the application install on different computers users use and access this database that is deployed on a remote server or on cloud.
Your recommendations, suggestions and advice will help me great and will also enable me to develop high-performance software.
Thank you
|
|
|
|
|
theo tuombe wrote: I'm not at all an expert in development software, and my experience is limited
And that's why this project is WAY beyond your reach. You simply don't understand the scale of what a university needs to manage all of its operations and how that translates to requirements for your application.
theo tuombe wrote: 'm looking for a database engine solution that can work well with this project as I've described it
Your description is extremely vague at best, and the best suggestion you're going to get is any enterprise database engine.
theo tuombe wrote: I was also looking for a database engine that can easily work with C# and Crystal Report
Database engines do not care at all what language you use to write your application code.
|
|
|
|
|
theo tuombe wrote: I develop is an application that must manage the entire university including student management, budget management, course management etc.. It's an application that I want, after development, to be able to deploy to different universities,
As the others said. It is too big.
I have decades of experience and it would be pointless to attempt this without a well funded company which included years of capital and I expect multiple domain experts.
You can however start by designing ONLY a class management project.
Part 1
1. You must be able to enter the classes at the beginning of a semester. Name of class, Name of teacher, Building, room.
2. Time of the class. Must be able to specify days of week, time of day
3. Must be able to schedule mid terms and final schedules for different times and locations. This is optional since some schools do it and others do not.
4. Must be able to provide url for remote attendence.
5. Provide last sign up date and time.
Part 2
1. Students must be able sign up for class.
2. Class can not exceed size
3. Waiting list must exist.
4. Students must be signed up before sign update date.
Part 3
1. Student must be able to get a report of classes and waiting lists
2. Teacher must be able to get a report of all classes and waiting lists for each.
Part 4
1. Teachers and students must exist in the system. They must be able to log in and log out
Working on above
1. Figure out how a database works. Does not matter which one.
2. Figure out how to make a UI
3. Figure out has to make a client server application. (There are other ways these days but they still are based on this idiom.)
4. Figure out how to securely handle log in/out.
5. Figure out how to tie a UI to a backend.
6. Figure out how to tie a backend to a database.
7. Figure out how to test all of this.
|
|
|
|
|
Look for a project which you can actually succeed at. This is not such a project. Universities already use other products and they will not switch to yours, you have no hope of entering the market.
theo tuombe wrote: very complex because it is a Multi-user application
This statement reveals a serious lack of understanding of software applications.
theo tuombe wrote: managed by myself and my development team
No, that isn't happening. Too expensive for a university.
theo tuombe wrote: access the remote database
Offsite? No mission-critical application should rely on connectivity to resources which are remote.
|
|
|
|
|
theo tuombe wrote: I am developing a Windows application (WinForms) to manage universities with c# In addition to (and perhaps related to) comments made by others, I'd like to suggest that you're approaching the problem of providing a solution for managing information by universities the wrong way. You're starting out by examining technologies you could use to implement a solution. IMHO you should first clearly understand the problem you're trying to solve.
I recommend that you first:
- do a comparative market analysis of existing university information management systems and their capabilities (see Blackboard, Canvas, Moodle, Sakai, D2L Brightspace, Google Classroom for starters)
- identify your potential customer bases (small, medium, large universities, schools, colleges, polytechnics, commercial training institutions, etc.)
- interview each customer base and identify their must-have, nice-to-have and would-love-to-have features
- understand the legal ramifications of product uptime and data storage and access for different geographical regions
Having done this, you'll have a better idea of the scope of your final solution but more importantly the direction you need to take to reach that goal. This will help you decide what technologies to select.
As also stated by others, I think building a Windows desktop application is the wrong thing to do. The fastest way to get a UI product out the door is by building a responsive web app that can be used on all major operating systems (Windows, Mac, Linux, Android and iOS should cover 99% of your users) and types of devices (desktop/laptop, tablet and phone should be sufficient). Not all functionality needs to be available on all devices - you should identify how functionality will be distributed.
I'm a Windows and Android developer first and foremost and not a business person, project manager or product lead. I love to code and live to code. But even I know you need a clear set of product goals and a plan (that could be subject to change) before you can start writing code.
I hope this helps and wish you all the luck in the world. Remember, even if you decide that this may not end up being the right project for you at this time, you've learned something that will help you in future technical ventures.
Good luck!
/ravi
|
|
|
|
|
Thank you so much Dear Ravi Bhavnani, You are truly amazing with very clear and comprehensive ideas, especially that you are not the person who discourages other, rather the person who encourages others to develop himself.
I would liked to be in contact with you in private.
As far as the analysis is concerned, I've already done the basics and I've also found that it's really a project that will solve several needs specifically in our local community. I'm then looking for the technology that can be best adapted to my project.
Thanks again for your suggestions, guides and advice.
modified 29-Apr-24 19:16pm.
|
|
|
|
|
The message above comes from the following code:
public abstract class Indicator : ExtendedIndicator
{
[global::Newtonsoft.Json.JsonIgnoreAttribute]
protected ITradingManager? TradingManager { get; }
}
class MyTradingManager
{
public ITradingManager _tradeManager;
public MyTradeManager(ITradingManager argTradingManager)
{
_tradeManager = argTradingManager;
}
}
internal class SampleIndicator : Indicator
{
MyTradeManager _tradingManager;
public SampleIndicator ()
{
_tradingManager = new(TradingManager ); <- Here the problem occurs !!!
}
}
Any Ideas why I get the error message in the title of this question ?
|
|
|
|
|
You didn't post the whole error message, did you? Please post the entire thing.
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
Hello, please see below for the whole message:
Time Source Message
23.04.2024 09:18:14 ChartData Self referencing loop detected with type 'SampleIndi.SampleIndicator'. Path 'MyTradeManager._tradeManager.TradingVolumeInfo.Drawer.Data.Panels[0].Indicators.$values'.
|
|
|
|
|
Why do you even have that line in the constructor? It doesn't even make sense.
The "SampleIndicator()" constructor doesn't take any arguments, so are you trying to create a new instance of TradingManager for it to hold onto?
The code, as it is now, doesn't make sense at all.
|
|
|
|
|
With the following code:
public SampleIndicator ()
{
_tradeManager = new(TradingManager ); <- Here the problem occurs !!!
}
I want to "inject" TradingManager into my own object _tradeManager which already works as expectet.
The problem is the errors message I get from the logging window of the app that uses my plugin dll.
Unfortunaltely I do not have access to the source code of that app, only to my dll.
|
|
|
|
|
That's not how you do dependency injection.
Your Indicator class is useless as it has no way of setting its TradingManager property. Also, the JsonIgnoreAttribute is only useful if you're serializing the Indicator class to a file. I'm leaving the Indicator out of your code.
class MyTradingManager : ITradingManager
{
... Code to implement the ITradingManager interface ...
}
internal class SampleIndicator : ExtendedIndicator
{
private ITradingManager _tradingManager;
public SampleIndicator(ITradingManager tradingManager)
{
_tradingManager = tradingManager;
}
... Code that uses the ITradingManager implementation ...
}
Note, for this to work, you cannot make SampleIndicator dependent on MyTradingManager. It should take an instance of some implementation of ITradingManager instead. MyTradingManager is that implementation. Whatever code is creating instances of this stuff has to create an instance of MyTradingManager and pass that to the constructor of SampleIndicator:
{
...
ITradingManager manager = new MyTradingManager();
SampleIndicator indicator = new SampleIndicator(manager);
...
}
|
|
|
|
|
public class Student
{
int id = 1234;
String name = "gustav";
bool state = true;
}
It should print:
Student:
1234
gustav
true
|
|
|
|
|
The Student class should NOT CARE AT ALL about outputting anything to the console or other output. It should be just limited to managing the data for a single Student.
One problem I see if your Student class should expose its data in public properties, not fields.
Having said that, whatever UI code is using this class in some way would be responsible for the presentation. To get the properties in the format you specified in your question, the easiest way to return the string would be to override the Student class ToString method and build the formatted string to return to the caller:
public class Student
{
public int ID { get; set; } = 1234;
public string Name { get; set; } = "gustav";
public bool State { get; set; } = true;
.
.
.
public override string ToString()
{
string result = $"{ID}\r\n{Name}\r\n{State}";
return result;
}
}
|
|
|
|
|
Hello,
thank you for the reply.
The underlying problem ist the following.
I want to save the property values of the objects I use in a file and I also want to be able to read it back from that file so that I have a kind of settings file for my app. For logging purposes I also want to be able to print the values to console or file. My understanding was that with serialization this could work.
|
|
|
|
|
Convert the private fields into public properties and you should be able to serialize these values as you see fit.
|
|
|
|
|
This should have been in your original question. What you're looking for is called "serialization". This is the process by which an object is written to a form that can transmitted and read by a matched deserializer and can be accomplished using JSON, XML, and Binary serializers.
My previous answer still stands for most serialization operations, you still need the public properties, but you do not need to override the ToString method.
You can read up on it at Serialization - .NET | Microsoft Learn[^]
|
|
|
|
|