2009-04-29 3 views
0

Ich habe zwei Drittanbieter-Komponenten für die PDF-Dokumentgenerierung verwendet (in .NET, aber ich denke, das ist ein plattformunabhängiges Thema). Ich werde die Firmennamen für jetzt herauslassen, aber ich werde sagen, sie sind nicht extrem bekannte Anbieter.Ist es üblich/angemessen, dass Komponenten von Drittanbietern das Dateisystem nicht dokumentiert verwenden?

Ich habe festgestellt, dass beide Produkte undokumentiert Verwendung des Dateisystems machen (d. H. Put temporäre Dateien auf der Festplatte). Das hat ein Problem für mich in meiner ASP.NET-Webanwendung erstellt, da ich jetzt die Dateispeicherorte identifizieren und Berechtigungen für sie entsprechend festlegen muss. Da meine Webanwendung für den Identitätswechsel mit Windows-Authentifizierung eingerichtet ist, bedeutet dies im Wesentlichen, dass ich Schreibberechtigungen für einige Dateispeicherorte auf meinem Webserver zuweisen muss.

Keine große Sache, sobald ich herausgefunden habe, warum die Komponenten versagten, aber ... ich sehe das als ein Wartungsproblem. Was passiert, wenn wir unsere Server auf ein Betriebssystem aktualisieren, das einen der temporären Dateispeicherorte ändert? Was passiert, wenn der Anbieter den Speicherort der temporären Datei ändert? Unsere Anwendung wird "brechen", ohne eine Zeile unseres Codes zu ändern. Zugehörig, aber wenn wir diese Anwendung auf einer "frischen" Maschine (unabhängig von der Umgebung) aufstellen müssen, müssen wir über dieses Problem Bescheid wissen und die Berechtigungen entsprechend festlegen.

Unglücklicherweise bieten die Komponenten keine Möglichkeit, diesen temporären Dateipfad "konfigurierbar" zu machen, was zumindest etwas deutlicher machen würde, was unter den Abdeckungen vor sich geht. Dies ist

nicht wirklich eine Frage, die ich beantworten muss, sondern eher ein Kick-off für ein Gespräch darüber, ob, was diese Komponente Anbieter tun, ist angemessen, wie dies sollte für die Nutzer dokumentiert/mitgeteilt, usw.

Gedanken? Meinungen? Bemerkungen?

+4

Name & Schande, so können wir schäbig Software-Hersteller vermeiden –

+0

Ich weiß nicht die konkrete Antwort für Ihre Frage, aber: wenn .NET, dann Reflektor. (http://www.red-gate.com/products/reflector/) – boj

+0

Guten Ruf auf Reflektor. Ich muss das wirklich in meiner Liste der Fehlerbehebungsschritte für jede Projekt-/Codebasis nach oben verschieben. – Brian

Antwort

2

Zuerst würde ich fragen, ob diese PDF-Generierungstools für die Ausführung in ASP.NET-Anwendungen entwickelt wurden. Machen sie Behauptungen, dass dies etwas ist, das sie unterstützen? Wenn ja, sollten sie eine Dokumentation darüber bereitstellen, wie sie das Dateisystem verwenden und welche Berechtigungen sie benötigen.

Wenn nicht, dann verwenden Sie wahrscheinlich einen ungeeigneten Werkzeugsatz. Ich war hier und habe das getan. Ich arbeitete an einem Projekt, bei dem ein "wohlbekanntes Adress-Lookup-Tool" verwendet wurde, aber die von uns verwendete Version wurde für Desktop-Apps entwickelt. Als solches wurde es nicht geschrieben, um mit 100 Anfragen zu bewältigen - viele gleichzeitig - und es verursachte alle Arten von schwer zu wiederholenden Fehlern.

+0

Ihre Antwort war genau meine erste Antwort. Ich habe dann überprüft, dass beide Apps beworben wurden, um sowohl in einer Web- als auch in einer Client-basierten Umgebung zu arbeiten. Ich kam im Wesentlichen zu dem gleichen Ergebnis. Dies sollte dokumentiert und sehr deutlich gemacht werden. – Brian

+0

Einverstanden - es sei denn, eine Komponente funktioniert "out of the box" oder kommt mit einer klaren Konfiguration/Dokumentation, dann ist es nicht für den Zweck geeignet. Rufe einen Supportanruf auf/bug sie. –

+0

Vielleicht, mit den Namen der Produkte, die Sie verwenden, kann Ihnen jemand die spezielle Konfig-Sauce sagen, die Sie brauchen. –

1

Alltäglich? Ja. Angemessen? normalerweise nicht.

Temp-Dateien sind eine der geeigneten Anwendungen IMHO, solange sie den richtigen% TEMP% -Ordner verwenden oder noch besser, verwenden Sie die integrierten Path.GetTempPath/Path.GetTempFileName-Funktionen.

In einer idealen Welt kommt jede Drittanbieterkomponente mit einer Code Access Security Beschreibung, die im Detail aufführt, was benötigt wird (und für welchen Zweck), aber CAS ist möglicherweise eine der meist ignorierten Funktionen von .net.

+0

Ich habe mich an die Verkäufer um Unterstützung gewandt und habe ein paar gute Antworten von einem bekommen, aber sehr wenig von dem anderen. Das eine Produkt verwendet Path.GetTempPath(). Obwohl es einen standardmäßigen temporären Dateipfad verwendet, ist es in einem Webszenario sehr wahrscheinlich, dass der Webserver gesperrt ist und keine Schreibberechtigungen für diesen Speicherort zulässt (was in meinem Fall der Fall war). Einverstanden auf der CAS-Kommentar. – Brian

+0

Ich habe gerade überprüft und gesehen, dass Medium Trust (was bei vielen Hostern der Standard ist) tatsächlich nicht erlaubt, außerhalb der Hierarchie der Anwendung zu schreiben. Nicht sicher, wie viele Anbieter dies testen, da Medium Trust ein häufiges Problem darstellt. Ich sehe viele Projekte, die zuerst veröffentlicht werden, und DANN wurden dann mit Medium Trust kompatibel gemacht, wenn Kunden sich beschweren. Schmerzhaft, weil es normalerweise keinen Grund gibt, Full Trust in einer ASP.net-Anwendung auszuführen. –

+0

Etwas unzusammenhängend, aber interessant für Anbieter und Benutzer: http://stackoverflow.com/questions/275444/ –

0

Schreiben von temporären Dateien würde nicht außerhalb der normalen Funktion irgendeiner Software betrachtet werden. Es sei denn, dass es Temp-Dateien an einen wirklich bizarren Ort schreibt, scheint dies eher etwas zu sein, von dem sie nie dachten, es zu dokumentieren, anstatt ihnen aus dem Weg zu gehen, um Ihnen Ärger zu machen. Ich würde einfach den Verkäufer kontaktieren, erklären, was Sie tun und fragen, ob sie Dokumentation zur Verfügung stellen können.

Auch Martin macht einen guten Punkt darüber, ob es eine App ist, die mit Asp.net oder einer Desktop-App laufen sollte.

+0

Würde die Anwendung root/bin-Verzeichnis als "bizarr" betrachtet werden? In einer Web-App denke ich schon. Ich glaube nicht, dass die Anbieter das absichtlich gemacht haben, ABER ich denke, dass sie das besser dokumentieren müssen. – Brian