ข้อเสียของแพลตฟอร์ม Force.com [ปิด]


89

ขณะนี้เรากำลังพิจารณาการใช้แพลตฟอร์มForce.comเป็นแพลตฟอร์มการพัฒนาของเราพนักงานขายและเว็บไซต์ force.com เต็มไปด้วยเหตุผลว่าทำไมจึงเป็นแพลตฟอร์มที่ดีที่สุดในโลก สิ่งที่ฉันกำลังมองหาคือข้อเสียที่แท้จริงในการใช้แพลตฟอร์มดังกล่าว


โพสต์นี้เก่ามาก แต่ Salesforce ยังคงน่ากลัวอย่างยิ่งที่จะพัฒนาต่อไปแม้ 8 ปีต่อมาฉันก็ยังพบว่ามันน่าประหลาดใจที่ต้องใช้เวลาและความพยายามในการแก้ไขข้อบกพร่องมากมาย
NickJ

คำตอบ:


142

นี่คือ 10 ข้อที่จะช่วยคุณเริ่มต้น

  1. เอเพ็กซ์เป็นภาษาที่เป็นกรรมสิทธิ์ นอกเหนือจากปลั๊กอิน force.com Eclipse แล้วยังมีเครื่องมือเพียงเล็กน้อยหรือไม่มีเลยเช่นการปรับโครงสร้างใหม่การวิเคราะห์โค้ดเป็นต้น
  2. Apex ถูกสร้างแบบจำลองบน Java 5 ซึ่งถือว่าล้าหลังกว่าภาษาอื่น ๆ และไม่ต้องใช้เครื่องมือ (ดู # 1) อาจเป็นเรื่องยุ่งยาก
  3. การปรับใช้งานยังคงเป็นแบบแมนนวลโดยมี gotchas และขั้นตอนด้วยตนเองมากมาย สถานการณ์นี้ค่อยๆดีขึ้นเมื่อเวลาผ่านไป แต่คุณจะผิดหวังหากคุ้นเคยกับการปรับใช้งานอัตโนมัติ
  4. Apex ไม่มีแพ็คเกจ / เนมสเปซ คลาสอินเทอร์เฟซและอื่น ๆ ทั้งหมดของคุณอยู่ในโฟลเดอร์เดียวบนเซิร์ฟเวอร์ สิ่งนี้ทำให้โค้ดมีการจัดระเบียบน้อยลงและชื่อคลาส / อินเทอร์เฟซจำเป็นต้องยาวเพื่อหลีกเลี่ยงการขัดแย้งของชื่อและเพื่อให้บริบท นี่เป็นหนึ่งในข้อร้องเรียนที่ใหญ่ที่สุดของฉันและฉันจะไม่เลือกที่จะสร้างบน force.com อย่างอิสระด้วยเหตุผลนี้เพียงอย่างเดียว
  5. "force.com IDE" หรือที่เรียกว่าปลั๊กอิน force.com eclipse ทำงานช้าอย่างไม่น่าเชื่อ การบันทึกไฟล์ใด ๆ ไม่ว่าจะเป็นไฟล์คลาสไฟล์ข้อความ ฯลฯ โดยปกติจะใช้เวลาอย่างน้อย 5 วินาทีและบางครั้งอาจนานถึง 30 วินาทีขึ้นอยู่กับจำนวนออบเจ็กต์ประเภทข้อมูลไฟล์คลาส ฯลฯ ในองค์กรของคุณ การบันทึกยังเป็นการดำเนินการบล็อกซึ่งไม่เพียงต้องการการคอมไพล์เท่านั้น แต่ยังต้องซิงค์โปรเจ็กต์ภายในเครื่องของคุณกับเซิร์ฟเวอร์อย่างสมบูรณ์ คำสั่งขนาดช้ากว่า Java หรือ. NET
  6. ชุมชนนักพัฒนาออนไลน์ดูเหมือนจะไม่ค่อยดีนัก ฉันสังเกตเห็นว่าโพสต์ในฟอรัมจำนวนมากไม่มีคำตอบหรือไม่ได้รับการแก้ไข ฉันคิดว่าสิ่งนี้อาจเกี่ยวข้องกับการใช้ซอฟต์แวร์ฟอรัมที่ salesforce.com ซึ่งดูเหมือนจะค่อนข้างยาก
  7. DSL การเข้าถึงข้อมูลใน Apex ทำให้เป็นที่ต้องการอย่างมาก มันไม่ได้แข่งขันจากระยะไกลกับไลค์ (N) Hibernate, JPA และอื่น ๆ
  8. การพัฒนาแอปบน Apex / VisualForce เป็นการออกกำลังกายในผู้ว่าการ จำกัด วิศวกรรม ใช้เวลาครึ่งหนึ่งของโปรแกรมเมอร์อย่างง่ายดายในการพยายามปรับให้เหมาะสมเพื่อหลีกเลี่ยงขีด จำกัด ของผู้ว่าการรัฐและ gotcha อื่น ๆ เช่นการ จำกัด สถานะมุมมองของ Visualforce อาจเป็นที่ถกเถียงกันอยู่ว่าถ้าคุณเขียนโค้ดที่มีประสิทธิภาพเพื่อเริ่มต้นคุณจะไม่มีปัญหานี้ซึ่งเป็นความจริงในระดับหนึ่ง อย่างไรก็ตามมีหลายครั้งที่คุณมีเหตุผลที่ถูกต้องในการสร้างแบบสอบถามมากกว่า x ในเซสชันหรือวนซ้ำมากกว่า x ระเบียนเป็นต้น
  9. วงจรการรัน save-> compile-> นั้นช้ามากโดยเฉพาะ เมื่อเกี่ยวข้องกับการบีบอัดและการอัปโหลดบันเดิลทรัพยากรแบบคงที่ทั้งหมดเพื่อทำบางสิ่งเช่นทดสอบการเปลี่ยนแปลง CSS หรือจาวาสคริปต์เล็กน้อย
  10. โดยทั่วไปแล้วความเจ็บปวดของแพลตฟอร์มที่ยังเยาว์วัยโดยไม่ได้ประโยชน์จากการเป็นโอเพ่นซอร์ส คุณไม่มีทางตรวจสอบและ / หรือแก้ไขข้อบกพร่องในแพลตฟอร์มได้ พวกเขาบอกว่าจะโพสต์ลงใน IdeaExchange ใช่ขอให้โชคดี

การปฏิเสธความรับผิดชอบ / การเปิดเผยข้อมูล: มีประโยชน์มากมายสำหรับแพลตฟอร์มที่โฮสต์เช่น force.com Force.com ปรับปรุงแพลตฟอร์มอย่างสม่ำเสมอ มีหลายสิ่งหลายอย่างเกี่ยวกับเรื่องนี้ที่ฉันชอบ ฉันสร้างรายได้จาก Force.com


4
นั่นเป็นรายการที่ยอดเยี่ยมที่คุณมี
lomaxx

1
ฉันชอบ force.com ถ้าพวกเขาจัดการโฮสต์ไซต์และฉันสามารถรับข้อมูลของฉันได้ไม่ใช่แค่บริการเสริมหรือผ่าน API บางตัว แต่รวมถึงทุกคืน สำรองข้อมูลชุดข้อมูล Oracle ของฉัน พนักงานขายเสนอสิ่งนี้หรือไม่? ฉันไม่เคยได้รับคำตอบที่ตรงจากพนักงานขายของพวกเขาซึ่งฉันมักจะตอบว่าไม่
Chris K

3
พวกเขาไม่ได้ให้สิทธิ์เข้าถึงข้อมูลของคุณแบบ "ดิบ" มีบริการสำรองที่ให้ซิป CSV ขององค์กรของคุณเป็นประจำ นอกจากนี้ยังมี API การจำลองแบบที่ช่วยให้คุณสามารถสำรองข้อมูลแบบเคียงข้างกันในแบบเรียลไทม์หลอก
Jeremy Ross

@Jeremy จากความอยากรู้อยากเห็น ... คุณใช้เวลาเท่าไหร่ในปลั๊กอิน eclipse ide เทียบกับการตั้งค่าในเมนู "ตั้งค่า" ภายในแอปพลิเคชัน Salesforce?
lomaxx

1
โดยส่วนตัวแล้วฉันใช้เวลา 90% ในคราสหรือโปรแกรมแก้ไขข้อความ (ในกรณีของฉันคือ TextMate) แต่นั่นเป็นเพราะคนอื่นมักจะกำหนดค่าข้อมูลพื้นฐานจำนวนมาก การกำหนดค่าออบเจ็กต์และฟิลด์แบบกำหนดเองจะทำใน salesforce.com ไม่ใช่โค้ดเนื่องจากไม่มี DDL ในโลกของ force.com มี metadata api แต่ฉันไม่เคยใช้ระหว่างการออกแบบข้อมูล
Jeremy Ross

38

ฉันเห็นว่าคุณได้รับคำตอบแล้ว แต่ฉันอยากจะย้ำอีกครั้งว่าต้องเสียเวลาไปเท่าไหร่ในการหลีกเลี่ยงข้อ จำกัด ต่างๆบนแพลตฟอร์ม เท่าที่ฉันชอบแพลตฟอร์มในบางระดับฉันขอแนะนำอย่างยิ่งเป็นอย่างยิ่งและเป็นอย่างมากในฐานะแพลตฟอร์มการพัฒนาแอปพลิเคชันทั่วไป มันยอดเยี่ยมในฐานะแอปพลิเคชัน CRM ที่กำหนดค่าได้และขยายได้อย่างยอดเยี่ยมหากนั่นคือสิ่งที่คุณต้องการ ในขณะที่การตลาดของพวกเขายอดเยี่ยมในการผลักดันแนวคิดของ Force.com ในฐานะแพลตฟอร์มการพัฒนาทั่วไป แต่ก็ยังไม่ปิดจากระยะไกล

ประสิทธิภาพของการมีแพลตฟอร์มที่เสถียรและการหลีกเลี่ยงปัญหาด้านประสิทธิภาพและความเสถียรที่ยิ่งใหญ่นั้นเสียไปอย่างง่ายดายในการพยายามเขียนโค้ดให้เกินขีด จำกัด ที่ผู้คนอ้างถึง มีข้อ จำกัด มากมายสำหรับแพลตฟอร์มมันกลายเป็นเรื่องที่น่ารังเกียจอย่างยิ่ง ขีด จำกัด เหล่านี้ไม่ใช่ขีด จำกัด ระดับไฮเอนด์ที่คุณจะได้รับเมื่อคุณมีผู้ใช้จำนวนมากคุณจะถึงขีด จำกัด ในทันที

แม้ว่าโดยทั่วไปจะมีเทคนิคในการหลีกเลี่ยงพวกเขา แต่ก็ยากที่จะหากลยุทธ์ในการหลีกเลี่ยงพวกเขาในขณะที่คุณพยายามพัฒนาตรรกะทางธุรกิจของแอปพลิเคชันจริงของคุณด้วย

เพื่อให้คุณเข้าใจง่าย ๆ ว่านักพัฒนาซอฟต์แวร์ไม่เป็นมิตรกับสภาพแวดล้อมอย่างไรให้ใช้ "สภาพแวดล้อมที่ไม่มีการแก้ไขจุดบกพร่อง" ที่อ้างถึงข้างต้น มันแย่ไปกว่านั้น คุณสามารถดูคำขอล่าสุดไปยังเซิร์ฟเวอร์ได้สูงสุด 20 รายการในบันทึกการแก้ไขข้อบกพร่อง ดังนั้นในขณะที่คุณกำลังพัฒนาในแอปพลิเคชันคุณจะต้องสร้างคำขอดีบัก "ใหม่" เลือกชื่อของคุณกด "บันทึก" เปลี่ยนกลับไปที่แอปของคุณรีเฟรชหน้าคลิกกลับไปที่แท็บแก้ไขข้อบกพร่องของคุณพยายามค้นหา คำขอที่จะเก็บบันทึกการแก้ไขข้อบกพร่องของคุณให้กด "ค้นหา" เพื่อค้นหาข้อความที่คุณต้องการ เหมือนกับการคลิกสิบครั้งเพื่อดูผลลัพธ์การแก้ไขข้อบกพร่อง แม้ว่าจะดูเป็นเรื่องเล็กน้อย แต่ก็เป็นเพียงตัวอย่างของการเอาใจใส่และการพิจารณาเพียงเล็กน้อยต่อประสบการณ์ของผู้พัฒนา

ทุกอย่างเกี่ยวกับแพลตฟอร์มการพัฒนาเป็นสิ่งที่ต้องพิจารณาในภายหลัง มันน่าทึ่งสำหรับสิ่งที่เป็นอยู่ แต่ PITA ทั้งหมดเป็นส่วนใหญ่ หากคุณไม่ทราบแน่ชัดว่ากำลังทำอะไรอยู่ (เช่นเดียวกับที่คุณได้รับการรับรองและมีความเข้าใจอย่างใกล้ชิดเกี่ยวกับ Apex) จะทำให้คุณใช้เวลาได้มากกว่า 10-20 เท่าในสภาพแวดล้อมอื่น สิ่งที่ดูเหมือนว่ามันจะเรียบง่ายอย่างน่าขันหากคุณสามารถประสบความสำเร็จได้เลย

การ จำกัด ผู้ว่าราชการจังหวัดนั้นแย่มาก คุณมีขีด จำกัด ต่างๆรวมกัน (แบบสอบถามฐานข้อมูลแถวที่ส่งคืน "คำสั่งสคริปต์" การโทรในอนาคตข้อความเสริม ฯลฯ ) และคุณต้องรู้ว่าคุณกำลังทำอะไรอยู่เพื่อหลีกเลี่ยงสิ่งเหล่านี้ ตัวอย่างเช่นหากคุณมีฟิลด์ "สูตร" ค่าสะสมที่คำนวณบนออบเจ็กต์และคุณมีทริกเกอร์บนออบเจ็กต์ลูกก็จะดำเนินการทริกเกอร์ออบเจ็กต์หลักและนับสิ่งเหล่านั้นกับขีด จำกัด สิ่งต่างๆเช่นนั้นจะไม่ชัดเจนจนกว่าคุณจะผ่านกระบวนการที่เจ็บปวดจากการพยายามและล้มเหลว

คุณจะพยายามทำสิ่งหนึ่งเพื่อหลีกเลี่ยงขีด จำกัด หนึ่งและเอาชนะอีกอย่างในเกม "ตีขีด จำกัด " ที่ไม่มีวันสิ้นสุด ในขั้นตอนนี้คุณจะต้องออกแบบแอปและวิธีการทั้งหมดของคุณใหม่อย่างมากรวมทั้งเขียนโค้ดทดสอบใหม่ทั้งหมด คุณต้องมีความครอบคลุมของรหัสทดสอบ 75% เพื่อปรับใช้ในการผลิตซึ่งจริงๆแล้วเป็นสิ่งที่ดีมาก แต่เมื่อรวมกับข้อ จำกัด อื่น ๆ ทั้งหมดแล้วมันเป็นภาระมาก คุณจะได้รับขีด จำกัด ในการเขียนรหัสทดสอบของคุณซึ่งจะไม่เกิดขึ้นในสถานการณ์ผู้ใช้ปกติ แต่จะป้องกันไม่ให้คุณบรรลุความครอบคลุม

นั่นไม่ต้องพูดถึงประเด็นอื่น ๆ ทั้งหมด บรรจุภัณฑ์ไม่ใช่สิ่งที่คุณคาดหวัง คุณไม่สามารถจัดแพ็กเกจแอปของคุณและส่งมอบให้กับผู้ใช้โดยไม่มีการแทรกแซงและกำหนดค่าของผู้ใช้ที่สำคัญในส่วนของผู้ดูแลระบบขององค์กร AppExchange เป็นเรื่องตลกโดยสิ้นเชิงและพวกเขาได้เริ่มชาร์จ 5K เพื่อให้แอปของคุณแสดง การนำเข้าด้วยตัวโหลดข้อมูลนั้นไม่ดีโดยเฉพาะอย่างยิ่งหากคุณมีทริกเกอร์ใด ๆ คุณไม่สามารถส่งออกข้อมูลทั้งหมดของคุณในขั้นตอนเดียวที่มีความสัมพันธ์ของคุณในลักษณะที่สามารถนำเข้าอีกครั้งไปยังองค์กรอื่นได้อย่างง่ายดายในขั้นตอนเดียว (เช่น dev org) คุณสามารถรีเฟรชแซนด์บ็อกซ์ได้เดือนละครั้งจากการใช้งานจริงไม่มีข้อยกเว้นและคุณไม่สามารถรวมข้อมูลของคุณในการรีเฟรชตามค่าเริ่มต้นเว้นแต่คุณจะโทรหาผู้บริหารบัญชีของคุณเพื่อปลดล็อกคุณลักษณะนั้น คุณสามารถ' t ลบข้อมูลจำนวนมากในวัตถุที่กำหนดเอง คุณไม่สามารถเปลี่ยนชื่อแพ็กเกจของคุณ บางสิ่งอาจเกิดขึ้นมากมายวันที่จะเสร็จสมบูรณ์หลังจากที่คุณร้องขอเช่นการสำรองข้อมูลก่อนที่คุณต้องการทำให้แอปใช้งานได้โดยไม่มีรายงานความคืบหน้าระหว่างทางและไม่ทราบว่าการส่งออกเกิดขึ้นเมื่อใด เนื่องจากมีปัญหาความซิงโครไนซ์ของข้อมูลหากมีความสัมพันธ์ระหว่างข้อมูลจึงมีปัญหาด้านความสมบูรณ์ของข้อมูลที่ร้ายแรงซึ่งไม่มีสิ่งที่เรียกว่า "ธุรกรรม" ที่สามารถส่งออกวัตถุจำนวนมากได้ในขั้นตอนเดียว อาจมีเครื่องมือเชิงพาณิชย์บางอย่างเพื่ออำนวยความสะดวกในบางส่วน แต่สิ่งเหล่านี้ไม่สามารถเข้าถึงได้สำหรับนักพัฒนาทั่วไปที่อาจไม่มีงบประมาณมาก

ทุกอย่างที่คนอื่นพูดมานี้เป็นความจริง บางครั้งอาจใช้เวลาตั้งแต่ห้าวินาทีถึงหนึ่งนาทีในการบันทึกไฟล์

ฉันไม่ได้ตั้งใจที่จะมองโลกในแง่ลบเพราะแพลตฟอร์มนั้นเจ๋งมากในบางวิธีและพวกเขากำลังพยายามทำสิ่งต่างๆในสภาพแวดล้อมที่มีผู้เช่าหลายรายที่ไม่มีใครทำ เป็นสภาพแวดล้อมที่แปลกใหม่และทรงพลังในบางระดับ (จริงๆแล้วฉันชอบ VisualForce มาก) แต่ให้เวลาอีกปีหรือสองปี พวกเขากำลังร่วมมือกับ VMware ซึ่งอาจจะนำไปสู่การทำให้นักพัฒนามีส่วนช่วยในการเล่นมากกว่าที่จะเป็นห้องขังในการทำงาน


อีก 2 ปีหลังจากคำตอบนี้แล้วแพลตฟอร์มทุกวันนี้ล่ะ? ได้รับการปรับปรุงแก้ไขปัญหาที่ยุ่งยากบางอย่างหรืออย่างน้อยก็แก้ไขได้
Yaroslav

ฉันอยากรู้เหมือนกันว่ามีการเปลี่ยนแปลงหรือไม่ในช่วง 2 ปีนั้น
magallanes

5
ฉันไม่สามารถแสดงความคิดเห็นเกี่ยวกับ AppExchange ได้ แต่ฉันพบชุดข้อความนี้หลังจากที่ "salesforce.com sucks" เข้าสู่ Google ด้วยความไม่พอใจกับทริกเกอร์และขีด จำกัด ของผู้ว่าราชการจังหวัดและกระโดดข้ามห่วงเพื่อจัดการกับข้อมูลที่เรียบง่ายมาก .... เอาตามที่คุณต้องการ;)
BLSully

1
@Yaroslav ฉันจะเห็นคุณสองปีและเพิ่มอีกสามและเปลี่ยนแปลง มีการปรับปรุงโทเค็นบางอย่าง แต่โดยมากคำตอบนี้ยังคงถูกต้อง

25

นี่คือบางสิ่งที่ฉันสามารถให้คุณได้หลังจากใช้เวลาพอสมควรในการพัฒนาแพลตฟอร์มในช่วงสองสัปดาห์ที่ผ่านมา:

  1. ไม่มี RESTful API พวกเขามี API ที่ใช้สบู่ที่คุณสามารถโทรได้ แต่ไม่มีวิธีใดที่จะโทรออกอย่างสงบ

  2. ไม่มีวิธีง่ายๆในการนำ SObjects และแปลงเป็นออบเจ็กต์ JSON

  3. หน้าบังคับภาพใช้ได้จนกว่าคุณจะต้องการปรับแต่งและจากนั้นก็เป็นโลกแห่งความเจ็บปวด

  4. เพจบังคับวิชวลต้องถูกผูกไว้กับ SObjects มิฉะนั้นจะไม่มีทางรับฟิลด์อินพุตมาตรฐานเช่น datepicker หรือเลือกรายการที่จะทำงาน

  5. ปลั๊กอิน eclipse ใช้ได้ถ้าคุณต้องการทำงานด้วยตัวเอง แต่ถ้าคุณต้องการทำงานเป็นทีมขนาดใหญ่ด้วยปลั๊กอิน eclipse ก็อย่าลืม ไม่จัดการการซิงโครไนซ์ไปยังและจากเซิร์ฟเวอร์ขัดข้องและไม่เป็นประโยชน์เลย

  6. ไม่มีการแก้ปัญหา! หากคุณต้องการดีบักมันจะถูกดีบักโดยคำสั่ง system.debug อย่างแท้จริง นี่อาจเป็นปัญหาใหญ่ที่สุดที่ฉันพบ

  7. โมเดล "MVC" ของพวกเขาไม่ใช่ MVC จริงๆ ใกล้เคียงกับ ASP.NET Webforms มากขึ้น มุมมองของคุณไม่เพียงควบคู่ไปกับตัวแบบเท่านั้น แต่ยังรวมถึงตัวควบคุมด้วย

  8. การจัดเก็บเอกสารจำนวนมากไม่สามารถทำได้ เราจำเป็นต้องจัดเก็บเอกสารกว่า 100GB และเราถูกอ้างถึงตัวเลขที่ไร้สาระ เราได้ตัดสินใจใช้พื้นที่จัดเก็บเอกสารของเราบนโครงสร้างพื้นฐานของ amazons S3

  9. แม้ว่าภาษาจะใช้ Java แต่ก็ไม่ใช่ Java คุณไม่สามารถนำเข้าแพ็กเกจหรือไลบรารีภายนอกใด ๆ นอกจากนี้ไลบรารีฐานที่พร้อมใช้งานยังมีข้อ จำกัด อย่างมากดังนั้นเราจึงพบว่าตัวเองใช้งานสิ่งต่าง ๆ มากมายจากภายนอกและเปิดเผยบิตเหล่านั้นเป็นบริการที่เรียกโดย force.com

  10. คุณสามารถเรียกใช้ SOAP ภายนอกหรือบริการที่ใช้ REST ได้ แต่เนื้อหาของข้อความถูก จำกัด ไว้ที่ 100kb ดังนั้นจึงมีข้อ จำกัด ในสิ่งที่คุณสามารถเรียกได้

ด้วยความสัตย์จริงในขณะที่มีประโยชน์ที่เป็นไปได้ในการพัฒนาบางอย่างเช่นแพลตฟอร์ม force.com สำหรับฉันคุณไม่สามารถใช้แพลตฟอร์ม force.com สำหรับแอประดับองค์กรที่แท้จริงได้ อย่างดีที่สุดคุณสามารถเขียนแอปพลิเคชั่นสไตล์ crud ขั้นพื้นฐานได้ แต่เมื่อคุณย้ายไปสู่สิ่งที่ซับซ้อนจากระยะไกลฉันจะหลีกเลี่ยงมันเช่นโรคระบาด


16
RESTful API พร้อมใช้บังคับแล้ว
mirezus

3
JSON Serialization และ De-Serialization พร้อมใช้งานสำหรับ Non SObject
kadalamittai

คุณรวมที่จัดเก็บเอกสาร Amazon ของคุณกับ Salesforce ได้อย่างไร (สมมติว่าคุณทำ)
Michael Paulukonis

ขณะนี้มีดีบักเกอร์ แต่มีค่าใช้จ่ายเพิ่มเติม บันทึกประจำรุ่น Winter '16
มาร์ติน

14

ว้าว - มีหลายอย่างที่ฉันไม่รู้ด้วยซ้ำว่ามีข้อ จำกัด - หลังจากทำงานบนแพลตฟอร์มได้ไม่กี่ปี

แต่เพื่อเพิ่มสิ่งอื่น ๆ ...

เหตุผลที่คุณไม่มีดีบักเกอร์ทีละบรรทัดนั้นเป็นเพราะมันเป็นแพลตฟอร์มที่มีผู้เช่าหลายราย อย่างน้อยนั่นคือสิ่งที่ SFDC กล่าว - ดูเหมือนว่าในยุคของการเขียนโปรแกรมที่มีเธรดที่สมบูรณ์นี้ไม่ใช่ข้ออ้างมากนัก แต่นั่นเป็นเหตุผล หากคุณต้องเขียนโค้ดคุณต้องมี "System.debug (String)" เป็นดีบักเกอร์ - ฉันจำได้ว่ามีเครื่องมือดีบักเซิร์ฟเวอร์ที่ซับซ้อนกว่าใน Java 1.2 เมื่อ 12 ปีก่อน

อีกสิ่งหนึ่งที่ฉันเกลียดมากเกี่ยวกับระบบคือการควบคุมเวอร์ชัน Spring framework ไม่ได้ใช้สำหรับสิ่งที่ Spring มักใช้ - เป็นเครื่องมือกำหนดค่าใน SFDC มากกว่าการควบคุมเวอร์ชัน SFDC ให้การควบคุมเวอร์ชัน ZERO

คุณสามารถพบว่าตัวเองติดอยู่เป็นเวลาหลายวันในการทำบางสิ่งที่ดูเหมือนจะง่ายอย่างน่าขันเช่นการตั้งเวลารายงาน SFDC เพื่อส่งออกเป็นไฟล์ CSV และส่งอีเมลไปยังรายชื่อผู้รับ ... วิธีที่ง่ายที่สุดในการทำเช่นนั้นคือ สร้างออบเจ็กต์แบบกำหนดเองด้วยฟิลด์แบบกำหนดเองด้วยกฎเวิร์กโฟลว์และเทมเพลตอีเมล Visualforce ... จากนั้นสำหรับโค้ดคุณต้องเขียนคอมโพเนนต์ Visualforce ที่สตรีมข้อมูลรายงานไปยังเทมเพลตอีเมล Visualforce เป็นไฟล์แนบและคุณเขียน APEX แบบไม่ระบุชื่อ การอัปเดตฟิลด์กำหนดเวลาโค้ดของออบเจ็กต์ที่กำหนดเอง ... สำหรับนักพัฒนา SFDC นี่เป็นงานประจำวัน ... พยายามรวบรวมเทคโนโลยีที่แตกต่างกันประมาณห้าอย่างเข้าด้วยกันเพื่อทำงานที่ดูเหมือนง่ายมาก .... และสิ่งนี้อาจทำให้เกิดอาการปวดหัวในการจัดการ และความตึงเครียดด้วย - โดยทั่วไปแล้วคุณจะพบสิ่งนี้หลังจากได้รับคำแนะนำให้ทำสิ่งที่ไม่ไม่ทำงานในชุมชนผู้ใช้ (เหมือนที่ใครบางคนพูดไปแล้ว) จากนั้นลองทำหลาย ๆ อย่างหลังจากที่คุณพัฒนาแล้วคุณจะพบว่าพวกเขาไม่ได้ผลด้วยเหตุผลที่แปลกประหลาดบางอย่างเช่น "คุณไม่สามารถกำหนดเวลา หน้า VisualForce "หรือ" คุณไม่สามารถเรียก getContent จากบริบทที่กำหนดตารางเวลาได้ "หรือเหตุผลลึกลับอื่น ๆ

มี Gotcha ตัวน้อยที่น่าขบขันมากมายบนแพลตฟอร์ม SFDC ที่เมื่อคุณรู้ว่าทำไมพวกเขาถึงอยู่ที่นั่นมันก็สมเหตุสมผล ... แต่ก็ยังมีข้อ จำกัด ที่ไม่ดีมากที่ทำให้คุณไม่สามารถทำในสิ่งที่คุณต้องทำ นี่คือบางส่วนของฉัน

  1. คุณไม่สามารถรับข้อมูลเจ้าของเรกคอร์ดแบบ "นอกกรอบ" ในเรกคอร์ดประเภทใดก็ได้ - คุณต้องเขียนทริกเกอร์ที่เชื่อมโยงเจ้าของที่สร้างเรกคอร์ดกับเรกคอร์ดที่คุณกำลังแทรก ทำไม? คำตอบสั้น ๆ เพราะเจ้าของอาจเป็นได้ทั้ง "บุคคล" หรือ "คิว" และทั้งสองเป็นเอนทิตีที่แตกต่างกันอย่างมาก ... เข้าท่า แต่สามารถพลิกโครงการกลับหัวได้อย่างแท้จริง

  2. รูปแบบการรักษาความปลอดภัยที่ทำให้บ้าคลั่ง ตัวอย่าง: สิทธิ์ "จัดการรายงานสาธารณะ" แตกต่างจาก "สร้างและปรับแต่งรายงาน" อย่างมากและโดยพื้นฐานแล้วจะมีผลกับทุกอย่างบนแพลตฟอร์ม ... โดยเฉพาะโฟลเดอร์ทุกประเภท

  3. ดังที่ได้กล่าวไปแล้วการสนับสนุนนั้นไม่มีอยู่จริง หากคุณเป็นคนที่พึ่งพาตัวเองได้มากหรือมีทรัพยากร SFDC จำนวนมากหรือมีเวลามากและ / หรือผู้จัดการที่ให้อภัยมากหรือรับผิดชอบระบบ SFDC ที่ทำงานได้ดีคุณก็ทำได้ดีทีเดียว รูปร่าง. หากคุณไม่ได้อยู่ในตำแหน่งใด ๆ เหล่านี้คุณจะพบว่าตัวเองมีปัญหาอย่างหนัก

SFDC เป็นแนวคิดทางธุรกิจที่เย้ายวนใจมาก ... ไม่มีรอยเท้าของอุปกรณ์ความปลอดภัยที่ดีงามราคาคงที่ไม่มีโครงสร้างพื้นฐานและคุณจะได้รับ CRM บนเว็บที่มีแบตช์และการประมวลผลตามกำหนดเวลา ... แต่อย่างที่ผู้โพสต์คนอื่น ๆ กล่าวไว้มันเป็นเช่นนั้นจริงๆ ค่อนข้างเป็นเรื่องยากในการเรียนรู้การพัฒนาและถ้าคุณไปปรึกษาฉันคิดว่าราคาต่ำสุดที่ฉันเคยเห็นคือ $ 200 / ชั่วโมง

Salesforce มีแนวโน้มที่จะผสานรวมกับสิ่งอื่น ๆ เป็นเวลาหลายปีหลังจากที่เทคโนโลยีบางอย่างกลายเป็นสิ่งที่พบเห็นได้ทั่วไป - JSON และ jquery เป็นสิ่งที่ต้องคำนึงถึง ... และหากคุณมีโครงสร้างพื้นฐานทั่วไปอื่น ๆ ที่คุณต้องการรวมเข้าด้วยกันเช่น JIRA คาดว่าจะต้องจ่ายเพิ่มมาก และพวกมันก็เป็นรถบักกี้

และในฐานะหนึ่งในผู้โพสต์อื่น ๆ ที่กล่าวถึงคุณกำลังต่อสู้กับขีด จำกัด ของผู้ว่าการรัฐที่สามารถผลักดันคุณได้อย่างต่อเนื่อง ... ไฟล์แนบต้องไม่> 5MB ระยะเวลา และบางครั้ง <3MB (ถ้าเข้ารหัส base64) คำบรรยายภาพ HTTP สิบรายการในชั้นเรียน ระยะเวลา มีข้อ จำกัด ของผู้ว่าการที่ตีพิมพ์ออกมาหลายสิบข้อและอีกมากมายที่คุณจะพบไม่ต้องสงสัยและแค่อยากจะวิ่งออกจากสำนักงานของคุณกรีดร้อง

ฉันชอบแพลตฟอร์มจริงๆ แต่เชื่อฉันสิ - อาจเป็นผู้หญิงที่โหดร้ายจริงๆก็ได้

แต่ในความเป็นธรรมกับ SFDC ฉันจะพูดอย่างนี้: ปัญหาใหญ่ที่สุดที่ฉันพบกับแพลตฟอร์มไม่ใช่ตัวแพลตฟอร์ม แต่เป็นความคาดหวังที่สูงส่งที่เกือบทุกคนที่เห็นแพลตฟอร์ม แต่ไม่ได้พัฒนาบนแพลตฟอร์มนั้นมี .... และคนเหล่านั้นมักจะอยู่ในตำแหน่งที่มีอำนาจมากในองค์กรธุรกิจ การตลาดการขายการจัดการ ฯลฯ การตัดการเชื่อมต่อครั้งใหญ่เกิดขึ้นและเกิดขึ้นอย่างรวดเร็วหรือถูกคุกคามทุกวันทั้งหมดนี้เป็นเพราะมีแพลตฟอร์มที่ยอดเยี่ยมนี้พร้อมกับ gotcha แปลก ๆ และผู้คนหลายพันคนที่ดิ้นรนทุกวันเพื่อทำความเข้าใจว่าทำไมสิ่งต่างๆจึงควรได้ผลเมื่อ พวกเขาไม่ทำและไม่ทำ

แก้ไข:
เพียงเพื่อเพิ่มความคิดเห็นของ lomaxx เกี่ยวกับ MVC; ในคำศัพท์ SFDC สิ่งนี้มีความเกี่ยวข้องอย่างใกล้ชิดกับสิ่งที่เรียกว่า "viewstate" - และอาจเป็นเรื่องที่ผิดพลาดได้โดยที่สิ่งที่อยู่ในหน้า VF ไม่ใช่สิ่งที่อยู่ในคลาสคอนโทรลเลอร์สำหรับเพจ ดังนั้นคุณต้องผ่านการหมุนแบบแปลก ๆ เพื่อซิงค์สิ่งที่อยู่บนหน้ากับสิ่งที่คอนโทรลเลอร์จะเขียนไปยัง SF เมื่อคุณคลิกปุ่ม "บันทึก" (หรือสร้างคำบรรยายภาพ HTTP หรืออะไรก็ตาม) .... ผู้ชายมันน่ารำคาญ .


+1 สำหรับการกล่าวถึงการควบคุมเวอร์ชัน
lindon fox

7

ฉันคิดว่าคนอื่น ๆ ได้กล่าวถึงข้อเสียในเชิงลึกมากกว่า แต่สำหรับฉันแล้วดูเหมือนว่าจะไม่ใช้กระบวนทัศน์ MVC หรือสนับสนุนมากนักในการใช้โค้ดซ้ำเลย การทำอะไรที่นอกเหนือไปจากแอปพลิเคชันง่ายๆคือการออกกำลังกายด้วยความไม่พอใจเมื่อเทียบกับการพัฒนาแอปพลิเคชันโดยใช้ ASP.Net MVC

นอกจากนี้เครื่องมือชั้นข้อมูลและความยุ่งยากในการพยายาม refactor รหัสหรือเปลี่ยนชื่อฟิลด์ในระหว่างกระบวนการพัฒนาไม่ได้ช่วยอะไร

ฉันคิดว่าในฐานะ CMS มันค่อนข้างเจ๋ง แต่ในฐานะแพลตฟอร์มสำหรับแอปพลิเคชันที่ไม่ใช่ CMS มันไม่สมเหตุสมผลสำหรับฉัน


6

รูปแบบการรักษาความปลอดภัยยังมีข้อ จำกัด มาก ... แต่นี่ไม่ใช่ส่วนที่แย่ที่สุด ขณะนี้คุณไม่สามารถยืนยันได้ว่าผู้ใช้สามารถดำเนินการบางอย่างได้หรือไม่

คุณตรวจสอบได้ว่าบทบาทของพวกเขาคืออะไร แต่ไม่สามารถตรวจสอบได้ว่าบทบาทนั้นมีสิทธิ์ดำเนินการในปัจจุบันหรือไม่

ที่แย่ไปกว่านั้นคือการตอบสนองจากฝ่ายสนับสนุนด้านเทคนิคว่า "ลองดำเนินการและหากมีข้อยกเว้นให้จับ"


6

การพิจารณา Force.com เป็นแพลตฟอร์ม "คลาวด์" ความสามารถในการทำหน้าที่เป็นไคลเอนต์สำหรับบริการที่กำหนดโดย WSDL ภายนอกนั้นค่อนข้างท่วมท้น ดูhttp://force201.wordpress.com/2010/05/20/when-generate-from-wsdl-fails-hand-coding-web-service-calls/สำหรับสิ่งที่คุณอาจต้องทำ


3

ทั้งหมดข้างต้นฉันอยากรู้ว่าการเปิดตัว VMforce ทำให้โปรแกรมเมอร์ Java เขียนโค้ดสำหรับ Force.com เปลี่ยนข้อเสียข้างต้นได้อย่างไร?

http://www.zdnet.com/blog/saas/vmforcecom-redefines-the-paas-landscape/1071


มันจะบรรเทาปัญหาบางอย่างได้ แต่คุณจะยังคงผูกพันกับฐานข้อมูล Force.com ซึ่งแย่มากและคุณจะไม่ได้รับการควบคุมที่แท้จริงในการปรับใช้ของคุณ ยังคงเป็นวันแรก ๆ และสิ่งนี้อาจเปลี่ยนแปลงไปในอนาคต แต่ตอนนี้ดูเหมือนจะไม่ใช่ทางเลือกที่น่าสนใจเกินไป
lomaxx

VMForce ตายแล้ว: siliconangle.com/blog/2011/09/01/…
Haris Osmanagić

3

ฉันเดาว่าพวกเขากำลังพยายามแก้ไขปัญหาเหล่านี้ ที่ Dreamforce พวกเขากล่าวว่าพวกเขากำลังพยายามลดขีด จำกัด Governor ให้เหลือเพียง 4 เท่านั้นฉันไม่แน่ใจว่ารายละเอียดเป็นอย่างไร พวกเขามี REST API สำหรับทดลองใช้ก่อนเปิดตัวและซื้อ heroku ซึ่งเป็นการพัฒนาทับทิมในระบบคลาวด์ พวกเขาแยกฐานข้อมูลออกด้วย database.com เพื่อให้คุณสามารถพัฒนาเว็บทั้งหมดและเรียกฐานข้อมูลโดยใช้ database.com

ฉันเดาว่าพวกเขาพยายามทำให้ไม่เชื่อเรื่องพระเจ้าให้มากที่สุด แต่ในตอนนี้สิ่งเหล่านี้เป็นการประกาศและการทดลองใช้ก่อนเปิดตัวดังนั้นเช่นเดียวกับงบ Safe Harbor ของพวกเขาไม่ได้ซื้อในสิ่งที่พวกเขาพูด แต่เฉพาะในสิ่งที่พวกเขามีอยู่ในปัจจุบัน


7 ปีและพวกเขาไม่ได้พูดถึงสิ่งเดียวในรายการด้านบน
el n00b
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.