|
KarlKaiser wrote:
Do I sense that this pesky third-tier is intruding on your rarefied world of "pure code"??!!
LOL - well, I'm using C# as well, so it's hardly 'pure' code.
KarlKaiser wrote:
mutually-exclusive technologies.
Not at all, it's just that their resources are pulled in a lot more directions than they would be if they were just creating another database with some programming support.
KarlKaiser wrote:
Well, I don't know how or when MicroSoft's intention to "kill" VFP became "obvious" to you--they certainly never confessed this--but it was only obvious to me in the past 3-4 years.
Yeah, I guess it's been obvious to me for only a little longer than that.
KarlKaiser wrote:
Well I guess it depends on who is paying for your coding. I'm in the business of creating and maintaining a complex vertical market database app. I can't let my preference to code or not code get in the way of optimizing development if I'm going to say in business.
It really takes you that long to write a simple stored proc to do a data update ? I'm paid to work on large ASP.NET systems, I find they work better if I take control of the code that gets run, especially the data layer.
KarlKaiser wrote:
Well now that is kludgy. That means I'll have skeleton records in the server DB during the user's edit session. Then, if they cancel out I'll either have to run Delete calls or else run the whole edit session in a transaction.
No, it means that you don't 'create' the record until the values have been entered. The DataGrid has good support for this sort of behaviour. Why do you need to create a record on the DB before the values have been entered ? I would agree that the disconnection between the defaults you show and the defaults enforced by the DB can be a kludge, unless you don't have defaults in the DB and let the UI enforce them instead.
Basically, ADO.NET moved to a disconnected framework because of ASP.NET - because it's gonna be used a lot on web apps.
KarlKaiser wrote:
...Call me niave, but, it seems to me that if the sqlDataAdapter is already fetching the fields' data types, size, null status, etc. why not fetch the default value and populate it where possible when inserting (locally) a new record?
Because that's not it's job. It's job is to run a query, not to additionally ask for other details that generally aren't needed, and that will hurt performance.
KarlKaiser wrote:
I think a recurrent theme here in our conversation has been MicroSoft's conceit/deceit in positioning .Net in most every communication (from marketing to help documentation) as a powerful dev tool for database applications.
.NET *is* a powerful tool for building database applications, and a great leap forward from the way it was done in C++. A *huge* leap, in fact. I use it for this purpose every day, and I used to use ADO/C++, so I speak from experience. But it's also a great tool for building a ton of other things, and in every case, it's moving away from a more complex coding model, not from a system like Access or FoxPro, which is custom built for one task and therefore does a lot more hand holding, at the expense of a lot of flexibility.
KarlKaiser wrote:
This is especially unfortunate, because over the years I've seen many software ventures either crippled or completely fail for the difference between what MicroSoft says it's tools can do and what they really do.
It's always wise not to take marketing at face value, and to research a vendors claims before betting the farm on them. That holds as true for Microsoft as anyone else.
I'm not remotely claiming that .NET is perfect, or even that it's better than FoxPro at writing databases. I do still think that a lot of the trouble is that you're noticing the things that FoxPro used to do more than the things you can now do in .NET. I was the same when I first moved to C#, from C++ ( although ( still use C++ ). A lot of things I hated, I've come to like, and a lot of thigns I thought were issues turned out not to be. It's only now that I'm doing some C++ work again that I realise all the things C# does for me that I never really noticed, because at the time I was used to doing them myself in C++.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Hi Christian,
It really takes you that long to write a simple stored proc to do a data update ?
Well I am completely new to C# and .Net. I was hoping to at least get some simple data entry forms (against a SQL back-end) created to get a taste of it's capabilities. But it's turning out that I will have several days (weeks?) of study to even get to that level.
I would agree that the disconnection between the defaults you show and the defaults enforced by the DB can be a kludge, unless you don't have defaults in the DB and let the UI enforce them instead.
I think the user should (and would want to) see the default values for new table fields when they create a new record. Also, if a field can't be null, then the run-time environment complains even though a non-null default value is called for at the server side.
I had been hoping to dispense with the data-based data-dictionary that I have used over the years with my apps and to rely more on the properties, constraints, etc. recorded in SQL Server. But it's beginning to look like I'll still have to gain a fair level of knowledge about C# and implement several classes just to develop my applications' basic data maintenance processes.
And so, to curtail my complaints for now, I'll just say that I don't think MS has come as far as they should have with .Net..., given all their resources and their posturing. But enough talk for now. It's time to study up.
Thanks
Take Care,
Karl Kaiser
|
|
|
|
|
KarlKaiser wrote:
But it's turning out that I will have several days (weeks?) of study to even get to that level.
Possibly, depending on where you're coming from.
KarlKaiser wrote:
I think the user should (and would want to) see the default values for new table fields when they create a new record
Then do what I said - enforce defaults in the UI, not the DB.
KarlKaiser wrote:
But enough talk for now. It's time to study up.
Have fun....
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Christian Graus wrote:
It sounds to me like you've locked yourself into a product that, right or wrong, was bought by Microsoft for the express purpose of killing it.
Actually, Microsoft did a very good job with keeping FoxPro alive even though it was in competition with Access. Its only as we entered the .NET world where FoxPro started to get left behind as its language (being data-centric) couldn't be made compliant.
Michael
CP Blog [^] Development Blog [^]
|
|
|
|
|
Hi,
I have been looking into implementing SHA-2 Hashing into my application, but I am unsure if it is available in the .NET Framework. I have read conflicting info on the Net; some says that the SHA256, 384 and 512 are different bit strenght versions of SHA-1 and some say SHA-2. If not does anyone have a C# implementation of SHA-2?
Thanx!
Dave Shaw
History admires the wise, but elevates the brave. - Edmund Morris
|
|
|
|
|
Dave,
Have you read the article Good Bye MD5 by ediazc here on Code Project? It may point you in the direction you want to go.
Paul
|
|
|
|
|
There appears to be a bug in the Region.Union function in GDI+. I see this in programs developed in C# .Net using Visual Studio 2003. I have been using Regions in an application I have been developing and in most cases have had no problems with the Union function. I noticed some occasional glitches in my program and have traced them to this bug in Microsoft's routine. The Union function allows you to build up various shapes/regions together into a region encompassing all the subparts. In the example below I create a Region that is the combination of 3 rectangles. The fact that the rectangles overlap may be what triggers the bug, although the function should be able to work with overlapping areas.
If anyone can prove me wrong I'll be very impressed.
The problem can be demonstrated in this simple test code which responds to the paint event. To run the code, create a C# windows forms application. And put this code in your paint event handler.
The code will draw the outlines of the three rectangles with a black dashed line. The pink area should be the combination/union of the areas of the 3 rectangles. You'll see there is a small area missing that should be filled in pink but its not.
I wasn't able to find anything on the internet regarding this bug so I thought I would post it.
<br />
private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)<br />
{<br />
Rectangle rect1,rect2,rect3;<br />
rect1 = new Rectangle(435,235,50,50);
rect2 = new Rectangle(180,80,250,250);
rect3 = new Rectangle(335,135,250,250);
<br />
Region redrawRegion = new Region();<br />
redrawRegion.MakeEmpty();<br />
redrawRegion.Union(rect1);<br />
redrawRegion.Union(rect2);<br />
redrawRegion.Union(rect3);<br />
using(Brush myBrush = new SolidBrush(Color.Fuchsia))<br />
{<br />
e.Graphics.FillRegion(myBrush,redrawRegion);<br />
}<br />
<br />
using(Pen myPen = new Pen(Color.Black))<br />
{<br />
myPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;<br />
e.Graphics.DrawRectangle(myPen,rect1);<br />
e.Graphics.DrawRectangle(myPen,rect2);<br />
e.Graphics.DrawRectangle(myPen,rect3);<br />
}<br />
}
Any suggestions or comments are welcome.
Steve Knauber
|
|
|
|
|
Hi!
Last week I could play a little bit with Axapta from Microsoft.
I didnt like the GUI and Navigation but I wonder how to build an application
with 7 customizable layers. IMHO SAP or PeopleSoft are similar ? (Country, Industry, partner, Custpomer,..) where each can be edited and
they can still use the same core libraries and businessfunctions ?
How do they do this ? Can anyone pass me links or give me some information how to build such applications ? Maybe just with two layers. Do they use plugins or subclassing ?
Thanks Thomas
|
|
|
|
|
|
I want to call HtmlHelp API function. I include the .h file and specify the incluce and libary directories. Howerver, it continuous give this error "error C2660: 'CWnd::HtmlHelpA' : function does not take 4 arguments".
|
|
|
|
|
I have a C# windows service that depends on time comparisons that is encountering problems due to the time zone on the machine being changed. Unfortunately, this time zone change is outside of my control. I use the TimeZone.CurrentTimeZone.ToUniversalTime() and TimeZone.CurrentTimeZone.GetUtcOffset() methods to make sure all my times are converted and compared as UTC. The problem is that TimeZone.CurrentTimeZone is not updating when the machine's time zone has changed. You can reproduce this easily by creating a console app with the following lines of code, and manually changing your machine's time zone during the app's pause.
Console.WriteLine("Current time zone is {0}.", TimeZone.CurrentTimeZone.StandardName);<br />
Console.Write("Waiting for time zone change. Hit 'Enter' to continue ...");<br />
Console.ReadLine();
Console.WriteLine("Current time zone is {0}.", TimeZone.CurrentTimeZone.StandardName);
Does anyone have any idea about how to refresh or update the TimeZone.CurrentTimeZone? Thanks!
|
|
|
|
|
I think I found a work-around, but I don't fully like it. If I call the GetSystemTime WinAPI function, it seems to always return the correct UTC time.
I got some decent sample code from Anson Goldade's GotDotNet user sample to nicely encapsulate the API calls. Too bad Microsoft's framework methods don't call the API correctly.
|
|
|
|
|
The problem is that the CurrentTimeZone property caches the result for the lifetime of the AppDomain , so you won't see any changes until your AppDomain is restarted.
The simplest option is to use reflection to create a new instance of the internal CurrentSystemTimeZone class. The following code will cache the current time zone for 5 minutes, and allow you to manually refresh the time zone as well:
using System;
using System.Reflection;
public sealed class CurrentTimeZone
{
private const int RefreshAfterMinutes = 5;
private static readonly object _lockMe = new object();
private static readonly Type _timeZoneType;
private static readonly ConstructorInfo _timeZoneConstructor;
private static TimeZone _instance = TimeZone.CurrentTimeZone;
private static DateTime _instanceCreated = DateTime.UtcNow;
static CurrentTimeZone()
{
_timeZoneType = TimeZone.CurrentTimeZone.GetType();
_timeZoneConstructor = _timeZoneType.GetConstructor(
BindingFlags.Instance | BindingFlags.NonPublic,
null, new Type[0], null);
}
private static TimeZone CreateInstance()
{
return (TimeZone)_timeZoneConstructor.Invoke(null);
}
private static void UpdateIfStale()
{
TimeSpan age = _instanceCreated - DateTime.UtcNow;
if (age.TotalMinutes > RefreshAfterMinutes)
{
_instance = CreateInstance();
_instanceCreated = DateTime.UtcNow;
}
}
public static TimeZone Instance
{
get
{
lock(_lockMe)
{
UpdateIfStale();
return _instance;
}
}
}
public static void Refresh()
{
lock(_lockMe)
{
_instance = CreateInstance();
_instanceCreated = DateTime.UtcNow;
}
}
}
All you need to do is replace each instance of TimeZone.CurrentTimeZone with CurrentTimeZone.Instance , and you should see the changes within 5 minutes.
"These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer
|
|
|
|
|
Unfortunately, I need to know the time zone at the exact moment that the code runs, and even 5 minutes late could cause issues.
Anyway, while it's pretty cool, do you really think that your class is the simplest way to fix the problem when you can just call the GetSystemTime API?
|
|
|
|
|
If you just need the current UTC system time, you can simply call DateTime.UtcNow , which will return the same time as calling the GetSystemTime API.
From your initial post, it sounded like you need the current time zone information as well, in which case the code I posted will be the simplest solution.
If you want the current time zone information without any caching, you can simply remove the caching code and always return a new instance:
using System;
using System.Reflection;
public sealed class CurrentTimeZone
{
private static readonly Type _timeZoneType;
private static readonly ConstructorInfo _timeZoneConstructor;
static CurrentTimeZone()
{
_timeZoneType = TimeZone.CurrentTimeZone.GetType();
_timeZoneConstructor = _timeZoneType.GetConstructor(
BindingFlags.Instance | BindingFlags.NonPublic,
null, new Type[0], null);
}
private static TimeZone CreateInstance()
{
return (TimeZone)_timeZoneConstructor.Invoke(null);
}
public static TimeZone Instance
{
get { return CreateInstance(); }
}
}
"These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer
|
|
|
|
|
Thanks, this code will be very useful to me.
However, I just want to point out that in my tests DateTime.UtcNow doesn't return the correct time because of the time zone caching. You can try it yourself by using a test similar to the first one I posted.
|
|
|
|
|
That's very strange. The DateTime.UtcNow property simply calls the GetSystemTimeAsFileTime API to get the current UTC system time. There is no caching involved, so the result should be the same as calling the GetSystemTime API directly.
"These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer
|
|
|
|
|
hey guys!
sorry about my english..
======== the context:
- one WebService "A", where the IIS directory security has only the "Windows Integrated Authentication" enable, and authentication mode is "Windows" on web.config.
- IIS Version 5.1
- one WindowsApplication "B", to call some methods from the WebService "A".
- the user running the WinApp "A", belongs to Administrator Group on both machines ("A" app Machine, and "B" app Machine). User account is the same in both places. this will never change...
- I always need to set the Credentials of my proxy obj before call any webMethod (this happen on "B" app)
======== the problem:
- is kind boring, ask for user insert the UserName, Password and Domain all the time, rigth?!
so, is possible set at runtime this informations, wihtout user interactions?
or some way to set anything on web.config or IIS to workaround this problem?
.. I search how build the Credentials dynamically, I can get the current userName and Domain, but what about the password??
any tip will be great!
thanks!
João Paulo Melo
southBrazil
blitzkrieg bop!!
-- modified at 14:15 Thursday 1st September, 2005
|
|
|
|
|
I do a auction system.this software use CS architectur.The client use tcp to communicate with the server.Now I met a question that the firewall refuse the tcp connection of the listening port.I want to look for a appropriate solution in dot net framework which can resolve this problem.
More over,I plan to development an activex control to work together with the client.This activex control has same functions as the client.As so,the communication solution base on a standard specificat maybe needed (such as webservice).It supports the client and avtivex communicate with the server in the same way.But i am afraid that webservice can't satisfy capability requirement.This system require Quote action complete in 500ms.300 sessions in the same time.
want to get your advices.thanks all.
|
|
|
|
|
A properly designed web service should be more then capable of handling the load you are talking about. With current hardware you shouldn't even need more then one server. As long as your transaction system can handle the load, putting a web service interface in place shouldn't add more then tens of milliseconds to the transaction, and shouldn't add any scalablilty bottlenecks.
I've dealt with webservices handling sub 100ms response time with 5000+ concurrent "sessions" with 3 year old hardware. Since there wasn't a lot of procesing on the web service layer the database server determined performance to a greater extent.
I can imagine the sinking feeling one would have after ordering my book,
only to find a laughably ridiculous theory with demented logic once the book arrives - Mark McCutcheon
-- modified at 23:55 Wednesday 31st August, 2005
|
|
|
|
|
Thank you!
I am sorry I forgot to explain an important factor.When a client quote a new price other clients must get it rapidly.So the clients must check the new price frequently.About every 200ms 1 times.
I want to know the capability in this case.
|
|
|
|
|
In general the true bottlenecks on any system are the network, memory and processor constraints of the systems that your application is running on. What I am saying is that in my experience the .net web service implementation adds a fixed transactional cost based on adding a small amount of processor and memory time and extra message size. You need to test and do a comparison to see if the overhead is too high, but there isn't anything in principle which slow the system down below what you need.
However if your system is already close to the numbers you need then the additional overhead might push you over. The only way to really tell is test.
I can imagine the sinking feeling one would have after ordering my book,
only to find a laughably ridiculous theory with demented logic once the book arrives - Mark McCutcheon
|
|
|
|
|
I am currently working on a phase whose task is to extract each and every frame from an AVI Movie,save it onto Bitmap object and process it.I am doing this task in WEB FORM APPLICATIONS( VISUAL C++ PROJECTS) which is in 1.1 Framework.In visual C++ there is vfw32.lib which serves the purpose.Is there any way to use that lib here.IF there is then how?Or any other library can be used to do the same task?
|
|
|
|
|
Hi all,
I've built a Windows Service wich accepts arguments in the main function so I can execute the exe like MyWindowsServ.exe –install .
I can install the service, I can run it, and everything runs ok.
Now, what I wanted to do was to install the service so when it starts it can take some arguments as well.
If you look at the COM+ Event System service properties (for instance) in your control panel, you can see that the path to executable is something like this C:\WINDOWS\system32\svchost.exe -k netsvcs
Is there a way I can add these arguments to my ProcessInstaller or ServiceInstaller or something like that?
Thanks,
vSoares
|
|
|
|
|
Hi all,
I am new to Pocket PC world.I am working in Pocket PC windows application using C#.NET.I am developing the application similar to MS Paint.I want to do CUT/Copy/Paste,Setting transparency,background every thing.If there is any 3rd party control to serve this purpose.
If so please let me know.
If any body knews coding in C#.Net(For Pocket PC) to do the above mentioned functionalities.Please let me knew.It is very helpfull for me.Thanx in advance.
Regards,
S.Sevugan.
|
|
|
|
|